Как запустить приложение с графическим интерфейсом с помощью сценария Upstart

У меня есть приложение Python GTK, которое мне нужно запустить, когда пользователь входит в систему. Я не могу выскочить, чтобы запустить любое приложение графического интерфейса, даже если x запущен.

Когда я вошел в X, и я генерирую событие из сценария upstart ниже

guitest

с initctl, я получаю

initctl: Event failed

Вот пример моего сценарий, за исключением того, что я заменил Gedit с моим приложением. Как я могу изменить этот скрипт, чтобы gedit или мое приложение python gtk запустились?

task

start on desktop-session-start  or guitest

script
    gedit
end script
4
задан 24 February 2012 в 08:51

3 ответа

Выскочка, прежде всего, для управления системными службами. Если Вы хотите запустить приложение как часть сеанса пользователя, существуют лучшие инструменты.

Через GUI

Можно настроить приложение запуска на сессии пользователя путем выбора Startup Applications... из меню шестеренки на верхнем правом из экрана, и затем выбирают Add и заполните детали для gedit.

Когда Вы регистрируетесь в следующий раз, когда приложение должно запуститься с сессии.

Вручную

Если Вы не можете использовать UI для конфигурирования этого, возможно настроить его путем отбрасывания a .desktop файл в одном из autostart каталоги согласно спецификации Автоматического запуска:

http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html

Если Вы хотите, чтобы это влияло на каждого пользователя в системе, поместило файл в /etc/xdg/autostart. Если Вы только хотите влиять на отдельного пользователя, поместить файл в ~/.config/autostart.

.desktop файл должен посмотреть что-то как:

[Desktop Entry]
Type=Application
Exec=/usr/bin/gedit
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=GEdit
Comment=

При размещении файла в корневой каталог пользователя удостоверьтесь, что Вы устанавливаете выполнение, обдумал файл. Это - часть мер безопасности для остановки программ, неумышленно пишущий работу .desktop файлы из-за ошибок.

7
ответ дан 24 February 2012 в 08:51

Я нашел обходной путь. Если кто-то еще знает «правильный путь», пожалуйста, дайте мне знать.

В сценарии upstart необходимо написать файл флага. Другой процесс, который запускается пользователем, будет постоянно искать этот файл флага, который будет создан. Сценарий upstart может оставить любую соответствующую информацию в файле флага. Конечно, обычный пользователь или root не имеет проблем с запуском графических приложений. Почему выскочка имеет проблему, остается неясным.

0
ответ дан 24 February 2012 в 08:51

Мне удалось заставить это работать с приложением QT, установив переменную окружения «USER» и переменную окружения «DISPLAY» в сценарии upstart.

# gui - auto launch daemon

description     "gui daemon"

start on desktop-session-start
stop on desktop-shutdown

env HOME=/home/user

script
    export DISPLAY=:0
    mygui
end script

Конечно, он ограничен данным пользователем, поэтому может не подходить для некоторых случаев, но в моем случае он отлично работает.

0
ответ дан 24 February 2012 в 08:51

Другие вопросы по тегам:

Похожие вопросы: