Запуск программ с графическим интерфейсом из фонового сервиса в Linux
Я написал Java-программу для запуска различных программ в Linux с подключенным API. Я хочу, чтобы эта Java-программа запускалась в фоновом режиме как мой пользователь и запускалась автоматически при загрузке системы. Я попытался запустить файл JAR из службы systemd, но при попытке запуска приложений с графическим интерфейсом не удается.
Я понимаю, что для запуска приложения с графическим интерфейсом необходимо установить две переменные среды: DISPLAY и XAUTHORITY
Я попытался установить их в служебном файле systemd, но процесс Java по-прежнему не может запустить любую программу с графическим интерфейсом. Нет проблем при запуске приложений с графическим интерфейсом при запуске файла JAR из терминала.
Можно ли решить эту проблему с помощью systemd или любого другого фонового демона?
Вот как выглядит мой сервисный файл:
[Unit]
Description=Application API
After=network.target
[Service]
User=me
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/me/.Xauthority
ExecStart=/usr/bin/java -jar /usr/local/bin/windows-application-launcher.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Обновление: запуск только после входа в среду рабочего стола.
1 ответ
Начните свой процесс как часть потока входа в систему.
- Чтобы добавить его для всех пользователей: добавьте для него файл.desktop в
/etc/xdg/autostart
(полная спецификация здесь). - Чтобы добавить его только для себя, добавьте.desktop в
~/.config/autostart/
, В вашем менеджере рабочего стола, вероятно, есть диалоговое окно настроек, чтобы сделать это для вас в KDE5 (Настройки системы)Settings>Workspace>Startup and shutdown>Autostart