Halo kabeh. Aku nggunakake Lubuntu 18.04 ing laptop omahku. Ing sawijining dina, aku mutusake yen aku ora puas karo tumindak sing ditawakake Power Manager nalika nutup tutup laptop. Aku pengin ngunci layar nalika nutup tutup laptop lan sawise sawetara wektu ngirim laptop menyang hibernasi. Aku nulis skrip kanggo iki lan aku cepet-cepet nuduhake karo sampeyan.
Aku nemoni rong masalah.
Kaping pisanan, hibernasi ora metu saka kothak ing Lubunta; kanggo ngaktifake, sampeyan kudu nindakake ing ngisor iki.
Temokake swap UUID, kanggo nindakake iki, sampeyan kudu mbukak:
grep swap /etc/fstab
Ing kasusku, output ing ngisor iki:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Banjur sampeyan kudu nambah UUID menyang paramèter initialization kernel. Kanggo nindakake iki, tambahake resume = UUID =% UUID% sampeyan menyang baris "GRUB_CMDLINE_LINUX_DEFAULT" ing file /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Lan mbukak printah:
sudo update-grub
Saiki hibernasi kudu bisa digunakake, kanggo mriksa sampeyan bisa mbukak:
sudo systemctl hibernate
Masalah kapindho yaiku carane ngunci layar pangguna minangka root tanpa ngirim laptop turu. Aku ditanggulangi nggunakake dbus-send, printah dhewe ing script ing ngisor iki. Yen ana sing ngerti opsi liyane, tulisen ing komentar
Saiki ayo miwiti nulis naskah.
Wangsulan: Bab ingkang sapisanan kita kudu nindakake ing Power Manager kanggo milih Ngalih mati tampilan minangka tumindak nalika nutup tutup, supaya ora ana konflik karo script kita.
Banjur gawe file /etc/acpi/events/laptop-lid kanthi isi ing ngisor iki:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
lan gawe skrip /etc/acpi/laptop-lid.sh kanthi isi ing ngisor iki:
#!/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
Nggawe skrip bisa dieksekusi:
sudo chmod a+x /etc/acpi/laptop-lid.sh
Lan miwiti maneh daemon acpid supaya owah-owahan ditrapake:
sudo systemctl restart acpid.service
Kabeh wis siyap.
Kanggo Gnome ing skrip sampeyan kudu ngganti:
- lxsessin => gnome-session
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Source: www.habr.com