суббота, 7 сентября 2024 г.

Запуск графических приложений, используя systemd

 Для запуска графического приложения через systemd используем .service

Пример запуска экранной клавиатуры сервисом при старте устройства от пользователя (ubuntu в примере) после старта графической оболочки. 

onboard.service

--------------------------------------------------------------------------------------------------------------------------

[Unit]

Description=Start onboard

PartOf=graphical.target

After=graphical.target


[Service]

Type=Application

Environment="DISPLAY=:0"

Environment="XAUTHORITY=/home/ubuntu/.Xauthority"

ExecStartPre=+sh -c 'touch /var/run/onboard.pid'

ExecStart=/usr/bin/onboard

ExecStartPost=+sh -c 'pgrep onboard > /var/run/onboard.pid'

SyslogIdentifier=onboard

Restart=always

PIDFile=/var/run/onboard.pid

OOMScoreAdjust=-100

User=ubuntu

Group=ubuntu


[Install]

WantedBy=graphical.target

--------------------------------------------------------------------------------------------------------------------------


Номер дисплея можно посмотреть командами

ls /tmp/.X11-unix

ls /tmp/.X11-unix | tr 'X' ':'

ps e | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u (непосредственно пользователем)

ps e -u ubuntu | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u (указав пользователя ubuntu)