Kaixo guztioi. Lubuntu 18.04 erabiltzen ari naiz etxeko ordenagailu eramangarrian. Egun eder batean erabaki nuen ez nengoela konforme Power Manager-ek eramangarriaren estalkia ixtean eskaintzen zituen ekintzekin. Ordenagailu eramangarriaren estalkia ixtean pantaila blokeatu nahi nuen eta pixka bat igaro ondoren ordenagailu eramangarria hibernaziora bidali. Honetarako gidoi bat idatzi nuen eta zuekin partekatzera azkar nago.
Bi arazorekin egin nuen topo.
Lehenik eta behin, hibernazioak ez du kutxatik kanpo funtzionatzen Lubuntan; hura gaitzeko, honako hau egin behar duzu.
Aurkitu UUID trukea, horretarako exekutatu behar duzu:
grep swap /etc/fstab
Nire kasuan irteera hau da:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Ondoren, UUID gehitu behar diezu nukleoaren hasierako parametroei. Horretarako, gehitu curriculuma=UUID=%zure UUID% "GRUB_CMDLINE_LINUX_DEFAULT" lerroan /etc/default/grub fitxategian
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Eta exekutatu komandoa:
sudo update-grub
Orain hibernazioak funtzionatu beharko luke, exekutatu dezakezula egiaztatzeko:
sudo systemctl hibernate
Bigarren arazoa erabiltzailearen pantaila root gisa nola blokeatu zen ordenagailu eramangarria lotara bidali gabe. dbus-send erabiliz konpondu nuen, komandoa bera beheko scriptean dago. Norbaitek beste aukerarik ezagutzen badu, mesedez idatzi iruzkinetan
Orain has gaitezen gidoia idazten.
Power Manager-en egin behar dugun lehenengo gauza, estalkia ixtean itzali pantaila hautatzea da ekintza gisa, gure scriptarekin gatazkarik egon ez dadin.
Ondoren, sortu /etc/acpi/events/laptop-lid fitxategi bat eduki honekin:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
eta sortu /etc/acpi/laptop-lid.sh script bat eduki honekin:
#!/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
Script exekutagarria egitea:
sudo chmod a+x /etc/acpi/laptop-lid.sh
Eta berrabiarazi acpid deabrua, aldaketak aplika daitezen:
sudo systemctl restart acpid.service
Dena prest dago.
Gnome-rako gidoian aldatu behar duzu:
- lxsessin => gnomo-saioa
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Iturria: www.habr.com