Я написал 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 ответ1

1

Начните свой процесс как часть потока входа в систему.

  • Чтобы добавить его для всех пользователей: добавьте для него файл .desktop в /etc/xdg/autostart (полная спецификация здесь).
  • Чтобы добавить его только для себя, добавьте .desktop в ~/.config/autostart/ . Скорее всего, у вашего менеджера рабочего стола есть диалоговое окно настроек - в KDE5 (Настройки системы): Settings>Workspace>Startup and shutdown>Autostart

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .