我正在尝试在系统进入运行级别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脚本中运行的任何命令和权限。
答案 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中定义任何您想要的内容