เบชเบฐเบ„เบฃเบดเบšเปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡เป€เบกเบทเปˆเบญเบ›เบดเบ”เบเบฒเปเบฅเบฑเบšเบ—เบฑเบญเบš เปเบฅเบฐเบฅเบฑเบญเบเปœเป‰เบฒเบˆเปเป‚เบ”เบเบšเปเปˆเบ™เบญเบ™

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™. เบ‚เป‰เบญเบเบเบณเบฅเบฑเบ‡เปƒเบŠเป‰ Lubuntu 18.04 เบขเบนเปˆเปƒเบ™เปเบฅเบฑเบšเบ—เบฑเบญเบšเบขเบนเปˆเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบกเบทเป‰เบซเบ™เบถเปˆเบ‡เบ‚เป‰เบญเบเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบžเปเปƒเบˆเบเบฑเบšเบเบฒเบ™เบเบฐเบ—เปเบฒเบ—เบตเปˆ Power Manager เบชเบฐเป€เบซเบ™เบตเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบดเบ”เบเบฒเปเบฅเบฑเบšเบ—เบฑเบญเบš. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบฅเบฑเบญเบโ€‹เบซเบ™เป‰เบฒโ€‹เบˆเปโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ›เบดเบ”โ€‹เบเบฒโ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เบชเบปเปˆเบ‡โ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™ hibernationโ€‹. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™ script เบชเปเบฒเบฅเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบŸเป‰เบฒเบงเบ—เบตเปˆเบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบกเบฑเบ™เบเบฑเบšเบ—เปˆเบฒเบ™.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบฅเปˆเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบญเบ‡เบšเบฑเบ™เบซเบฒ.

เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, hibernation เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เปƒเบ™ Lubunta; เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบกเบฑเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰.

เบŠเบญเบเบซเบฒ swap UUID, เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™:

grep swap /etc/fstab

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบก UUID เปƒเบชเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ kernel. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เป€เบžเบตเปˆเบก resume=UUID=% UUID% เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบชเปˆเปเบ–เบง โ€œGRUB_CMDLINE_LINUX_DEFAULTโ€ เปƒเบ™เป„เบŸเบฅเปŒ /etc/default/grub

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

เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡:

sudo update-grub

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ hibernation เบ„เบงเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™:

sudo systemctl hibernate

เบšเบฑเบ™เบซเบฒเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฑเบญเบเบซเบ™เป‰เบฒเบˆเปเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป€เบ›เบฑเบ™ root เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป„เบ›เบ™เบญเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ dbus-send, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ„เบดเบšเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เบ–เป‰เบฒเปƒเบœเบฎเบนเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™, เบเบฐเบฅเบธเบ™เบฒเบ‚เบฝเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ‚เบฝเบ™เบšเบปเบ”.

เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบ™ Power Manager เปเบกเปˆเบ™เป€เบฅเบทเบญเบ Switch off display เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบดเบ”เบเบฒ, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบตเบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบš script เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบชเบฐเบ„เบฃเบดเบšเปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡เป€เบกเบทเปˆเบญเบ›เบดเบ”เบเบฒเปเบฅเบฑเบšเบ—เบฑเบญเบš เปเบฅเบฐเบฅเบฑเบญเบเปœเป‰เบฒเบˆเปเป‚เบ”เบเบšเปเปˆเบ™เบญเบ™

เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ /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 daemon เบ„เบทเบ™เปƒเปเปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ–เบทเบเบ™เบณเปƒเบŠเป‰:

sudo systemctl restart acpid.service

เบ—เบธเบเบขเปˆเบฒเบ‡เบžเป‰เบญเบกเปเบฅเป‰เบง.

เบชเปเบฒเบฅเบฑเบš Gnome เปƒเบ™เบชเบฐเบ„เบดเบš, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™:

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

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™