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 |