Voici ce que je viens de créer comme solution de contournement au non encore disponible graphical-session.target
(sur mon système Kubuntu 16.04):
- Créez une unité utilisateur pseudo systemd qui fait monter et descendre le graphique-session.target.
Créez ~/.config/systemd/user/xsession.target
avec le contenu suivant:
[Unité]
Description = Xsession est opérationnel
BindsTo = graphical-session.target
Parlez à systemd de cette nouvelle unité:
$> systemctl --user daemon-reload
- Créez des scripts de démarrage et d'arrêt automatiques qui contrôlent
xsession.target
via les mécanismes actuellement disponibles du bureau Ubuntu 16.04.
Créez ~/.config/autostart-scripts/xsession.target-login.sh
avec le contenu suivant:
#! / bin / bash
si ! systemctl --user is-active xsession.target &> / dev / null
ensuite
/ bin / systemctl - environnement d'importation de l'utilisateur DISPLAY XAUTHORITY
/ bin / systemctl --user start xsession.target
Fi
Créez ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
avec le contenu suivant:
#! / bin / bash
si systemctl --user est actif xsession.target &> / dev / null
ensuite
/ bin / systemctl --user stop xsession.target
Fi
Rendez les scripts exécutables:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / shutdown / xsession.target-logout.sh
Remarque: ces deux fichiers sont placés là où KDE les récupérera pour le démarrage automatique et l'arrêt. Les fichiers peuvent être placés ailleurs pour d'autres environnements de bureau (par exemple Gnome) - mais je ne connais pas ces environnements.
Remarque: cette solution de contournement ne prend pas en charge les sessions multi-bureaux. Il ne gère graphical-session.target
correctement que tant qu'une seule session X11 active est exécutée sur une machine (mais c'est le cas pour la plupart d'entre nous utilisateurs Linux).
- Créez vos propres unités utilisateur systemd qui dépendent
graphical-session.target
et faites-les fonctionner correctement tout en étant connecté sur votre bureau.
Comme exemple, l'unité de @ mkaito devrait ressembler à ceci:
[Unité]
Description = Redshift
PartOf = graphical-session.target
[Un service]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0,80: 0,91 -m randr
Redémarrer = toujours
(N'oubliez pas de faire un daemon-reload
après avoir édité vos unités!)
- Redémarrez votre machine, connectez-vous et vérifiez que vos unités sont démarrées comme prévu
$> systemctl --user status graphical-session.target
● graphical-session.target - Session utilisateur graphique en cours
Chargé: chargé (/usr/lib/systemd/user/graphical-session.target; statique; préréglage fournisseur: activé)
Actif: actif depuis Don 2017-01-05 15:08:42 CET; Il y a 47min
Documents: man: systemd.special (7)
$> systemctl - état de l'utilisateur de votre unité ...
À un jour futur (sera-ce Ubuntu 17.04?), Ma solution de contournement deviendra obsolète car le système se débrouillera graphical-session.target
correctement lui-même. À ce jour, supprimez simplement le script de démarrage automatique et d'arrêt ainsi que le xsession.target
- vos unités utilisateur personnalisées peuvent rester intactes et fonctionner.