Это должно быть выполнено как корень для работы правильно. Я попробовал:
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.
Решение вдохновлено путем Запуска Rhythmbox через crontab. Это
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
скрыть открывающееся окно терминала.
Причина состояла в том, что "корень в терминале" и "корень в rc.local и crontab" имеют различные переменные среды. Это интересно, если я также установил, скажем, DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wpHtRgNiWP
, взятый от пользователя, затем это не работает.