Oto, co właśnie stworzyłem jako obejście niedostępnego graphical-session.target
(w moim systemie Kubuntu 16.04):
- Utwórz pseudo systemową jednostkę użytkownika, która podnosi i obniża wartość elementu graficznego.
Utwórz ~/.config/systemd/user/xsession.target
z następującą zawartością:
[Jednostka]
Opis = Xsession działa i działa
BindsTo = graphical-session.target
Poinformuj systemd o tym nowym urządzeniu:
$> systemctl --user daemon-reload
- Twórz skrypty autostartu i zamykania, które kontrolują za
xsession.target
pośrednictwem obecnie dostępnej mechaniki pulpitu Ubuntu 16.04.
Utwórz ~/.config/autostart-scripts/xsession.target-login.sh
z następującą zawartością:
#! / bin / bash
Jeśli ! systemctl --user is-active xsession.target &> / dev / null
następnie
/ bin / systemctl --user import-environment WYŚWIETL XAUTHORITY
/ bin / systemctl --user start xsession.target
fi
Utwórz ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
z następującą zawartością:
#! / bin / bash
jeśli systemctl --user jest aktywny xsession.target &> / dev / null
następnie
/ bin / systemctl --user stop xsession.target
fi
Spraw, by skrypty były wykonywalne:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plazma-workspace / shutdown / xsession.target-logout.sh
Uwaga: te dwa pliki są umieszczane tam, gdzie KDE je pobierze w celu automatycznego uruchomienia i zamknięcia. Pliki mogą być umieszczone gdzie indziej dla innych środowisk pulpitu (np. Gnome) - ale nie wiem o tych środowiskach.
Uwaga: w tym obejściu brakuje obsługi wielu sesji pulpitu. Obsługuje tylko graphical-session.target
poprawnie, o ile tylko jedna aktywna sesja X11 jest uruchomiona na komputerze (ale tak jest w przypadku większości użytkowników Linuksa).
- Twórz własne systemowe jednostki użytkownika, które zależą od
graphical-session.target
nich, i dbaj o to, aby działały bez zakłóceń podczas logowania na komputerze.
Jako przykład jednostka @ mkaito powinna wyglądać następująco:
[Jednostka]
Opis = Redshift
PartOf = graphical-session.target
[Usługa]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0,80: 0,91 -m randr
Uruchom ponownie = zawsze
(Nie zapomnij zrobić daemon-reload
po edycji jednostek!)
- Uruchom ponownie komputer, zaloguj się i sprawdź, czy Twoje jednostki są uruchomione zgodnie z oczekiwaniami
$> systemctl - status użytkownika graphic-session.target
● graphical-session.target - Bieżąca graficzna sesja użytkownika
Załadowano: załadowano (/usr/lib/systemd/user/graphical-session.target; statyczny; preset dostawcy: włączony)
Aktywny: aktywny od Don 2017-01-05 15:08:42 CET; 47min temu
Dokumenty: man: systemd.special (7)
$> systemctl - status użytkownika twoja jednostka ...
W przyszłości (czy będzie to Ubuntu 17.04?) Moje obejście stanie się przestarzałe, ponieważ system graphical-session.target
sam sobie poradzi . Tego dnia po prostu usuń skrypt autostartu i zamykania, a także xsession.target
- twoje niestandardowe jednostki użytkownika mogą pozostać nietknięte i po prostu działać.