E agora, a resposta do sistema.
Desde que você perguntou como fazer isso com o systemd. ☺
É assim que o pessoal do sistema tem dito às pessoas para fazer isso.
Você está colocando o arquivo da unidade de serviço inteiramente no diretório errado. Não deve ir em /etc/systemd
. Ele não deve nem entrar em /etc/systemd/system
. Deve ir em ~marton/.config/systemd/user
.
Isso ocorre porque um programa gráfico que você deseja executar sob a égide de sua própria conta é um serviço por usuário e não um serviço sistema . (Você está atualmente invocando um navegador WWW como o superusuário. Isso é uma idéia muito ruim. Pare com isso agora !) Você poderia configurá-lo para todos usuários no diretório /etc/systemd/user
, mas é provável que nem todos os usuários em sua máquina precisem iniciar o Chromium como um serviço. Então, configure-o apenas para sua conta de usuário, especificamente.
Como é um serviço por usuário, você deve manipulá-lo com a opção --user
para systemctl
, sans sudo
. Por exemplo:
systemctl --user status chrome.service
Isso vale para ativá-lo e desativá-lo também.
Como uma unidade de serviço por usuário, ela deve ser WantedBy=default.target
, porque não há multi-user.target
para serviços por usuário. (Embora eu suspeite que deve realmente ser WantedBy=your-desktop-session.target
, que será algo como gnome-session.target
dependendo de qual área de trabalho você está usando. O que o pessoal do sistema tem dito não é maravilhosamente claro neste ponto. )
E uma parte da organização do sistema para fazer com que os serviços por usuário se pareçam com os serviços de sessão por sessão é todo o mecanismo graphical-session
, que sua unidade de serviço deve incorporar à configuração:
[Unit] PartOf=graphical-session.target
O que mais você tem a fazer depende de quão longe o OpenSuSE ficou com todo o graphical-session
bodge, que o pessoal do sistema começou a usar em 2016. O Ubuntu e o Debian fornecem uma bagunça completa nos bastidores e desligamento que inclui o início / parada de graphical-session.target
e a injeção da variável de ambiente DISPLAY
. Se o seu OpenSuSE ainda não tiver isso, talvez você precise preencher essa parte.
Leitura adicional
- Lennart Poettering e cols. (2016). systemd.special . páginas de manual do systemd. Freedesktop.org.
- Martin Pitt (2016-07-25). units: adicione a unidade de usuário graphical-session.target . bug systemd # 3678.
- Martin Pitt (2016-09-29). graphical-session.target . systemd.conf. Youtube.
- Ian Lane (2017-07-30). systemd nas sessões de usuário do GNOME . GUADEC 2017. Youtube.