Kumusta tanan. Gigamit nako ang Lubuntu 18.04 sa akong laptop sa balay. Usa ka maayong adlaw nakahukom ko nga wala ko matagbaw sa mga aksyon nga gitanyag sa Power Manager sa dihang gisira ang laptop lid. Gusto nako nga i-lock ang screen kung gisira ang laptop lid ug pagkahuman ipadala ang laptop sa hibernation. Nagsulat ako usa ka script alang niini ug nagdali ako sa pagpaambit niini kanimo.
Naa koy duha ka problema.
Una, ang hibernation dili molihok sa gawas sa kahon sa Lubunta; aron mahimo kini, kinahanglan nimo nga buhaton ang mosunud.
Pangitaa ang UUID swap, aron mahimo kini kinahanglan nimo nga modagan:
grep swap /etc/fstab
Sa akong kaso ang output mao ang mosunod:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Unya kinahanglan nimo nga idugang ang UUID sa mga parameter sa kernel initialization. Aron mahimo kini, idugang ang resume=UUID=%imong UUID% sa linya nga βGRUB_CMDLINE_LINUX_DEFAULTβ sa file /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Ug pagdagan ang mando:
sudo update-grub
Karon ang hibernation kinahanglan nga molihok, aron masusi nga mahimo ka nga modagan:
sudo systemctl hibernate
Ang ikaduha nga problema mao kung giunsa ang pag-lock sa screen sa gumagamit ingon gamut nga wala ipadala ang laptop aron matulog. Gisulbad nako kini gamit ang dbus-send, ang command mismo anaa sa script sa ubos. Kung adunay nahibal-an sa ubang mga kapilian, palihug isulat sa mga komento
Karon magsugod kita sa pagsulat sa script.
Ang unang butang nga kinahanglan natong buhaton sa Power Manager mao ang pagpili sa Switch off display isip aksyon sa pagsira sa tabon, aron walay mga panagsumpaki sa atong script.
Dayon paghimo og file /etc/acpi/events/laptop-lid nga adunay mosunod nga sulod:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
ug paghimo og script /etc/acpi/laptop-lid.sh nga adunay mosunod nga sulod:
#!/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
Paghimo sa script nga ma-executable:
sudo chmod a+x /etc/acpi/laptop-lid.sh
Ug i-restart ang acpid daemon aron ang mga pagbag-o magamit:
sudo systemctl restart acpid.service
Andam na ang tanan.
Alang sa Gnome sa script kinahanglan nimo nga usbon:
- lxsessin => gnome-session
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Source: www.habr.com