Ecco cosa ho appena creato come soluzione alternativa al non ancora disponibile graphical-session.target
(sul mio sistema Kubuntu 16.04):
- Crea un'unità utente pseudo-sistema che porta su graphic -session.target su e giù.
Crea ~/.config/systemd/user/xsession.target
con i seguenti contenuti:
[Unità]
Descrizione = Xsession attivo e funzionante
BindsTo = graphical-session.target
Informa systemd di questa nuova unità:
$> systemctl --user daemon-reload
- Crea script di avvio automatico e spegnimento che controllano
xsession.target
tramite la meccanica attualmente disponibile del desktop Ubuntu 16.04.
Crea ~/.config/autostart-scripts/xsession.target-login.sh
con i seguenti contenuti:
#! / Bin / bash
Se ! systemctl --user is-active xsession.target &> / dev / null
poi
/ bin / systemctl - user import-environment DISPLAY XAUTHORITY
/ bin / systemctl --user avvia xsession.target
fi
Crea ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
con i seguenti contenuti:
#! / Bin / bash
se systemctl --user is-active xsession.target &> / dev / null
poi
/ bin / systemctl --user stop xsession.target
fi
Rendi eseguibili gli script:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / shutdown / xsession.target-logout.sh
Nota: questi due file sono collocati dove KDE li raccoglierà per l'avvio automatico e l'arresto. I file potrebbero essere collocati altrove per altri ambienti desktop (ad esempio Gnome) - ma non conosco quegli ambienti.
Nota: questa soluzione alternativa non supporta le sessioni multi desktop. Gestisce graphical-session.target
correttamente solo fintanto che una sola sessione X11 attiva viene eseguita su una macchina (ma questo è il caso per la maggior parte di noi utenti di Linux).
- Crea le tue unità utente di sistema che dipendono da
graphical-session.target
e farle funzionare in modo pulito durante l'accesso sul desktop.
Come esempio, l'unità di mkaito dovrebbe apparire così:
[Unità]
Descrizione = Redshift
ParteDi = graphical-session.target
[Servizio]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0.80: 0.91 -m randr
Restart = sempre
(Non dimenticare di fare un daemon-reload
dopo aver modificato le tue unità!)
- Riavvia il computer, accedi e verifica che le tue unità vengano avviate come previsto
$> systemctl - status dell'utente graphical-session.target
● graphical-session.target - Sessione utente grafica corrente
Caricato: caricato (/usr/lib/systemd/user/graphical-session.target; statico; preimpostazione fornitore: abilitato)
Attivo: attivo da Don 2017-01-05 15:08:42 CET; 47min fa
Documenti: man: systemd.special (7)
$> systemctl - stato utente tua-unità ...
In futuro (sarà Ubuntu 17.04?) La mia soluzione alternativa diventerà obsoleta poiché il sistema gestirà graphical-session.target
correttamente se stesso. In quel giorno è sufficiente rimuovere lo script di avvio automatico e spegnimento e anche xsession.target
- le tue unità utente personalizzate potrebbero rimanere intatte e funzionare.