Pasgemaakte skrif wanneer die skootrekenaar se deksel toegemaak word en die skerm sluit sonder om te slaap

Hi almal. Ek gebruik Lubuntu 18.04 op my tuisskootrekenaar. Een mooi dag het ek besluit dat ek nie tevrede is met die aksies wat Power Manager bied wanneer ek die skootrekenaar se deksel toemaak nie. Ek wou die skerm sluit wanneer ek die deksel van die skootrekenaar toemaak en die skootrekenaar na 'n rukkie hiberneer. Om dit te doen, het ek 'n draaiboek geskryf en ek deel dit gou met jou.

Ek het twee probleme ondervind.

Die eerste is dat hibernasie nie uit die boks in Lubunt werk nie, om dit te aktiveer, moet jy die volgende doen.

Vind UUID-ruil, hiervoor moet u hardloop:

grep swap /etc/fstab

In my geval is die uitset die volgende:

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

Dan moet u die UUID by die kerninitialiseringsparameters voeg. Om dit te doen, voeg resume=UUID=%your UUID% by die reΓ«l "GRUB_CMDLINE_LINUX_DEFAULT" in die /etc/default/grub-lΓͺer

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

En voer die opdrag uit:

sudo update-grub

Nou moet hibernasie werk, om te kyk of jy kan hardloop:

sudo systemctl hibernate

Die tweede probleem was hoe om die gebruiker se skerm van root'a te sluit sonder om die skootrekenaar te laat slaap. Ek het dit opgelos met dbus-send, die opdrag self is in die skrif hieronder. As iemand ander opsies ken, skryf asseblief in die kommentaar.

Kom ons begin nou die draaiboek skryf.

Die eerste ding wat ons in Power Manager moet doen, is om Skakel skerm af as die aksie te kies wanneer die deksel toe is sodat daar geen botsing met ons skrif is nie.

Pasgemaakte skrif wanneer die skootrekenaar se deksel toegemaak word en die skerm sluit sonder om te slaap

Dan skep ons die /etc/acpi/events/laptop-lid lΓͺer met die volgende inhoud:

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

en skep 'n skrip /etc/acpi/laptop-lid.sh met die volgende inhoud:

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

Maak die skrip uitvoerbaar:

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

En herbegin die acpid daemon vir die veranderinge om in werking te tree:

sudo systemctl restart acpid.service

Alles is reg.

Vir Gnome in die skrif, moet jy verander:

  • lxsessin => kabouter-sessie
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Bron: will.com

Voeg 'n opmerking