Вот то, что я только что создал как обходной путь для еще не доступных graphical-session.target
(В моей системе Kubuntu 16.04):
- Создайте псевдосистемный пользовательский модуль, который поднимает и опускает графическую цель.
Создать ~/.config/systemd/user/xsession.target
со следующим содержанием:
[Единица измерения]
Описание = Xsession запущен и работает
BindsTo = graphical-session.target
Расскажите systemd об этом новом модуле:
$> systemctl --user daemon-reload
- Создайте сценарии автозапуска и завершения работы, которые управляют с
xsession.target
помощью доступной в настоящее время механики рабочего стола Ubuntu 16.04.
Создать ~/.config/autostart-scripts/xsession.target-login.sh
со следующим содержанием:
#! / Bin / Баш
если ! systemctl --user is-active xsession.target &> / dev / null
тогда
/ bin / systemctl - пользовательская среда импорта DISPLAY XAUTHORITY
/ bin / systemctl --user start xsession.target
фи
Создать ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
со следующим содержанием:
#! / Bin / Баш
если systemctl --user is-active xsession.target &> / dev / null
тогда
/ bin / systemctl --user stop xsession.target
фи
Сделайте скрипты исполняемыми:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / shutdown / xsession.target-logout.sh
Примечание: эти два файла размещены там, где KDE подберет их для автоматического запуска и завершения работы. Файлы могут быть размещены где-то еще для других сред рабочего стола (например, Gnome) - но я не знаю об этих средах.
Примечание. В этом обходном пути отсутствует поддержка нескольких рабочих столов. Он graphical-session.target
корректно обрабатывает только то время, пока на машине запущен только один активный сеанс X11 (но это относится к большинству из нас, пользователей Linux).
- Создайте свои собственные пользовательские модули systemd, от которых они зависят,
graphical-session.target
и обеспечьте их бесперебойную работу при входе в систему на рабочем столе.
Например, модуль @ mkaito должен выглядеть так:
[Единица измерения]
Описание = RedShift
PartOf = graphical-session.target
[Обслуживание]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0,80: 0,91 -m randr
Restart = всегда
(Не забудьте сделать daemon-reload
после редактирования ваших единиц!)
- Перезагрузите компьютер, войдите в систему и убедитесь, что ваши устройства запущены, как и ожидалось
$> systemctl - пользовательский статус graphical-session.target
● graphical-session.target - текущий графический пользовательский сеанс
Загружен: загружен (/usr/lib/systemd/user/graphical-session.target; статический; предустановка поставщика: включена)
Активен: активен с Дона 2017-01-05 15:08:42 CET; 47 мин. Назад
Документы: man: systemd.special (7)
$> systemctl - статус пользователя your-unit ...
В какой-то будущий день (это будет Ubuntu 17.04?) Мой обходной путь устареет, поскольку система graphical-session.target
сама справится с этим правильно. В этот день просто удалите скрипт автозапуска и завершения работы, а также xsession.target
- ваши пользовательские пользовательские блоки могут остаться нетронутыми и просто работать.