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