答案1
要显示类似 Gnome 3 中的音量通知,您可以使用gdbus
(dbus-send
不起作用,因为它无法传递类型的函数参数a{sv}
(字典数组{字符串:变量}))
gdbus
音量通知如下所示:
gdbus call --session --dest 'org.gnome.Shell' --object-path '/org/gnome/Shell' --method 'org.gnome.Shell.ShowOSD' "{'icon': <'audio-volume-high-symbolic'>, 'label': <'Line-Out'>, 'level': <90>}"
因此,对于像通知上的 Numlock 这样的功能,您可以使用:
gdbus call --session --dest 'org.gnome.Shell' --object-path '/org/gnome/Shell' --method 'org.gnome.Shell.ShowOSD' "{'icon': <'input-dialpad-symbolic'>, 'label': <'Numlock On'>}"
图标名称是正在使用的图标主题中的图标文件的名称(不带扩展名)。图标主题位于 或 中/usr/share/icons/
。~/.icons/
因此,对于 ,/usr/share/icons/Adwaita/scalable/devices/input-dialpad-symbolic.svg
您可以使用'input-dialpad-symbolic'
。您还可以通过其完整路径指定图标,例如,'/home/user/.icons/Icon-Theme-Name/devices/symbolic/input-dialpad-symbolic.svg'
如果它不在正在使用的图标主题中。
我发现这个问题的方法是使用 查看 dbus 调用dbus-monitor
。当我降低音量时,它打印了以下内容:
method call time=1563905341.664155 sender=:1.34 -> destination=:1.8 serial=149 path=/org/gnome/Shell; interface=org.gnome.Shell; member=ShowOSD
array [
dict entry(
string "icon"
variant string "audio-volume-high-symbolic"
)
dict entry(
string "label"
variant string "Line Out"
)
dict entry(
string "level"
variant int32 94
)
]
destination=:1.8
似乎与org.gnome.Shell
两者都一样,--dest ':1.8'
并且--dest 'org.gnome.Shell'
有效。