-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathez
More file actions
executable file
·66 lines (59 loc) · 1.83 KB
/
Copy pathez
File metadata and controls
executable file
·66 lines (59 loc) · 1.83 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
#!/usr/bin/env bash
# ez - resteazy (Wayland/GNOME)
# 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
#
# author: andreasl
set -eu
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