Для запуска графического приложения через 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)