xset: não é possível abrir o display “”

0

Eu tenho um teclado que tem backlights que não são inicializados por padrão quando eu uso o Ubuntu e então eu tenho que executar manualmente um script toda vez que ele for iniciado para ativar as backlights.

Eu queria automatizar isso para que o script fosse executado automaticamente e, portanto, criei uma unidade de serviço systemd para cuidar disso.

O problema é que a unidade de serviço não funciona mesmo quando iniciada a partir do terminal

systemctl daemon-reload
systemctl start keyboard-lights.service

Eu criei um arquivo .service dentro de /etc/systemd/system/

[Unit]
Description=Startup script for keyboard backlights

[Service]
ExecStart=/usr/local/bin/keyboard-lights.sh

[Install]
WantedBy=multi-user.target

O script para ativar as luzes do teclado está em /usr/local/bin/keyboard-lights.sh

Eu fiz o script executável usando

chmod 744 /usr/local/bin/keyboard-lights.sh

O que estou perdendo do meu arquivo .service que está fazendo com que o script não seja executado?

log da execução de journalctl -xe

Oct 23 22:09:13 user keyboard-lights.sh[3479]: running keyboard-lights script
Oct 23 22:09:13 user keyboard-lights.sh[3479]: xset:  unable to open display ""
Oct 23 22:09:13 user systemd[1]: keyboard-lights.service: Main process exited, code=exite
Oct 23 22:09:13 user systemd[1]: keyboard-lights.service: Unit entered failed state.
Oct 23 22:09:13 user systemd[1]: keyboard-lights.service: Failed with result 'exit-code'.

log da execução de ls -lZ

-rw-rw-r-- 1 root root ? 199 Oct 23 22:00 /etc/systemd/system/keyboard-lights.service

Edição adicional:

este é o script keyboard-lights.sh e funciona quando executo isso sozinho.

#!/bin/bash
echo "running keyboard-lights script"
if [ -f /tmp/keyboard_light ]; then
xset -led 3 && rm /tmp/keyboard_light
else
xset led 3 && touch /tmp/keyboard_light
fi

EDIT:

Alterei o título do post para refletir o que acredito ser o problema que está causando o problema.

Eu tentei pesquisar na Web e não encontrei uma solução para xset: unable to open display ""

Eu tentei adicionar export DISPLAY=:0 ao meu script de shell, mas isso não corrigiu o problema.

Alterei meu arquivo de serviço para executar apenas o comando para ativar as luzes do teclado alterando a linha ExecStart para

ExecStart=/bin/sh -c "xset led 3"

mas o erro xset: unable to open display "" ainda persiste.

Por que o comando será executado no terminal bem (ligando as luzes do teclado), mas não será executado sem erros no arquivo de serviço quando eu iniciá-lo?

    
por Danoram 23.10.2017 / 11:14

0 respostas