View difference between Paste ID: 4kbUJxut and QKABTEbF
SHOW: | | - or go back to the newest paste.
1
#!/bin/bash
2
# fakesleep.sh
3
# https://pastebin.com/QKABTEbF
4
# https://www.linux.org.ru/forum/desktop/16503396?lastmod=1630412259677
5
6
7
# ♥©♥ hana, mod annelin
8
9
# disabled
10
# exit 0
11
12
user=ann
13
display=":0.0"
14
usbdevices=""
15
brightness="/sys/class/backlight/intel_backlight/brightness"
16
cpus="2 3 4 5 6 7"
17
wlan="wlp0s20f3"
18
ps_blacklist="systemd zsh ssh audacious pulseaudio gajim polkit- dbus- xfce4-power-manager xfce4-notifyd i3lock"
19
20
21
function whichusb(){
22
 for X in /sys/bus/usb/devices/*; do 
23
    if [ "${1:0:4}" == "$(cat "$X/idVendor" 2>/dev/null)" -a "${1:5}" == "$(cat "$X/idProduct" 2>/dev/null)" ]
24
    then
25
        echo "$X"
26
    fi
27
 done
28
}
29
30
case $1 in
31
    
32
    sleep)
33
34
            # disable xfce sleep md #
35
            #sudo -u ${user} DISPLAY=${display} xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery -s 14
36
37
            # usb # 
38
            for usbd in $usbdevices; do 
39
              # echo "unbind $usbd `whichusb $usbd` "
40
              echo $(whichusb $usbd | sed 's/\/.*\///g') > /sys/bus/usb/drivers/usb/unbind
41
            done
42
43
            # wifi #
44
            iwconfig $wlan txpower 10
45
46
            # backlight #
47
            cat $brightness > /tmp/fakesleep.brightness
48
            echo 0 > $brightness
49
            sudo -u ${user} DISPLAY=${display} xset dpms force off
50
51
            # sleep user procs # 
52
            for pid in $(ps -u ${user} -o pid,cmd | grep -vE "`echo $ps_blacklist|sed 's/ /|/g'`" | awk '{ print $1 }') ; do
53
                echo $pid >> /tmp/fakesleep.pid
54
                kill -STOP $pid
55
            done
56
57
58
            # sleep Xorg # 
59
            # kill -STOP $(pidof X)
60
61
            # sleep cores #
62
            for i in $cpus ; do echo 0 > /sys/devices/system/cpu/cpu${i}/online; done 
63
64
            # completed #
65
            # echo -n 7 on >> /proc/acpi/ibm/led
66
            echo "`date` stopping completed for `hostname`"  >> /tmp/fakesleep.log ;;
67
68
    resume)
69
70
            if [ ! -f /tmp/fakesleep.pid ] ; then exit ; fi
71
72
            # cpu # 
73
            for i in $cpus ; do echo 1 > /sys/devices/system/cpu/cpu${i}/online; done 
74
75
            # ps resume #
76
            # kill -CONT $(pidof X)
77
            for i in $(cat /tmp/fakesleep.pid) ; do
78
                 kill -CONT $i
79
            done 
80
81
            # disable xfce sleep md #
82
            # sudo -u ${user} DISPLAY=${display} xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery -s 60
83
84
            for usbd in $usbdevices; do 
85
                echo $(whichusb $usbd | sed 's/\/.*\///g') > /sys/bus/usb/drivers/usb/bind
86
            done
87
88
            # wifi # 
89
            iwconfig $wlan txpower 24   
90
91
            # disp #
92
            sleep 1s
93
            sudo -u ${user} DISPLAY=${display} xset dpms force on
94
            cat /tmp/fakesleep.brightness > $brightness
95
96
97
            # remove tmp data #
98
            rm /tmp/fakesleep.pid
99
            rm /tmp/fakesleep.brightness
100
101
102
            # completed #
103
            # echo -n 7 off >> /proc/acpi/ibm/led
104
            echo "`date` resume completed for `hostname`"  >> /tmp/fakesleep.log ;;
105
esac
106