以下命令打开文件管理器来显示目录。
dbus-send --session --dest=org.freedesktop.FileManager1 --print-reply \
--type=method_call /org/freedesktop/FileManager1 \
org.freedesktop.FileManager1.ShowItems array:string:"file:///path/to/your/directory" string:""
问题是默认文件管理器似乎是随机的。我猜是上次更新的文件管理器,因为它在文件管理器更新后发生了变化。此外,当文件管理器已在运行时,它会使用该文件管理器。
不用让别人dbus-send
确定使用哪个文件管理器,如果我知道安装了哪些文件管理器,我可以设置一个特定的文件管理器,比如 Nemo 吗?
dbus-daemon 不正式支持使用相同总线名称设置多个可激活的 .services;它基本上随机选择一个,并且每次启动时都可能会发生变化。
实现此目的的一种方法是让文件管理器永久在后台运行(如果它具有这样的模式,例如 Nautilus 就有)。这就是
org.freedesktop.Notifications
桌面环境提供服务的方式——它们不依赖于自动启动(总线激活),而是在您登录后立即明确启动适当的通知守护程序。另一种方法是将总线消息发送到不同的
--dest=
。文件管理器通常不仅具有通用总线名称,而且还有自己的“品牌”总线名称,例如 Thunar 也可在 获得;您可以使用或org.xfce.Thunar
列出它们。busctl --user
d-spy/d-feet
当一个服务有多个名称时,您将 D-Bus 消息发送到哪个名称并不重要 - 它们都被解析为同一个总线地址(唯一名称) - 因此您可以指定
--dest=org.xfce.Thunar
而不更改命令的其余部分(即,具体来说,对象路径或接口名称没有任何变化)。第三种方法是设置您的包管理器,不安装您不希望通过总线激活的文件管理器的文件
.service
。检查 /usr/share/dbus-1/services 并删除您不需要的文件管理器。例如,在 Arch Linux 上,您可以使用
NoExtract=
/etc/pacman.conf;在 Debian 上,您可以使用dpkg-divert
不需要的文件。