Рейтинг:0

Запуск службы Systemd после диспетчера отображения

флаг cn

У меня есть скрипт, который изменяет некоторые настройки Gnome, которые я хочу запускать при запуске.Сам скрипт работает нормально, когда я запускаю его вручную, но я получаю следующую ошибку, когда запускаю его как службу systemd:

startup-user.service — Служба запуска
     Загружено: загружено (/etc/systemd/system/startup-user.service; включено; предустановка поставщика: включена)
     Активно: сбой (результат: код выхода) с субботы 05 февраля 2022 г., 13:03:48 UTC; 21с назад
    Процесс: 1948 ExecStart=/data/startup-user.sh (code=exited, status=1/FAILURE)
   Основной PID: 1948 (код=выход, статус=1/НЕИСПРАВНОСТЬ)
        ЦП: 22 мс

05 февраля, 13:03:48 debian systemd[1]: запущена служба запуска.
05 февраля, 13:03:48 debian gsettings[1950]: не удалось зафиксировать изменения в dconf: невозможно автоматически запустить D-Bus без X11 $DISPLAY
05 февраля, 13:03:48 debian gsettings[1953]: не удалось зафиксировать изменения в dconf: невозможно автоматически запустить D-Bus без X11 $DISPLAY
05 февраля, 13:03:48 debian gsettings[1956]: не удалось зафиксировать изменения в dconf: невозможно автоматически запустить D-Bus без X11 $DISPLAY
05 февраля 13:03:48 debian startup-user.sh[1959]: ошибка подключения: не удается автоматически запустить D-Bus без X11 $DISPLAY
05 февраля 13:03:48 debian systemd[1]: startup-user.service: основной процесс завершен, код=выход, статус=1/FAILURE
05 февраля, 13:03:48 debian systemd[1]: startup-user.service: Ошибка с результатом «код выхода».

Вот файл скрипта:

#!/бин/баш

gsettings установить org.gnome.desktop.peripherals.touchpad natural-scroll false
gsettings установить org.gnome.desktop.peripherals.touchpad касанием и щелчком true
gsettings установить org.gnome.settings-daemon.plugins.power с поддержкой окружающей среды false
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.freedesktop.DBus.Properties.Set org.gnome.SettingsDaemon.Power.Screen Brightness '<int32 100>'

А вот и файл сервисного юнита:

[Ед. изм]
Описание=Служба запуска
После=graphical.target

[Оказание услуг]
Тип=простой
ExecStart=/data/startup-user.sh
Пользователь=пользователь

[Установить]
WantedBy=graphical.target

Это первый раз, когда я работал с системными службами, и я мало знаю о диспетчерах дисплеев или о чем-либо еще, но я предполагаю, что если моя служба запускается после графический.таргет, затем следует запустить диспетчер отображения и установить все необходимые переменные. я тоже пробовал После=gdm.service, и я не уверен, должен ли я иметь графический.таргет для обоих После= и WantedBy=, но если я удалю его из WantedBy= то служба вообще не работает.

Если вам интересно и/или это имеет значение, это для живой системы, с которой я строю Дебиан в прямом эфире. Вместо того, чтобы использовать постоянный раздел, я хочу запускать этот скрипт каждый раз при загрузке, чтобы он мог выполнить некоторую базовую настройку. Файл сценария находится в отдельном разделе ext4, смонтированном по адресу /данные, поэтому я могу изменить файл сценария, когда захочу изменить настройки.

Что я делаю не так? Спасибо!

Рейтинг:1
флаг fr

Проблема здесь не только в том, "до/после", но и в том, что не все состояния являются глобальными. Тот факт, что X11 уже запущен, не означает, что все процессы автоматически получают информацию о том, какой $DISPLAY использовать, и то же самое относится к адресу сеансового сокета D-Bus. (Особенно не тогда, когда вы помните, что может быть несколько сеансы, каждый из которых имеет другое значение $DISPLAY.) Вместо этого это ограничивается деревом процессов, начиная с самого диспетчера отображения и его дочерних элементов.

(Системные службы в общем не предназначены для ковыряния в пользовательских сессиях.)

Компоненты сеанса должны запускаться самим сеансом — либо через автозапуск XDG (используя файлы .desktop в ~/.config/автозапуск/ и соответствующее расположение /etc/xdg) или через systemd пользователь Сервисы (~/.config/системд/пользователь) или через скрипт Xsession, если используется X11 (~/.xprofile, ~/.xсессия).Таким образом, они всегда запускаются в нужное время и всегда наследуют правильную среду.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.