Esto es lo que acabo de crear como solución alternativa a lo que aún no está disponible graphical-session.target
(en mi sistema Kubuntu 16.04):
- Cree una unidad de usuario pseudo systemd que suba y baje el archivo graphical-session.target.
Crea ~/.config/systemd/user/xsession.target
con los siguientes contenidos:
[Unidad]
Descripción = Xsession en funcionamiento
BindsTo = graphical-session.target
Dígale a systemd sobre esta nueva unidad:
$> systemctl --user daemon-reload
- Cree scripts de inicio automático y apagado que controlen a
xsession.target
través de la mecánica actualmente disponible del escritorio Ubuntu 16.04.
Crea ~/.config/autostart-scripts/xsession.target-login.sh
con los siguientes contenidos:
#! / bin / bash
Si ! systemctl --user is-active xsession.target &> / dev / null
luego
/ bin / systemctl --user import-environment DISPLAY XAUTHORITY
/ bin / systemctl --user start xsession.target
fi
Crea ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
con los siguientes contenidos:
#! / bin / bash
if systemctl --user is-active xsession.target &> / dev / null
luego
/ bin / systemctl --user stop xsession.target
fi
Haga que los scripts sean ejecutables:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / shutdown / xsession.target-logout.sh
Nota: estos dos archivos se colocan donde KDE los recogerá para el inicio automático y el apagado. Los archivos pueden colocarse en otro lugar para otros entornos de escritorio (por ejemplo, Gnome), pero no sé acerca de esos entornos.
Nota: Esta solución alternativa carece de soporte para sesiones de escritorio múltiples. Solo se maneja graphical-session.target
correctamente siempre que solo se ejecute una sesión X11 activa en una máquina (pero ese es el caso para la mayoría de los usuarios de Linux).
- Cree sus propias unidades de usuario systemd que dependen
graphical-session.target
y haga que se ejecuten de manera limpia mientras está conectado en su escritorio.
Como ejemplo, la unidad de @ mkaito debería verse así:
[Unidad]
Descripción = Redshift
PartOf = graphical-session.target
[Servicio]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0.80: 0.91 -m randr
Reiniciar = siempre
(¡No olvides hacer un daemon-reload
después de editar tus unidades!)
- Reinicie su máquina, inicie sesión y verifique que sus unidades se inicien como se esperaba
$> systemctl - estado del usuario graphical-session.target
● graphical-session.target: sesión de usuario gráfica actual
Cargado: cargado (/usr/lib/systemd/user/graphical-session.target; static; proveedor preestablecido: habilitado)
Activo: activo desde Don 2017-01-05 15:08:42 CET; Hace 47min
Documentos: man: systemd.special (7)
$> systemctl: estado del usuario de su unidad ...
En algún día futuro (¿será Ubuntu 17.04?) Mi solución se volverá obsoleta ya que el sistema se encargará graphical-session.target
correctamente. En ese día, simplemente elimine la secuencia de comandos de inicio automático y apagado y también xsession.target
: sus unidades de usuario personalizadas pueden permanecer intactas y funcionar.