-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathscreen-lock-usb.sh
More file actions
72 lines (64 loc) · 1.6 KB
/
screen-lock-usb.sh
File metadata and controls
72 lines (64 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
# dispositivo que se usará como candado
DEVICE="/dev/disk/by-uuid/D935-DC2D"
# definir verbose
if [ "$1" = "-v" ]; then
VERBOSE=1
else
VERBOSE=0
fi
# función para mostrar lo que está pasando
function log {
if [ $VERBOSE -ge 1 ]; then
echo $1
fi
}
# función para determinar estado actual del screensaver
function screensaver_isOn {
dbus-send --print-reply --session --dest=org.freedesktop.ScreenSaver \
/ScreenSaver org.freedesktop.ScreenSaver.GetActive \
| grep boolean \
| awk '{ if ($2=="true") print "1"; else print "0" }'
}
# función que inicia el screensaver
function screensaver_on {
dbus-send --session --dest=org.freedesktop.ScreenSaver \
--type=method_call /ScreenSaver \
org.freedesktop.ScreenSaver.SetActive boolean:true
}
# función que termina el screensaver
function screensaver_off {
dbus-send --session --dest=org.freedesktop.ScreenSaver \
--type=method_call /ScreenSaver \
org.freedesktop.ScreenSaver.SetActive boolean:false
}
# se marca estado inicial del dispositivo
if [ -L "$DEVICE" ]; then
log "Dispositivo inicialmente conectado"
CONNECTED=1
else
log "Dispositivo inicialmente desconectado"
CONNECTED=0
fi
# ciclo infinito para determinar que se debe hacer
LOCKED=`screensaver_isOn`
while true; do
if [ $CONNECTED -eq 0 ]; then
if [ -L "$DEVICE" ]; then
log "Se ha conectado el dispositivo"
CONNECTED=1
fi
else
if [ ! -L "$DEVICE" -a $LOCKED -eq 0 ]; then
log "Bloqueando pantalla"
screensaver_on
LOCKED=1
fi
if [ -L "$DEVICE" -a $LOCKED -eq 1 ]; then
log "Desbloqueando pantalla"
screensaver_off
LOCKED=0
fi
fi
sleep 1
done