[PATCH] Update xflock4 (Bug 10217) again
Alexander Mezin
mezin.alexander at gmail.com
Wed Mar 18 21:21:25 CET 2015
Based on patch by Jarno Suni.
- Use pgrep instead of pidof, which is, hopefully, available
everywhere.
- Check screensavers running under current uid only.
- Do not redirect output of lock commands to /dev/null. It could
be useful for diagnostics.
---
scripts/xflock4 | 70 ++++++++++++++++++++++++++++++++++++---------------------
1 file changed, 44 insertions(+), 26 deletions(-)
diff --git a/scripts/xflock4 b/scripts/xflock4
index ec4d05d..9580683 100644
--- a/scripts/xflock4
+++ b/scripts/xflock4
@@ -4,7 +4,7 @@
#
# Copyright (C) 1999, 2003 Olivier Fourdan (fourdan at xfce.org)
# Copyright (C) 2011 Guido Berhoerster (guido+xfce.org at berhoerster.name)
-# Copyright (C) 2011 Jarno Suni (8 at iki.fi)
+# Copyright (C) 2014 Jarno Suni (8 at 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,49 @@
# 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
+check_running() {
+ pgrep -U `id -u` -x $1 >/dev/null 2>&1
+}
-# else access locking failed
-exit 1
+# Lock by a screensaver, if its daemon is running.
+if check_running xscreensaver; then
+ xscreensaver-command -lock
+elif check_running gnome-screensaver; then
+ gnome-screensaver-command --lock
+elif check_running light-locker; then
+ light-locker-command --lock
+elif check_running mate-screensaver; then
+ mate-screensaver-command --lock
+elif check_running cinnamon-screensaver; then
+ cinnamon-screensaver-command --lock
+elif check_running xautolock; then
+# Note: xautolock does not tell, if it succeeds in locking,
+# so be sure to start the daemon properly.
+ xautolock -locknow
+# No daemon was found; use some available utility to lock:
+elif command -v i3lock >/dev/null 2>&1; then
+ i3lock --dpms --color=000000
+else
+ for lock_cmd in \
+ "xlock -mode blank" \
+ "slock" \
+ "slimlock"
+ do
+ if command -v -- $lock_cmd >/dev/null 2>&1; then
+ # Run the command in background
+ $lock_cmd &
+ # Turn off display backlight
+ xset dpms force off
+ exit
+ fi
+ done
+ # None of the above worked. Access locking failed.
+ exit 1
+fi
--
2.3.3
More information about the Xfce4-dev
mailing list