summaryrefslogtreecommitdiffstats
path: root/core/modules/xscreensaver
diff options
context:
space:
mode:
authorSimon Rettberg2018-09-06 14:42:33 +0200
committerSimon Rettberg2018-09-06 14:42:33 +0200
commit266cbab12d874e460658d6f327ef8f7eb41ac491 (patch)
treee91ba16e675b017c4526bae30abefd64a93cc69b /core/modules/xscreensaver
parent[beamergui] Add PVS2 plugin (diff)
downloadmltk-266cbab12d874e460658d6f327ef8f7eb41ac491.tar.gz
mltk-266cbab12d874e460658d6f327ef8f7eb41ac491.tar.xz
mltk-266cbab12d874e460658d6f327ef8f7eb41ac491.zip
[xscreensaver] Move pvs2 plugin files to this module
Diffstat (limited to 'core/modules/xscreensaver')
-rw-r--r--core/modules/xscreensaver/data/opt/openslx/pvs2/addons/50-lock-desktop7
-rw-r--r--core/modules/xscreensaver/data/opt/openslx/pvs2/lock.svg27
-rwxr-xr-xcore/modules/xscreensaver/data/opt/openslx/pvs2/lockDesktop.sh25
3 files changed, 59 insertions, 0 deletions
diff --git a/core/modules/xscreensaver/data/opt/openslx/pvs2/addons/50-lock-desktop b/core/modules/xscreensaver/data/opt/openslx/pvs2/addons/50-lock-desktop
new file mode 100644
index 00000000..bde0f2e7
--- /dev/null
+++ b/core/modules/xscreensaver/data/opt/openslx/pvs2/addons/50-lock-desktop
@@ -0,0 +1,7 @@
+[General]
+type=button
+exec=/opt/openslx/pvs2/lockDesktop.sh
+icon=/opt/openslx/pvs2/lock.svg
+caption=Sperren
+tooltip=Die Sitzung sperren. Entsperren nur mit Passwort des angemeldeten Benutzers möglich.
+async=true
diff --git a/core/modules/xscreensaver/data/opt/openslx/pvs2/lock.svg b/core/modules/xscreensaver/data/opt/openslx/pvs2/lock.svg
new file mode 100644
index 00000000..09c45511
--- /dev/null
+++ b/core/modules/xscreensaver/data/opt/openslx/pvs2/lock.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="1280.000000pt" height="640.000000pt" viewBox="0 0 1280.000000 640.000000"
+ preserveAspectRatio="xMidYMid meet">
+<g transform="translate(0.000000,640.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M2712 5818 c-590 -28 -1160 -244 -1632 -618 -207 -164 -444 -420
+-587 -635 -264 -394 -400 -760 -475 -1270 -17 -117 -17 -538 0 -665 88 -656
+347 -1195 807 -1678 596 -625 1314 -941 2140 -942 891 0 1665 400 2272 1175
+72 92 224 313 264 385 12 22 27 40 31 40 5 0 89 -20 186 -44 410 -103 881
+-208 1137 -255 181 -33 266 -42 348 -39 l79 3 154 319 c85 176 156 321 159
+324 2 2 59 -8 127 -23 68 -14 128 -27 135 -28 6 -1 147 155 313 346 278 321
+304 348 328 343 15 -3 142 -24 282 -47 243 -40 258 -43 315 -78 l60 -37 110 5
+111 6 129 96 c72 52 135 98 141 101 5 4 115 -4 243 -17 l233 -24 74 -68 c40
+-37 136 -127 211 -199 l138 -131 255 58 c219 50 689 147 1378 282 95 19 174
+36 176 38 2 2 103 138 225 302 l221 298 -201 419 c-182 379 -204 420 -225 420
+-19 0 -29 10 -45 43 l-21 44 -187 6 c-102 4 -576 7 -1052 7 -476 0 -1568 3
+-2427 7 l-1562 6 1 151 c0 156 -10 235 -35 285 -22 42 -104 111 -135 112 -152
+9 -499 -99 -1116 -346 -221 -88 -292 -113 -298 -103 -4 7 -41 71 -83 141 -292
+496 -816 978 -1322 1214 -443 208 -887 295 -1380 271z m-548 -2093 c156 -32
+244 -87 347 -214 71 -87 130 -200 161 -308 19 -66 23 -102 23 -233 0 -181 -17
+-259 -88 -394 -257 -496 -885 -596 -1276 -205 -97 98 -158 263 -168 454 -12
+239 60 453 214 632 113 133 307 245 473 273 78 13 238 11 314 -5z"/>
+</g>
+</svg>
diff --git a/core/modules/xscreensaver/data/opt/openslx/pvs2/lockDesktop.sh b/core/modules/xscreensaver/data/opt/openslx/pvs2/lockDesktop.sh
new file mode 100755
index 00000000..2796de8f
--- /dev/null
+++ b/core/modules/xscreensaver/data/opt/openslx/pvs2/lockDesktop.sh
@@ -0,0 +1,25 @@
+#!/bin/ash
+
+# Problem: While any application (e.g. VMware) is holding the mouse and
+# keyboard grab, xscreensaver couldn't grab them, so it will ignore the
+# locking request. Without the keyboard grab, all input would still go
+# to the vmware window below the black screen, which is, you know, bad,
+# since you cannot enter your password to unlock the workstation again.
+
+# So we minimize vmware, lock the screen, and then restore vmware.
+# TODO: Add other virtualizers (vbox, kvm) later if needed.
+WINDOWS=$(xdotool search --onlyvisible --class vmplayer)
+for window in $WINDOWS; do
+ xdotool windowminimize $window
+done
+# move mouse pointer to the center of the screen to avoid some problems with ghost clicks
+xdotool mousemove --sync --polar 0 0
+
+# now actually lock
+xscreensaver-command --lock
+
+# above lock call is blocking, so now xscreensaver should be active - let's restore vmware
+for window in $WINDOWS; do
+ xdotool windowmap $window
+done
+