ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Lubuntu 18.04 Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΡ ΡΠΈ Π»Π°ΠΏΡΠΎΠΏ. ΠΠ΄ΠΈΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ Π΄Π΅Π½ ΡΠ΅ΡΠΈΡ
, ΡΠ΅ Π½Π΅ ΡΡΠΌ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Power Manager ΠΏΡΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°ΠΊΠ° Π½Π° Π»Π°ΠΏΡΠΎΠΏΠ°. ΠΡΠΊΠ°Ρ
Π΄Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°ΠΌ Π΅ΠΊΡΠ°Π½Π° ΠΏΡΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°ΠΊΠ° Π½Π° Π»Π°ΠΏΡΠΎΠΏΠ° ΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΡ Π»Π°ΠΏΡΠΎΠΏΠ° Π² Ρ
ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡ. ΠΠ°ΠΏΠΈΡΠ°Ρ
ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π° ΡΠΎΠ²Π° ΠΈ Π±ΡΡΠ·Π°ΠΌ Π΄Π° Π³ΠΎ ΡΠΏΠΎΠ΄Π΅Π»Ρ Ρ Π²Π°Ρ.
Π‘Π±Π»ΡΡΠΊΠ°Ρ
ΡΠ΅ Ρ Π΄Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΡΡΠ²ΠΎ, Ρ ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡΡΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π² Lubunta; Π·Π° Π΄Π° Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ.
ΠΠ°ΠΌΠ΅ΡΠ΅ΡΠ΅ ΡΠ°Π·ΠΌΡΠ½Π°ΡΠ° Π½Π° UUID, Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅:
grep swap /etc/fstab
Π ΠΌΠΎΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡΡ:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ UUID ΠΊΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΄ΡΠΎΡΠΎ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ resume=UUID=%your UUID% ΠΊΡΠΌ ΡΠ΅Π΄Π° βGRUB_CMDLINE_LINUX_DEFAULTβ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Π ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°:
sudo update-grub
Π‘Π΅Π³Π° Ρ ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅:
sudo systemctl hibernate
ΠΡΠΎΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±Π΅ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅ Π΅ΠΊΡΠ°Π½Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΊΠ°ΡΠΎ root, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ΅ Π»Π°ΠΏΡΠΎΠΏΠ° Π΄Π° Π·Π°ΡΠΏΠΈ. Π Π΅ΡΠΈΡ Π³ΠΎ Ρ dbus-send, ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ Π² ΡΠΊΡΠΈΠΏΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ. ΠΠΊΠΎ Π½ΡΠΊΠΎΠΉ Π·Π½Π°Π΅ Π΄ΡΡΠ³ΠΈ ΠΎΠΏΡΠΈΠΈ, ΠΌΠΎΠ»Ρ, Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡ.
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π² Power Manager Π΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ ΠΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Ρ ΠΊΠ°ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°ΠΊΠ°, Π·Π° Π΄Π° Π½ΡΠΌΠ° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Ρ Π½Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» /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-ΡΠ΅ΡΠΈΡ
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com