Hati maalum wakati wa kufunga kifuniko cha kompyuta ya mkononi na kufunga skrini bila kulala

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.

Hati maalum wakati wa kufunga kifuniko cha kompyuta ya mkononi na kufunga skrini bila kulala

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

Kuongeza maoni