diff --git a/xscreensaver-companion b/xscreensaver-companion index 7a76fca..799e098 100755 --- a/xscreensaver-companion +++ b/xscreensaver-companion @@ -1,5 +1,23 @@ #!/usr/bin/env zsh +pidfile=${XDG_RUNTIME_DIR-/run/user/$UID}/xscreensaver-companion.pid +trap "rm -f $pidfile" INT KILL + +function init_pidfile +{ + local pid + if read pid < $pidfile; then + if kill -0 $pid; then + echo 'I am already running!' >&2 + exit 1 + else + echo 'Remove stale lock file.' >&2 + rm $pidfile + fi + fi + echo $$ > $pidfile +} + function parse_actions { while read action _; do @@ -17,4 +35,5 @@ function parse_actions done } +init_pidfile /usr/bin/xscreensaver-command -watch | parse_actions