0%

DBus和freedesktop

简介

DBus:一个消息总线服务,在Linux桌面环境下应用广泛。Gnome和KDE的许多组件都使用了DBus。

freedesktop:制定了许多桌面环境下的设计规范,各个Linux桌面都或多或少实现了其中的一些规范,很多应用也依照规范提供的接口进行设计。

参考资料

https://unix.stackexchange.com/questions/46301/a-list-of-available-d-bus-services
https://www.freedesktop.org/wiki/Software/dbus/
https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/
https://www.freedesktop.org/wiki/Specifications/file-manager-interface/

DBus命令行测试工具

dbus-monitor 可以监测消息

dbus-send 可以发送消息

列出DBus已知的服务

1
dbus-send --print-reply --dest=org.freedesktop.DBus  /org/freedesktop/DBus org.freedesktop.DBus.ListNames

结果如下,可以看到其中有几个org.freedesktop系列的服务,包括org.freedesktop.secrets,VSCode应该就是通过这个服务存储密钥的,根据我的配置,应该是由Gnome Keyring实际提供了这个服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
method return time=1609574874.565918 sender=org.freedesktop.DBus -> destination=:1.236 serial=3 reply_serial=2
array [
string "org.freedesktop.DBus"
string ":1.7"
string ":1.93"
string "org.freedesktop.network-manager-applet"
string "org.freedesktop.portal.IBus"
string ":1.8"
string ":1.9"
string "org.xfce.Thunar"
string ":1.95"
string "org.a11y.Bus"
string "org.freedesktop.systemd1"
string ":1.20"
string ":1.21"
string ":1.10"
string "org.xfce.Xfconf"
string ":1.22"
string "org.gnome.keyring"
string ":1.11"
string ":1.23"
string "org.freedesktop.FileManager1"
string ":1.12"
string ":1.13"
string ":1.0"
string "org.gtk.vfs.Daemon"
string ":1.14"
string "org.freedesktop.secrets"
string ":1.15"
string ":1.2"
string ":1.113"
string ":1.16"
string ":1.3"
string "org.lxde.lxpolkit"
string ":1.17"
string "org.xfce.FileManager"
string "org.freedesktop.IBus.Panel.Extension.Gtk3"
string ":1.4"
string ":1.236"
string ":1.115"
string ":1.104"
string "ca.desrt.dconf"
string ":1.18"
string ":1.5"
string ":1.105"
string "org.freedesktop.IBus"
string ":1.6"
]

列出文件夹中的文件

执行下面的命令,然后默认的文件管理器就会打开Pictures文件夹了

1
dbus-send --print-reply --dest=org.freedesktop.FileManager1 /org/freedesktop/FileManager1 org.freedesktop.FileManager1.ShowFolders array:string:"file:///home/lpy/Pictures" string:3

使用DBus的应用

https://www.freedesktop.org/wiki/Software/dbus/
https://www.freedesktop.org/wiki/Specifications/desktop-config-spec/
https://www.freedesktop.org/wiki/Specifications/file-manager-interface/

GNOME Keyring

VSCode