Salaam wote. Ninatumia Lubuntu 18.04 kwenye kompyuta yangu ya nyumbani. Siku moja nzuri niliamua kuwa sikuridhika na vitendo ambavyo Meneja wa Nguvu alitoa wakati wa kufunga kifuniko cha kompyuta ndogo. Nilitaka kufunga skrini wakati wa kufunga kifuniko cha kompyuta ndogo na baada ya muda kutuma kompyuta ndogo kwenye hibernation. Niliandika maandishi ya hii na ninaharakisha kushiriki nawe.
Nilikutana na shida mbili.
Kwanza, hibernation haifanyi kazi nje ya kisanduku cha Lubunta; ili kuiwezesha, unahitaji kufanya yafuatayo.
Pata ubadilishaji wa UUID, ili kufanya hivyo unahitaji kukimbia:
grep swap /etc/fstab
Kwa upande wangu matokeo ni yafuatayo:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Kisha unahitaji kuongeza UUID kwa vigezo vya uanzishaji wa kernel. Ili kufanya hivyo, ongeza resume=UUID=%UUID% yako kwenye mstari βGRUB_CMDLINE_LINUX_DEFAULTβ kwenye faili /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Na endesha amri:
sudo update-grub
Sasa hibernation inapaswa kufanya kazi, kuangalia unaweza kukimbia:
sudo systemctl hibernate
Shida ya pili ilikuwa jinsi ya kufunga skrini ya mtumiaji kama mzizi bila kutuma kompyuta ndogo kulala. Niliitatua kwa kutumia dbus-send, amri yenyewe iko kwenye hati hapa chini. Ikiwa kuna mtu anajua chaguzi zingine, tafadhali andika kwenye maoni
Sasa hebu tuanze kuandika script.
Jambo la kwanza tunalohitaji kufanya katika Kidhibiti cha Nguvu ni kuchagua Zima onyesho kama kitendo wakati wa kufunga kifuniko, ili kusiwe na migongano na hati yetu.
Kisha unda faili /etc/acpi/events/laptop-lid na maudhui yafuatayo:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
na unda hati /etc/acpi/laptop-lid.sh na maudhui yafuatayo:
#!/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
Kufanya hati kutekelezwa:
sudo chmod a+x /etc/acpi/laptop-lid.sh
Na anza tena daemon ya acpid ili mabadiliko yatumike:
sudo systemctl restart acpid.service
Yote iko tayari.
Kwa Gnome kwenye hati unahitaji kubadilisha:
- lxsessin => kikao cha mbilikimo
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Chanzo: mapenzi.com