เชฒเซ‡เชชเชŸเซ‹เชชเชจเซเช‚ เชขเชพเช‚เช•เชฃ เชฌเช‚เชง เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชจเซ‡ เชธเซเชฒเซ€เชช เชตเช—เชฐ เชธเซเช•เซเชฐเซ€เชจเชจเซ‡ เชฒเซ‰เช• เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เชธเซเชŸเชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸ

เช•เซ‡เชฎ เช›เซ‹ เชฌเชงเชพ. เชนเซเช‚ เชฎเชพเชฐเชพ เช˜เชฐเชจเชพ เชฒเซ‡เชชเชŸเซ‹เชช เชชเชฐ Lubuntu 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=%your 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹