рд▓реИрдкрдЯреЙрдк рдХрд╛ рдврдХреНрдХрди рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЛ рдмрд┐рдирд╛ рд╕реНрд▓реАрдк рдХреЗ рд▓реЙрдХ рдХрд░рддреЗ рд╕рдордп рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдирдорд╕реНрддреЗред рдореИрдВ рдЕрдкрдиреЗ рд╣реЛрдо рд▓реИрдкрдЯреЙрдк рдкрд░ рд▓реБрдмрдВрдЯреВ 18.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рджрд┐рди рдореИрдВрдиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд▓реИрдкрдЯреЙрдк рдХрд╛ рдврдХреНрдХрди рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдкрд╛рд╡рд░ рдореИрдиреЗрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдореИрдВ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдБред рдореИрдВ рд▓реИрдкрдЯреЙрдк рдХрд╛ рдврдХреНрдХрди рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рд╕реНрдХреНрд░реАрди рдХреЛ рд▓реЙрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд▓реИрдкрдЯреЙрдк рдХреЛ рд╣рд╛рдЗрдмрд░рдиреЗрд╢рди рдореЗрдВ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рд╣реИред

рдореБрдЭреЗ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реНрдпреВрдмреБрдВрдЯрд╛ рдореЗрдВ рд╣рд╛рдЗрдмрд░рдиреЗрд╢рди рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпреВрдпреВрдЖрдИрдбреА рд╕реНрд╡реИрдк рдвреВрдВрдвреЗрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

grep swap /etc/fstab

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none            swap    sw              0       0

рдлрд┐рд░ рдЖрдкрдХреЛ рдХрд░реНрдиреЗрд▓ рдЖрд░рдВрднреАрдХрд░рдг рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдпреВрдпреВрдЖрдИрдбреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ /etc/default/grub рдореЗрдВ "GRUB_CMDLINE_LINUX_DEFAULT" рд▓рд╛рдЗрди рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ = UUID =% рдЕрдкрдирд╛ UUID% рдЬреЛрдбрд╝реЗрдВ

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...

рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

sudo update-grub

рдЕрдм рд╣рд╛рдЗрдмрд░рдиреЗрд╢рди рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

sudo systemctl hibernate

рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд▓реИрдкрдЯреЙрдк рдХреЛ рд╕реНрд▓реАрдк рдореЗрдВ рднреЗрдЬреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдХреНрд░реАрди рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ dbus-send рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛, рдХрдорд╛рдВрдб рд╕реНрд╡рдпрдВ рдиреАрдЪреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬрд╛рдирддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ

рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ.

рдкрд╛рд╡рд░ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдврдХреНрдХрди рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рд┐рдЪ рдСрдл рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирдирд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЯрдХрд░рд╛рд╡ рди рд╣реЛред

рд▓реИрдкрдЯреЙрдк рдХрд╛ рдврдХреНрдХрди рдмрдВрдж рдХрд░рддреЗ рд╕рдордп рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЛ рдмрд┐рдирд╛ рд╕реНрд▓реАрдк рдХреЗ рд▓реЙрдХ рдХрд░рддреЗ рд╕рдордп рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ /etc/acpi/events/laptop-lid рдмрдирд╛рдПрдВ:

event=button/lid.*
action=/etc/acpi/laptop-lid.sh

рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде /etc/acpi/laptop-lid.sh рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ:

#!/bin/bash

#set variables
#╨Я╨╛╨╗╤Г╤З╨░╨╡╨╝ BUS ╨░╨┤╤А╨╡╤Б ╨╕╨╖ environ ╤Д╨░╨╣╨╗╨░ ╨┐╤А╨╛╤Ж╨╡╤Б╤Б╨░ lxsession
BUS=$(grep -z DBUS_SESSION_BUS_ADDRESS 
	/proc/$(pidof -s lxsession)/environ | 
	sed 's/DBUS_SESSION_BUS_ADDRESS=//g')
#╨Ш╨╖ ╤В╨╛╨│╨╛ ╨╢╨╡ ╤Д╨░╨╣╨╗╨░ ╨┐╨╛╨╗╤Г╤З╨░╨╡╨╝ ╤О╨╖╨╡╤А╨░, ╨║╨╛╤В╨╛╤А╨╛╨╝╤Г ╨┐╤А╨╕╨╜╨░╨┤╨╗╨╡╨╢╨╕╤В ╤Н╤В╨╛╤В ╨┐╤А╨╛╤Ж╨╡╤Б╤Б
USER=$(grep -z USER /proc/$(pidof -s lxsession)/environ | sed 's/USER=//g')
#╨┐╤Г╤В╤М ╨┤╨╛ ╤Б╤В╨╡╨╣╤В ╤Д╨░╨╣╨╗╨░ ╨║╤А╤Л╤И╨║╨╕ ╨╜╨╛╤Г╤В╨▒╤Г╨║╨░
LID="/proc/acpi/button/lid/LID0/state"

#Check lid state (return 0 if closed)
check_lid () {
	grep -q closed $LID
}

#Lock screen without sleep
check_lid
if [ $? = 0 ]
then
	#TODO run command as root
	sudo -u $USER -E dbus-send --bus=$BUS 
				    --type=method_call 
				    --dest="org.freedesktop.ScreenSaver" 
				    "/org/freedesktop/ScreenSaver" 
				    org.freedesktop.ScreenSaver.Lock
fi

#Wait 10 minutes and hibernate if lid is closed
sleep 600
check_lid
if [ $? = 0 ]
then
	systemctl hibernate
fi

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛:

sudo chmod a+x /etc/acpi/laptop-lid.sh

рдФрд░ рдПрд╕реАрдкреАрдЖрдИрдбреА тАЛтАЛрдбреЗрдореЙрди рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХреЗрдВ:

sudo systemctl restart acpid.service

рд╕рдм рддреИрдпрд╛рд░ рд╣реИ.

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЧрдиреЛрдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

  • lxsessin => рд╕реВрдХреНрддрд┐-рд╕рддреНрд░
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ