#!/bin/sh # # Stefan Tomanek # # /etc/pm/sleep.d/99xscreensaver # # lock any running xscreensaver process . "${PM_FUNCTIONS}" ${LOCK_XSCREENSAVER:="no"} find_xscreensavers() { ps -C xscreensaver -o user=,pid= | \ while read USER PID; do xargs -0 -a /proc/$PID/environ -n1 | \ while IFS='=' read KEY VALUE; do if [ x"$KEY" = x"DISPLAY" ]; then echo -e "$USER\t$PID\t$VALUE" fi done done } suspend_xscreensaver() { find_xscreensavers | while read USER PID KEY; do echo "Locking $USER's xscreensaver on display $DISPLAY" su $USER -c "/usr/bin/xscreensaver-command -display $DISPLAY -lock" done # continue and don't look back true } resume_xscreensaver() { true } case "$1" in hibernate|suspend) if [ x"$LOCK_XSCREENSAVER" = x"yes" ]; then suspend_xscreensaver fi ;; thaw|resume) resume_xscreensaver ;; *) exit $NA ;; esac