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