两个程序需要 d-bus 服务 - 我该如何同时运行它们?

两个程序需要 d-bus 服务 - 我该如何同时运行它们?

我有以下设置:

  • 对于我的屏幕保护程序,我使用了xscreensaver(因为它很漂亮)
  • 为了锁定我的屏幕,我使用了light-locker(因为这样更安全xscreensaver

最近xscreensaver开始绑定到org.freedesktop.ScreenSaverdbus上。因此,我无法再并行运行它们,因为我在另一个抱怨之后启动了它们a screensaver is already running

我读在 ArchWiki 中服务有一定的可能性override。但它很模糊,而且我对d-bus不熟悉。

有没有办法让两者并存而不篡改其中一个的源代码?

郑重声明:DBUS_SESSION_BUS_ADDRESS在启动以太屏幕保护程序之前取消设置环境变量不起作用。

编辑:据我在研究中看到的,似乎不可能阻止程序监听 d-bus 服务而不给该程序带来麻烦。如果有人可以向我证实这一点,那将是一个很好的答案。

答案1

答案中令人不快的部分是你可以尝试再次并行运行它们,但您很可能会遇到损坏的情况。 D-bus 作为总线工作,因此存在具有一定规则的消息发送者和接收者。对于屏幕保护程序,最可能的假定规则是屏幕保护程序只是系统上的一个,其他软件使用 D-bus 来发出是否要阻止调用屏幕保护程序或其他标准功能的信号。

也就是说,如果您想尝试牛仔方式并通过反复试验学习一些 D-Bus 基础知识,通常目录中/usr/share/dbus-1/services/有一堆文本文件,这些文本文件完全以 D-Bus 服务名称命名,并以.service名称结尾。在那里你可能还可以找到org.freedesktop.ScreenSaver.service文件。

请做好编辑可能会破坏系统的准备,因此您知道如何在系统损坏时恢复它。但这里有龙,您需要自行承担风险,并且很可能会破坏工作系统。

相关内容