O Gnome-screensaver emite alguns sinais no dbus quando algo acontece.
Aqui a documentação (com alguns exemplos) .
Você pode escrever um script que seja executado:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
e que faz o que você precisa a qualquer momento dbus-monitor
imprime uma linha sobre a tela sendo bloqueada / desbloqueada.
Aqui um comando bash para fazer o que você precisa:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
while read x; do
case "$x" in
*"boolean true"*) echo SCREEN_LOCKED;;
*"boolean false"*) echo SCREEN_UNLOCKED;;
esac
done
Basta substituir echo SCREEN_LOCKED
e echo SCREEN_UNLOCKED
pelo que você precisa.