Приложению нужны две вещи, чтобы открыть окно на дисплее X. Это должно знать местоположение показа X; это передается DISPLAYпеременной окружения. Также необходимо пройти аутентификацию на X-сервере. Это передается через cookie-файл, который является секретным значением, генерируемым X-сервером, когда он запускается, и сохраняется в файле, к которому имеет доступ только пользователь, запустивший X-сервер. Файл cookie по умолчанию ~/.Xauthority.
В качестве альтернативы, запуск программы от имени пользователя, который запускает X-сервер, будет работать при условии, что файл cookie находится в расположении по умолчанию (если нет, вам придется найти файл cookie, как в корневом случае). Добавьте Userдирективу (например User=dogs).
Конечно, служба не будет работать, если не отображается X с тем номером, который принадлежит указанному вами пользователю.
Довольно странно запускать программу с графическим интерфейсом из Systemd. Это не было предназначено для этого. Программы с графическим интерфейсом живут в сеансе X, запущенном пользователем. Systemd для системных процессов. Вместо этого вы должны поэкспериментировать с демонами.
systemctl --user
. ТакжеDISPLAY
переменная не имеет значения тогда. Посмотрите здесь .Вы можете добавить в
.xinitrc
:Меня устраивает!
источник