DuMONChIK

fakesleep.sh

Aug 31st, 2021
1,564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
Advertisement
Add Comment
Please, Sign In to add comment