Configurando o diretório inicial do xscreensaver com systemd


0

Eu escrevi uma unidade de usuário systemd para iniciar o xscreensaver, pois quero que ela seja inicializada automaticamente. Aqui está o que parece:

# ~/.config/systemd/user/xscreensaver.service
[Unit]
Description=XScreensaver

[Service]
Type=simple
ExecStart=/run/current-system/sw/bin/xscreensaver -no-splash
Restart=always

[Install]
WantedBy=multi-user.target

Isso inicia; no entanto, não está seguindo a configuração que eu havia definido (como acontece quando inicio manualmente). Eu acho que isso ocorre porque o diretório HOME não está sendo definido (o xscreensaver procura ~/.xscreensaversua configuração). Mas mesmo adicionando uma linha

Environment=HOME=/home/username

na [Service]seção da minha unidade não corrige isso; ainda não está lendo o arquivo de configuração. Até onde eu sei, o xscreensaver não possui um argumento de linha de comando para personalizar o caminho para o arquivo de configuração. O que preciso fazer para comunicar o diretório inicial correto ao xscreensaver?

EDIT: após uma inspeção mais detalhada, parece que o xscreensaver está olhando para o arquivo de configuração correto; no entanto, simplesmente não está exibindo nenhuma das imagens (minha configuração é apenas GLSlideshow apontando para um diretório). Pode ser que não esteja encontrando algo no caminho que está procurando?

Respostas:


0

OK, eu descobri isso. O problema era que o GLSlideshow esperava que algo (não exatamente certo o que) pudesse ser chamado em seu PATH, e o systemd não estava dando o caminho. Então, o que foi corrigido:

[Unit]
Description=XScreensaver

[Service]
Type=simple
ExecStart=/run/current-system/sw/bin/xscreensaver -no-splash
Restart=always
Environment=HOME=/home/myusername
Environment=PATH=/run/current-system/sw/bin

[Install]
WantedBy=multi-user.target

(Observe que o /run/current-system/sw/bincaminho é específico para minha distribuição, NixOS. É possível que, para sistemas mais padrão, por exemplo, sistemas que usam /binou /usr/binque isso não aconteça.)


Talvez você queira adicionar /run/current-system/sw/binao PATH mais /etc/profileou menos. Também não acho que você precise definir Environment=HOME=uma unidade de usuário. Também multi-user.targetnão faz muito sentido para uma unidade de usuário (duvido que você possa ativá-la praticamente dessa maneira). Você provavelmente quer, em default.targetvez disso.
Tom Yan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.