Tenho um serviço de timer systemd que executa um script a cada 5 minutos para verificar se o monitor foi desligado. Se estiver desligado, ele bloqueia a tela.
Mas estou tendo alguns problemas com os usuários e permissões. Parece que o script deve ser executado como sudo para consultar o estado de energia do monitor, mas isso faz com que o xsecurelock exija a senha root para desbloquear a tela. Como posso consertar isso?
Eu deveria dizer: Quero manter essa abordagem e o uso do xsecurelock, já que isso está funcionando em meus outros PCs. Precisar do sudo para consultar o estado de energia parece peculiar a este PC.
- Serviço Systemd
Description=Check if Monitor is switched off and run xsecurelock
After=network.target
[Service]
User=dave
Environment=XAUTHORITY=/home/dave/.Xauthority
Environment=DISPLAY=:0
Type=simple
ExecStart=/home/dave/monitor_check.sh --debug
StandardOutput=journal
StandardError=journal
Restart=no
[Install]
WantedBy=multi-user.target
- Roteiro
XSECURELOCK_SAVER=saver_xscreensaver
export XSECURELOCK_SAVER
echo "The value of XSECURELOCK_SAVER is: $XSECURELOCK_SAVER"
state=$(ddcutil getvcp D6 2>&1)
echo "$state"
sleep 2
if [[ "$state" == *"Display not found"* ]]; then
echo "Monitor is off, executing command..."
exec xsecurelock
break
else
echo "Display is found, nothing to do."
fi