Iskrittura apposta meta tagħlaq l-għatu tal-laptop u tissakkar l-iskrin mingħajr irqad

Hi kollha. Qed nuża Lubuntu 18.04 fuq il-laptop tad-dar tiegħi. Ġurnata waħda tajba ddeċidejt li ma kontx sodisfatt bl-azzjonijiet li offra Power Manager meta għalaq l-għatu tal-laptop. Xtaqt nissakkar l-iskrin meta nagħlaq l-għatu tal-laptop u wara ftit nibgħat il-laptop f'ibernazzjoni. Jien ktibt skript għal dan u ngħaġġel naqsamha magħkom.

Sibt żewġ problemi.

L-ewwel, l-ibernazzjoni ma taħdimx barra mill-kaxxa f'Lubunta; biex tkun tista', trid tagħmel dan li ġej.

Sib it-tpartit tal-UUID, biex tagħmel dan trid tmexxi:

grep swap /etc/fstab

Fil-każ tiegħi l-output huwa dan li ġej:

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

Imbagħad għandek bżonn iżżid l-UUID mal-parametri tal-inizjalizzazzjoni tal-qalba. Biex tagħmel dan, żid jerġa=UUID=%UUID% tiegħek mal-linja "GRUB_CMDLINE_LINUX_DEFAULT" fil-fajl /etc/default/grub

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

U mexxi l-kmand:

sudo update-grub

Issa l-ibernazzjoni għandha taħdem, biex tiċċekkja tista 'taħdem:

sudo systemctl hibernate

It-tieni problema kienet kif tissakkar l-iskrin tal-utent bħala għerq mingħajr ma tibgħat il-laptop torqod. I solvutha bl-użu dbus-send, il-kmand innifsu jinsab fl-iskrittura hawn taħt. Jekk xi ħadd jaf għażliet oħra, jekk jogħġbok ikteb fil-kummenti

Issa ejja nibdew niktbu l-iskript.

L-ewwel ħaġa li rridu nagħmlu f'Power Manager hija li nagħżlu Itfi l-wiri bħala l-azzjoni meta tagħlaq l-għatu, sabiex ma jkunx hemm kunflitti mal-iskrittura tagħna.

Iskrittura apposta meta tagħlaq l-għatu tal-laptop u tissakkar l-iskrin mingħajr irqad

Imbagħad oħloq fajl /etc/acpi/events/laptop-lid bil-kontenut li ġej:

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

u oħloq script /etc/acpi/laptop-lid.sh bil-kontenut li ġej:

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

Nagħmlu l-iskritt eżekutibbli:

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

U erġa ibda d-daemon acpid sabiex il-bidliet jiġu applikati:

sudo systemctl restart acpid.service

Kollox lest.

Għal Gnome fl-iskript trid tibdel:

  • lxsessin => gnome-sessjoni
  • org.freedesktop.ScreenSaver => org.gnome.ScreenSaver

Sors: www.habr.com

Żid kumment