Os scripts em /etc/systemd/system-sleep/
estão sendo executados como root, que não estão conectados ao sistema de janelas X11
. Por isso, precisa herdar o perfil do usuário logado.
De brilho da tela e aplicativo gamma , isso funciona para mim:
#!/bin/bash
export DISPLAY=:0 # For xrandr commands to work.
SpamLength=2 # How long spam lasts (how many seconds to sleep)
WaitForSignOn () {
# eyesome daemon is loaded during boot. The user name is required
# for xrandr external monitor brightness and gamma control. We must
# wait until user signs on to get .Xauthority file settings.
TotalWait=0
# Wait for user to sign on then get Xserver access for xrandr calls
UserName=""
while [[ $UserName == "" ]]; do
sleep "$SpamLength"
TotalWait=$(( TotalWait + SpamLength ))
# Find UserName currently logged in.
UserName="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"
done
logger "Waited $TotalWait seconds for $UserName to login."
xhost local:root
export XAUTHORITY="/home/$UserName/.Xauthority"
} # WaitForSignOn
Você pode copiar o código acima na parte superior do script e inserir uma linha na frente do código existente:
WaitForSignOn