O arquivo de unidade systemd não pode ser executado manualmente, então deve haver algo que o acione. Dependências reversas podem exigir isso, mas como elas também são iniciadas? Normalmente, elas não são iniciadas antes startx
(ou pelo menos não deveriam ser), então deve haver um ponto de acionamento.
Estou mais interessado em como ele funciona com o startx, e não com um gerenciador de login.
Detalhes sobre como gnome-session.target
funciona especificamente também seriam ótimos, já que é o exemplo mais prático de uma implementação de framework de sessão que utiliza graphical-session.target
. O binário gnome-session tem uma --systemd
opção. Talvez seja onde o gatilho do ponto de partida é colocado. Seria triste saber que os binários podem simplesmente ignorar RefuseManualStart=yes
. Isso seria muito... gatilho.
No exemplo de uma sessão GNOME,
gnome-session.target
requergraphical-session.target
. Especificamente, em/usr/lib/systemd/user/gnome-session.target
:BindsTo=
é semelhante aRequires=
. " Em muitos casos é melhor combinar BindsTo= com After= ". No entantognome-session.target
faz o oposto, por qualquer motivo.Analisando mais a fundo, encontramos
[email protected]
:man gnome-session
explica "gnome-session pode passar grande parte do gerenciamento de sessão para o systemd" e lista vários alvos do systemd.gnome-session
inicia a unidade systemd usando umaStartUnit
chamada dbus, assim comosystemctl start
faria. Não vejo necessidade (ou fazer) de algo diferente. Podemos confirmar o início manual de[email protected]
em main.c .