Script pertsonalizatua ordenagailu eramangarriaren estalkia ixtean eta pantaila lo egin gabe blokeatzean

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.

Script pertsonalizatua ordenagailu eramangarriaren estalkia ixtean eta pantaila lo egin gabe blokeatzean

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

Gehitu iruzkin berria