diff options
author | Jarno Suni <8@iki.fi> | 2014-07-20 18:25:22 +0300 |
---|---|---|
committer | Eric Koegel <eric.koegel@gmail.com> | 2014-08-28 18:52:16 +0300 |
commit | bb0cbd537d72be4dece2ade8a86d76335dfda2dc (patch) | |
tree | 567ad30657d704de4bcd23207d4e496f59103219 /scripts | |
parent | 7892794fbf029a3b15d9e1320cf701bf0d31fd83 (diff) | |
download | xfce4-session-bb0cbd537d72be4dece2ade8a86d76335dfda2dc.tar.gz |
Update xflock4 (Bug 10217)
Complete rewrite of xflock4 that aims to be more reliable and
support more screen savers and lockers.
Signed-off-by: Eric Koegel <eric.koegel@gmail.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/xflock4 | 68 |
1 files changed, 41 insertions, 27 deletions
diff --git a/scripts/xflock4 b/scripts/xflock4 index ec4d05d4..9268e6a7 100644 --- a/scripts/xflock4 +++ b/scripts/xflock4 @@ -4,7 +4,7 @@ # # Copyright (C) 1999, 2003 Olivier Fourdan (fourdan@xfce.org) # Copyright (C) 2011 Guido Berhoerster (guido+xfce.org@berhoerster.name) -# Copyright (C) 2011 Jarno Suni (8@iki.fi) +# Copyright (C) 2014 Jarno Suni (8@iki.fi) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,31 +20,45 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # - -PATH=/bin:/usr/bin +set -o nounset +set -o errexit +# OpenBSD and possibly some other OSs require +# /usr/local/bin:/usr/X11R6/bin in PATH +PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin export PATH -# Lock by xscreensaver or gnome-screensaver, if a respective daemon is running -for lock_cmd in \ - "xscreensaver-command -lock" \ - "gnome-screensaver-command --lock" -do - $lock_cmd >/dev/null 2>&1 && exit -done - -# else run another access locking utility, if installed -for lock_cmd in \ - "xlock -mode blank" \ - "slock" - do - set -- $lock_cmd - if command -v -- $1 >/dev/null 2>&1; then - $lock_cmd >/dev/null 2>&1 & - # turn off display backlight: - xset dpms force off - exit - fi -done - -# else access locking failed -exit 1 +# Lock by a screensaver, if its daemon is running. +if pidof "`command -v xscreensaver`" >/dev/null; then + xscreensaver-command -lock >/dev/null +elif pidof "`command -v gnome-screensaver`" >/dev/null; then + gnome-screensaver-command --lock >/dev/null +elif pidof "`command -v light-locker`" >/dev/null; then + light-locker-command --lock >/dev/null +elif pidof "`command -v mate-screensaver`" >/dev/null; then + mate-screensaver-command --lock >/dev/null +elif pidof "`command -v cinnamon-screensaver`" >/dev/null; then + cinnamon-screensaver-command --lock >/dev/null +elif pidof "`command -v xautolock`" >/dev/null; then +# Note: xautolock does not tell, if it succeeds in locking, +# so be sure to start the daemon properly. + xautolock -locknow >/dev/null +# No daemon was found; use some available utility to lock: +elif command -v i3lock >/dev/null; then + i3lock --dpms --color=000000 >/dev/null +else + for lock_cmd in \ + "xlock -mode blank" \ + "slock" \ + "slimlock" + do + if command -v -- $lock_cmd >/dev/null; then + # Run the command in background + $lock_cmd >/dev/null & + # Turn off display backlight + xset dpms force off + exit + fi + done + # None of the above worked. Access locking failed. + exit 1 +fi |