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?

limp_chimp
fonte

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.)

limp_chimp
fonte
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