我有一个
/etc/init.d/foo
脚本,它在系统启动时启动并永远侦听某些感兴趣的事件。这些事件通常会在用户登录后发生,因此与登录事件本身没有任何联系。
每当
foo
检测到特定事件时,它需要启动第3方GUI应用程序,然后像以前一样继续侦听其他事件。
我发现我可以从
foo
启动非 GUI 脚本,但不能启动 GUI 应用程序。 (我有点知道我会在这里遇到障碍。)
问题: 在 Linux 中通常如何完成此任务?也就是说,从后台运行的某种守护进程启动程序进程在前台启动 GUI 应用程序。
注意:我没有这个第 3 方 GUI 应用程序的源代码。因此,任何解决方案都必须完全从外部运作。
正确的方法是在 X 会话(GUI 登录)中启动一个应用程序来侦听新事件。如果您必须将事件侦听与 X 会话解耦,则需要推迟。这意味着您有两个应用程序,一个用于侦听事件,另一个仅等待 GUI 应用程序的触发。侦听事件的应用程序然后触发在 X 中运行的应用程序。
那么如何做到这一点?
根据您的 X 会话,有几种“自动启动”方法,例如用户登录后启动的应用程序。这些应用程序将具有 X 上下文,例如连接到 X 服务器时没有安全障碍(它们需要作为 GUI 应用程序运行)。
这里的“应用程序”也可以是一个持续运行的简单脚本。您不需要为此启动编译器。例如。 Perl 可能是一个很好的语言。
当事件发生时,侦听事件的应用程序可以写入 /tmp/ 中的命名套接字。
X 会话中的脚本/应用程序可以从该命名套接字读取数据,并在出现新消息时启动 GUI 应用程序。
最终这根本不需要太多工作,但您可能需要阅读一些内容或在网络上搜索此类解决方案。
非常感谢您的指导!我将使用 python3 来执行此操作。这就是为什么我遇到这么多问题的原因; (到目前为止我已经尝试了 7 个向量)。干杯!