Umbhalo wangokwezifiso lapho uvala isivalo sekhompuyutha ephathekayo futhi ukhiya isikrini ngaphandle kokulala

Sanibonani nonke. Ngisebenzisa i-Lubuntu 18.04 kukhompyutha yami ephathekayo yasekhaya. Ngolunye usuku oluhle nganquma ukuthi angigculisekile ngezenzo ezenziwa nguMphathi Wamandla lapho ngivala isivalo sekhompuyutha ephathekayo. Bengifuna ukukhiya isikrini lapho ngivala isivalo se-laptop futhi ngemva kwesikhashana ngithumele ikhompuyutha ephathekayo ku-hibernation. Ngibhale umbhalo walokhu futhi ngiyashesha ukukwabelana nawe.

Ngabhekana nezinkinga ezimbili.

Okokuqala, ukulala ubuthongo akusebenzi ngaphandle kwebhokisi eliku-Lubunta; ukuze uyinike amandla, udinga ukwenza okulandelayo.

Thola ukushintshwa kwe-UUID, ukwenza lokhu udinga ukusebenzisa:

grep swap /etc/fstab

Endabeni yami okukhiphayo yilokhu okulandelayo:

# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none            swap    sw              0       0

Bese udinga ukwengeza i-UUID kumingcele yokuqalisa i-kernel. Ukuze wenze lokhu, engeza i-resume=UUID=%UUID% yakho emugqeni othi β€œGRUB_CMDLINE_LINUX_DEFAULT” kufayela /etc/default/grub

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...

Bese ugijima umyalo:

sudo update-grub

Manje i-hibernation kufanele isebenze, ukuhlola ukuthi ungagijima:

sudo systemctl hibernate

Inkinga yesibili kwaba ukuthi usikhiya kanjani isikrini somsebenzisi njengempande ngaphandle kokuthumela ikhompuyutha ephathekayo ukuthi ilale. Ngiyixazulule ngisebenzisa i-dbus-send, umyalo ngokwawo ukuskripthi esingezansi. Uma kukhona owazi ezinye izinketho, sicela ubhale kumazwana

Manje ake siqale ukubhala iskripthi.

Into yokuqala okudingeka siyenze kokuthi Isiphathi Samandla ukukhetha Ukuvala isibonisi njengesenzo lapho uvala isivalo, ukuze kungabikho ukungqubuzana nesikripthi sethu.

Umbhalo wangokwezifiso lapho uvala isivalo sekhompuyutha ephathekayo futhi ukhiya isikrini ngaphandle kokulala

Bese udala ifayela /etc/acpi/events/laptop-lid ngokuqukethwe okulandelayo:

event=button/lid.*
action=/etc/acpi/laptop-lid.sh

bese udala umbhalo /etc/acpi/laptop-lid.sh ngokuqukethwe okulandelayo:

#!/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

Ukwenza iskripthi sisebenze:

sudo chmod a+x /etc/acpi/laptop-lid.sh

Bese uqala kabusha i-acpid daemon ukuze izinguquko zisetshenziswe:

sudo systemctl restart acpid.service

Konke sekulungile.

Ku-Gnome kuskripthi udinga ukushintsha:

  • lxsessin => i-gnome-session
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Source: www.habr.com

Engeza amazwana