ошибка при запуске приложения с графическим интерфейсом в службах systemd

#shell #gtk3 #systemd #xserver #gdk

Вопрос:

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

это мои файлы.

oversteer.sh файл:

 #!/bin/bash

sleep 1s

export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"

sudo oversteer --autocenter 45 amp;
sudo oversteer --range 720
 

файл oversteer.service:

 [Unit]
Description = oversteer
After=local-fs.target

[Service]
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/home/ubuntu/g29_steering_wheel/autostart_scripts/oversteer.sh
Restart=on-failure
Type=simple
StandardOutput=journal console

[Install]
WantedBy=multi-user.target
 

Я поместил этот файл в /etc/systemd/system и предоставил исполняемые файлы, а также права root. Однако, похоже, что эта служба не работает из-за отсутствия дисплея.

ошибка заключается в следующем:

 Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused

(oversteer:8052): Gdk-CRITICAL **: 08:00:50.744: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(oversteer:8053): Gdk-CRITICAL **: 08:00:50.763: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_gtk3.py", line 45, in <module>
    cursors.MOVE          : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
TypeError: constructor returned NULL
 

Я работаю на raspi 4 с ubuntu 20.04. Превышение скорости-это пакет для управления параметрами моего джойстика.

Комментарии:

1. У вас есть и DISPLAY=:99.0 то, и другое, и DISPLAY=:0 там. Что это такое? Кроме того, может быть wiki.debian.org/Xinitrc чтобы запустить сценарий после запуска оконной среды…

2. это все еще не работало, когда я удалил ДИСПЛЕЙ=:0