เดฒเดพเดชเตโ€ŒเดŸเต‹เดชเตเดชเต เดฒเดฟเดกเต เด…เดŸเดฏเตเด•เตเด•เตเดฎเตเดชเต‹เดดเตเด‚ เด‰เดฑเด•เตเด•เดฎเดฟเดฒเตเดฒเดพเดคเต† เดธเตโ€Œเด•เตเดฐเต€เตป เดฒเต‹เด•เตเด•เตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เดดเตเด‚ เด‡เดทเตเดŸเดพเดจเตเดธเตƒเดค เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต

เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดนเดพเดฏเต. เดžเดพเตป เดŽเดจเตเดฑเต† เดตเต€เดŸเตเดŸเดฟเดฒเต† เดฒเดพเดชเตโ€ŒเดŸเต‹เดชเตเดชเดฟเตฝ เดฒเตเดฌเตเดฃเตเดŸเต 18.04 เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดฒเดพเดชเตโ€ŒเดŸเต‹เดชเตเดชเต เดฒเดฟเดกเต เด…เดŸเดฏเตเด•เตเด•เตเดฎเตเดชเต‹เตพ เดชเดตเตผ เดฎเดพเดจเต‡เดœเตผ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เดžเดพเตป เดคเตƒเดชเตเดคเดจเดฒเตเดฒเต†เดจเตเดจเต เด’เดฐเต เดจเดฒเตเดฒ เดฆเดฟเดตเดธเด‚ เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดฒเดพเดชเตโ€ŒเดŸเต‹เดชเตเดชเต เดฒเดฟเดกเต เด…เดŸเดฏเตเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเตโ€Œเด•เตเดฐเต€เตป เดฒเต‹เด•เตเด•เต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เตเดฑเดšเตเดšเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚ เดฒเดพเดชเตโ€ŒเดŸเต‹เดชเตเดชเต เดนเตˆเดฌเตผเดจเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เดพเดจเตเด‚ เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต. เดžเดพเตป เด‡เดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเดฟ, เด…เดคเต เดจเดฟเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเด™เตเด•เดฟเดŸเดพเตป เดžเดพเตป เดคเดฟเดŸเตเด•เตเด•เด‚ เด•เต‚เดŸเตเดŸเตเดจเตเดจเต.

เดžเดพเตป เดฐเดฃเตเดŸเต เดชเตเดฐเดถเตเดจเด™เตเด™เดณเดฟเตฝ เด…เด•เดชเตเดชเต†เดŸเตเดŸเต.

เด†เดฆเตเดฏเด‚, เดฒเตเดฌเตเดฃเตเดŸเดฏเดฟเดฒเต† เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดนเตˆเดฌเตผเดจเต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ; เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

UUID เดธเตเดตเดพเดชเตเดชเต เด•เดฃเตเดŸเต†เดคเตเดคเตเด•, เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

grep swap /etc/fstab

เดŽเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต:

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

เดคเตเดŸเตผเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เต‡เตผเดฃเตฝ เด‡เดจเต€เดทเตเดฏเดฒเตˆเดธเต‡เดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต UUID เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, /etc/default/grub เดซเดฏเดฒเดฟเดฒเต† โ€œGRUB_CMDLINE_LINUX_DEFAULTโ€ เดŽเดจเตเดจ เดตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต resume=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

เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดฌเดพเดงเด•เดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ acpid เดกเต†เดฎเตบ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•:

sudo systemctl restart acpid.service

เดŽเดฒเตเดฒเดพเด‚ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต.

เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเต† เด—เตเดจเต‹เดฎเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  • lxsessin => gnome-session
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•