A razão pela qual seu script não funciona no gancho de retomada é que ele não sabe com qual servidor X conversar. Você precisa definir a variável de ambiente DISPLAY
e talvez XAUTHORITY
também. Consulte Can Eu inicio um programa gráfico na área de trabalho de outro usuário como root? para mais explicações.
Aqui está um snippet de shell que executa o comando desejado em todas as exibições ativas.
if [ "${1}" = "resume" ] && [ "${2}" != "standby" ]; then
for p in $(ps -C Xorg -o pid=); do
</proc/$p/cmdline awk -v RS='if [ "${1}" = "resume" ] && [ "${2}" != "standby" ]; then
for p in $(ps -C Xorg -o pid=); do
</proc/$p/cmdline awk -v RS='%pre%' '/^:[0-9]$/ {print} $0=="-auth" {getline; print}' | {
read DISPLAY; export DISPLAY
read XAUTHORITY && export XAUTHORITY || unset XAUTHORITY
setxkbmap -rules evdev -layout us -model evdev
}
done
fi
' '/^:[0-9]$/ {print} $0=="-auth" {getline; print}' | {
read DISPLAY; export DISPLAY
read XAUTHORITY && export XAUTHORITY || unset XAUTHORITY
setxkbmap -rules evdev -layout us -model evdev
}
done
fi