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

时间:2011-03-30 18:57:33

标签: linux startup

我正在尝试在系统进入运行级别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中删除了大部分环境变量。添加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 postinstall脚本中运行的任何命令和权限。

2 个答案:

答案 0 :(得分:4)

您应该让X(或您的窗口管理器)自动启动进程,而不是定义init脚本。 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

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

答案 1 :(得分:1)

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

此命令运行run.py python文件。您可以在run.py中定义任何您想要的内容