Inicie este script uma vez ao iniciar sua sessão gráfica do X:
#!/bin/bash -euET
{
set -o pipefail
export DBUS_SESSION_BUS_ADDRESS="${DBUS_SESSION_BUS_ADDRESS:-unix:path=/run/user/$(id -u)/bus}"
export DISPLAY="${DISPLAY:-:0}"
xscreensaver-command -watch | while read -r line ; do
echo "handling event: $line"
if [[ $line = LOCK* ]]; then
volume=$(pamixer --get-volume)
echo "current volume is $volume"
pamixer --set-volume 0
fi
if [[ $line = UNBLANK* ]]; then
echo "setting volume to $volume"
pamixer --set-volume "$volume"
fi
done
exit
}
A parte "daemon" deste script xscreensaver-command -watch
irá travar e aguardar por qualquer evento do xscreensaver. Sempre que ocorrer um evento "LOCK" ou "UNBLANK", o volume do som será zerado e restaurado, respectivamente.