-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsleep.sh
executable file
·132 lines (89 loc) · 2.21 KB
/
sleep.sh
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash
#
# Put system to sleep + few routines I want to do before sleep/after
# wakeup.
#
# Author: Xoores <whyxoores.cz>
_LOG_NAME="sleeper"
. /scripts/_common.sh
T_WAIT=3
export DISPLAY=:0
function run_as_user()
{
su -c "${1}" xoores
}
case "${1}" in
new-window)
exec kitty --class="SLEEPER" --title="Preparing for sleep" -- "${0}"
exit
;;
"") true ;;
*)
echo "Unknown action '${1}'"
#exit 1
;;
esac
BOOTSTRAP_ROOT
/scripts/xrandr.sh INTERNAL_ONLY
echo "***** GOING TO SLEEP *****"
echo
echo
CONNECTIONS_ACTIVE=$(nmcli -t -f NAME conn show --active --order -type | egrep -v "(virbr)")
CONNECTIONS_COUNT=$(echo "${CONNECTIONS_ACTIVE}" | wc -l)
if [ "${CONNECTIONS_COUNT}" -gt 0 ]; then
echo "[+] Shutting down connections"
while read -r CONN; do
echo -ne " |- ${CONN}\t\t\t"
case "${CONN}" in
vnet*)
echo -e "\e[33;1m[SKIP]\e[0m"
continue
;;
esac
sleep .2
RSP=$(nmcli conn down "${CONN}" 2>&1)
RET=$?
if [ ${RET} -eq 0 ]; then
echo -e "\e[32;1m[ OK ]\e[0m"
else
echo -e "\e[31;1m[FAIL]\e[0m (${RSP})"
fi
done <<< "${CONNECTIONS_ACTIVE}"
echo
fi
echo -n "Sleep in "
for W in $(seq ${T_WAIT} -1 1); do
echo -n " ${W}"
sleep .5
done
echo
echo
echo "... Naptime ..."
killall picom 2>/dev/null
/scripts/screenlock.sh
LOG_INFO "Suspending to RAM"
# Sleep for fucks sake, not just "pretend to sleep". Took me like 3 days
# of screwing around and swearing profusely before I found the real
# reason why my notebook was cooking itself in my backpack...
echo deep > /sys/power/mem_sleep
echo 2000 > /sys/power/pm_freeze_timeout
echo "mem" > /sys/power/state
RET=$?
if [ ${RET} -ne 0 ]; then
echo "Sleep failed with return code ${RET}"
LOG_ERR "Failed to sleep with return code ${RET}"
exit 1
fi
WAKEUP_REASON=$(dmidecode | grep Wake | cut -d':' -f2-)
LOG_NOTICE "Good morning :-) [REASON=${WAKEUP_REASON}]"
# Shut down WWAN & eth and enable WIFI
ifconfig eno2 down
nmcli radio wwan off
nmcli radio wifi on
/etc/init.d/iwd restart >/dev/null
#/etc/init.d/i8kmon restart >/dev/null
#run_as_user "pactl set-sink-mute 0 1"
xset dpms force on
/scripts/reload_yubi.sh >/dev/null 2>&1 &
nvme set-feature /dev/nvme{2,3} -f 0x2 -v 4
read -p "Hello!" X