summaryrefslogtreecommitdiff
path: root/community/lightdm/lightdm-lock-screen-before-switch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/lightdm/lightdm-lock-screen-before-switch.patch')
-rwxr-xr-xcommunity/lightdm/lightdm-lock-screen-before-switch.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/community/lightdm/lightdm-lock-screen-before-switch.patch b/community/lightdm/lightdm-lock-screen-before-switch.patch
new file mode 100755
index 000000000..b8b1d559c
--- /dev/null
+++ b/community/lightdm/lightdm-lock-screen-before-switch.patch
@@ -0,0 +1,55 @@
+# HG changeset patch
+# Parent b329fa1badaa454239690c3feb93d53324134915
+try to lock the screen before switching users
+
+diff --git a/utils/gdmflexiserver b/utils/gdmflexiserver
+--- a/utils/gdmflexiserver
++++ b/utils/gdmflexiserver
+@@ -9,9 +9,47 @@
+ #
+ # See http://www.gnu.org/copyleft/gpl.html for the full text of the license.
+
++PATH=/usr/local/bin:/bin:/usr/bin
++export PATH
++
+ if [ -z "$XDG_SEAT_PATH" ]; then
+ # something went wrong
+ exit 1
+ fi
+
++find_command () {
++ cmd="$1"
++ oIFS="${IFS}"; IFS=:
++ set -- ${PATH}
++ IFS="${oIFS}"
++
++ for part; do
++ [ -x "${part}/${cmd}" ] && return 0
++ done
++ return 1
++}
++
++lock_screen () {
++ for lock_cmd in \
++ "xscreensaver-command -lock" \
++ "gnome-screensaver-command --lock" \
++ "dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call /ScreenSaver org.freedesktop.ScreenSaver.Lock"
++ do
++ ${lock_cmd} >/dev/null 2>&1 && return
++ done
++
++ for lock_cmd in \
++ "slock" \
++ "xlock -mode blank"
++ do
++ set -- ${lock_cmd}
++ if find_command "$1"; then
++ ${lock_cmd} >/dev/null 2>&1 &
++ return
++ fi
++ done
++}
++
++lock_screen
++
+ dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.DisplayManager $XDG_SEAT_PATH org.freedesktop.DisplayManager.Seat.SwitchToGreeter