ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. Π― ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Lubuntu 18.04 Π½Π° ΡΠ²ΠΎΠ΅ΠΌ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π½ΠΎΡΡΠ±ΡΠΊΠ΅. Π ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ Π΄Π΅Π½Ρ Ρ ΡΠ΅ΡΠΈΠ», ΡΡΠΎ ΠΌΠ΅Π½Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Power Manager ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΊΡΡΡΠΊΠΈ Π½ΠΎΡΡΠ±ΡΠΊΠ°. Π― Ρ
ΠΎΡΠ΅Π» ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΊΡΡΡΠΊΠΈ Π½ΠΎΡΡΠ±ΡΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠ°Π½ ΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π½ΠΎΡΡΠ±ΡΠΊ Π² Π³ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠΊΡΠΈΠΏΡ ΠΈ ΡΠΏΠ΅ΡΡ ΠΈΠΌ Ρ Π²Π°ΠΌΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π΄Π²ΡΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ.
ΠΠ΅ΡΠ²Π°Ρ β Π² Π»ΡΠ±ΡΠ½ΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π³ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡ, Π΄Π»Ρ Π΅Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
ΠΠ°ΠΉΡΠΈ UUID swap, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:
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
ΠΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠ°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ root’Π°, Π½Π΅ ΠΎΡΠΏΡΠ°Π²ΠΈΠ² ΠΏΡΠΈ ΡΡΠΎΠΌ Π½ΠΎΡΡΠ±ΡΠΊ Π² ΡΠΎΠ½. Π― ΡΠ΅ΡΠΈΠ» Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ dbus-send, ΡΠ°ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΡΠΊΡΠΈΠΏΡΠ΅ Π½ΠΈΠΆΠ΅. ΠΡΠ»ΠΈ ΠΊΡΠΎ ΡΠΎ Π·Π½Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² Power Manager, ΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡ Switch off display (Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΡΠΊΡΠ°Π½) ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΊΡΡΡΠΊΠΈ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Ρ Π½Π°ΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ.
ΠΠΎΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠ» /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
ΠΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ.
ΠΠ»Ρ Gnome Π² ΡΠΊΡΠΈΠΏΡΠ΅ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ:
- lxsessin => gnome-session
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com