-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathez
More file actions
executable file
·77 lines (64 loc) · 1.9 KB
/
Copy pathez
File metadata and controls
executable file
·77 lines (64 loc) · 1.9 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
73
74
75
76
77
#!/usr/bin/env bash
# author: andreasl
set -eu
show_usage() {
cat <<'EOF'
ez - resteazy
Blank the display after keyboard/mouse idle.
Usage:
ez [<IDLE-SECONDS>]
Examples:
ez # Default to 5 seconds idle time
ez 120 # Allow 120 seconds idle time
EOF
}
case ${1:-} in
-h | --help)
show_usage
exit 0
;;
esac
max_idle_time=${1:-5}
orig_idle_delay=$(gsettings get org.gnome.desktop.session idle-delay)
orig_lock_enabled=$(gsettings get org.gnome.desktop.screensaver lock-enabled)
restore() {
gsettings set org.gnome.desktop.session idle-delay "$orig_idle_delay"
gsettings set org.gnome.desktop.screensaver lock-enabled "$orig_lock_enabled"
}
trap restore EXIT INT TERM HUP
# Disable auto-lock for the duration; blanking must never lead to the lock screen.
gsettings set org.gnome.desktop.screensaver lock-enabled false
# Read idle time in whole seconds from GNOME Mutter's IdleMonitor over D-Bus.
get_idle_seconds() {
local out ms
out=$(gdbus call --session \
--dest org.gnome.Mutter.IdleMonitor \
--object-path /org/gnome/Mutter/IdleMonitor/Core \
--method org.gnome.Mutter.IdleMonitor.GetIdletime 2>/dev/null) || return 1
# Output format: (uint64 559,)
ms=${out#*uint64 }
ms=${ms%,*}
[[ $ms =~ ^[0-9]+$ ]] || return 1
printf '%s' $((ms / 1000))
}
blanked=0
while true; do
if ! idle_time=$(get_idle_seconds); then
sleep 1
continue
fi
if ((idle_time >= max_idle_time)); then
if ((blanked == 0)); then
# Force GNOME to blank almost immediately; lock stays disabled.
gsettings set org.gnome.desktop.session idle-delay 'uint32 1'
blanked=1
fi
sleep 1
else
if ((blanked == 1)); then
gsettings set org.gnome.desktop.session idle-delay "$orig_idle_delay"
blanked=0
fi
sleep $((max_idle_time - idle_time))
fi
done