如何在Linux中自动启动需要X的应用程序

我试图在系统进入运行级别5时自动启动X应用程序。

什么是正确的方法来做到这一点?

我写了一个脚本,并把它放在/etc/init.d/

我已经运行了相应的chkconfig命令来设置/etc/rcX.d目录中的符号链接。

一切正常,除了脚本无法启动X应用程序时,我运行:

/sbin/service scriptName start 

这条线看起来像这样(为了争辩,我已经在xclock切换):

 'start') xclock 

我得到以下错误:

 Error: Can't open display: 

经过一番研究,似乎/ sbin / service从一个典型的shell中删除了大部分的环境variables。 通过添加DISPLAY:

 'start') DISPLAY=:0 export DISPLAY xclock 

我得到:

 Error: Can't open display: :0 

我修改了我的脚本,包括:

 'start') DISPLAY=:0 export DISPLAY XAUTHORITY=/root/.xauth2w90ge export XAUTHORITY xclock 

现在,它的工作原理 – 但是这显然是一个黑客,因为.xauth2w90ge文件生成,并不会从实例到实例相同。

那么是否有适当的方法来做到这一点,或者我吠叫错了树? 我的要求是让这个应用程序自动启动机器,我受到任何命令和权限的限制,我可以在RPM安装脚本中运行。

Solutions Collecting From Web of "如何在Linux中自动启动需要X的应用程序"

而不是定义一个init脚本,你应该让X(或你的窗口管理器)自动启动这个过程。 X,KDE和Gnome都有自动启动的方法(即〜/ .kde4 / Autostart)。

如果这只是X,那就去修改你的/ etc / X11 / xinit / xinitrc文件(或者等价的),让它运行你的命令。 我在文件底部看起来像这样:

 if [ -n "$failsafe" ]; then twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login else exec $command fi 

所以你可以改变它来运行你想要的任何命令。

 echo @python /home/pi/boot/run.py >> ~/.config/lxsession/LXDE-pi/autostart 

这个命令运行run.py python文件。 你可以在run.py中定义任何你想要的