Aqui está o que eu criei como solução alternativa para o ainda não disponível graphical-session.target
(no meu sistema Kubuntu 16.04):
- Crie uma unidade de usuário pseudo-systemd que traga a graphical-session.target para cima e para baixo.
Crie ~/.config/systemd/user/xsession.target
com o seguinte conteúdo:
[Unidade]
Descrição = Xsession em funcionamento
BindsTo = graphical-session.target
Informe o systemd sobre esta nova unidade:
$> systemctl --user daemon-reload
- Crie scripts de início automático e desligamento, que controlam a
xsession.target
mecânica atualmente disponível na área de trabalho Ubuntu 16.04.
Crie ~/.config/autostart-scripts/xsession.target-login.sh
com o seguinte conteúdo:
#! / bin / bash
E se ! systemctl --user está ativo xsession.target &> / dev / null
então
/ bin / systemctl --user import-environment DISPLAY XAUTHORITY
/ bin / systemctl --user start xsession.target
fi
Crie ~/.config/plasma-workspace/shutdown/xsession.target-logout.sh
com o seguinte conteúdo:
#! / bin / bash
se systemctl --user estiver ativo xsession.target &> / dev / null
então
/ bin / systemctl --user stop xsession.target
fi
Torne os scripts executáveis:
$> chmod + x ~ / .config / autostart-scripts / xsession.target-login.sh
$> chmod + x ~ / .config / plasma-workspace / shutdown / xsession.target-logout.sh
Nota: esses dois arquivos são colocados onde o KDE os buscará para inicialização automática e desligamento. Os arquivos podem ser colocados em outro lugar para outros ambientes de desktop (por exemplo, Gnome) - mas eu não conheço esses ambientes.
Nota: Esta solução alternativa não oferece suporte a sessões com várias áreas de trabalho. Ele lida apenas com o graphical-session.target
correto, desde que apenas uma sessão X11 ativa seja executada em uma máquina (mas esse é o caso da maioria de nós, usuários do Linux).
- Crie suas próprias unidades de usuário do sistema, das quais dependem
graphical-session.target
e que sejam executadas de maneira limpa enquanto estão logadas na área de trabalho.
Como exemplo, a unidade do @ mkaito deve ficar assim:
[Unidade]
Descrição = Redshift
PartOf = graphic-session.target
[Serviço]
ExecStart = / bin / redshift -l 28: -13 -t 5300: 3300 -b 0,80: 0,91 -m randr
Reiniciar = sempre
(Não esqueça de fazer daemon-reload
depois de editar suas unidades!)
- Reinicie sua máquina, faça o login e verifique se suas unidades são iniciadas conforme o esperado
$> systemctl --user status graphic-session.target
● graphical-session.target - Sessão gráfica atual do usuário
Carregado: carregado (/usr/lib/systemd/user/graphical-session.target; estático; predefinição de fornecedor: ativada)
Ativo: ativo desde Don 2017-01-05 15:08:42 CET; 47min atrás
Documentos: man: systemd.special (7)
$> systemctl - status do usuário sua unidade ...
Em algum dia futuro (será o Ubuntu 17.04?), Minha solução alternativa se tornará obsoleta, pois o sistema manipulará o processo graphical-session.target
corretamente. Nesse dia, remova o script de inicialização automática e desligamento e também as xsession.target
suas unidades de usuário personalizadas podem permanecer intocadas e funcionar.