它需要以 root 身份运行才能正常工作。我尝试过:
DISPLAY=:0 /usr/bin/gtk-launch myapp
DISPLAY=:0 /usr/bin/python /my/application/gui.py
第二行基本上就是 myapp.desktop 里面的内容。这两行在终端 (ctr+alt+t) 和模拟控制台 (ctrl+alt+F1) 中都有效,但在 rc.local 和 crontab 中无效。后者可能吗?如果不可能,那为什么?
更新:我相信将一个类似于 crontab 的脚本放入 /etc/xdg/autostart/mycrontab.desktop 是一种解决方法。但是,我很好奇如何使用 crontab 和 rc.local 来实现这一点。
答案1
该解决方案的灵感来自于通过 crontab 启动 Rhythmbox。 这
XAUTHORITY=/home/name/.Xauthority DISPLAY=:0 /usr/bin/gtk-launch myapp
或这个
XAUTHORITY=/home/name/.Xauthority DISPLAY=:0 gtk-launch myapp
/usr/share/applications/myapp.desktop
可以。然后你还需要包含以下命令的文件:
sudo -b /usr/bin/python /my/application/gui.py
我用来sudo -b
隐藏弹出的终端窗口。
原因是“终端中的 root”和“rc.local 和 crontab 中的 root”具有不同的环境变量。有趣的是,如果我还设置了DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wpHtRgNiWP
从用户那里获取的,那么它不起作用。