Skript i personalizuar kur mbyllni kapakun e laptopit dhe mbyllni ekranin pa gjumë

Pershendetje te gjitheve. Unë jam duke përdorur Lubuntu 18.04 në laptopin tim të shtëpisë. Një ditë të bukur vendosa që nuk isha i kënaqur me veprimet që ofroi Power Manager kur mbylli kapakun e laptopit. Doja të bllokoja ekranin kur mbyllja kapakun e laptopit dhe pas një kohe ta dërgoja laptopin në letargji. Kam shkruar një skenar për këtë dhe nxitoj ta ndaj me ju.

Kam hasur në dy probleme.

Së pari, letargji nuk funksionon jashtë kutisë në Lubunta; për ta aktivizuar atë, duhet të bëni sa më poshtë.

Gjeni shkëmbimin UUID, për ta bërë këtë ju duhet të ekzekutoni:

grep swap /etc/fstab

Në rastin tim, rezultati është si më poshtë:

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

Pastaj ju duhet të shtoni UUID në parametrat e inicializimit të kernelit. Për ta bërë këtë, shtoni resume=UUID=%UUID-in tuaj% në rreshtin “GRUB_CMDLINE_LINUX_DEFAULT” në skedarin /etc/default/grub

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

Dhe ekzekutoni komandën:

sudo update-grub

Tani letargji duhet të funksionojë, për të kontrolluar se mund të ekzekutoni:

sudo systemctl hibernate

Problemi i dytë ishte se si të bllokohej ekrani i përdoruesit si rrënjë pa e dërguar laptopin në gjumë. E zgjidha duke përdorur dbus-send, vetë komanda është në skriptin më poshtë. Nëse dikush di opsione të tjera, ju lutemi shkruani në komente

Tani le të fillojmë të shkruajmë skenarin.

Gjëja e parë që duhet të bëjmë në Power Manager është të zgjedhim Switch off display si veprim kur mbyllim kapakun, në mënyrë që të mos ketë konflikte me skriptin tonë.

Skript i personalizuar kur mbyllni kapakun e laptopit dhe mbyllni ekranin pa gjumë

Pastaj krijoni një skedar /etc/acpi/events/laptop-lid me përmbajtjen e mëposhtme:

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

dhe krijoni një skript /etc/acpi/laptop-lid.sh me përmbajtjen e mëposhtme:

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

Bërja e skenarit të ekzekutueshëm:

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

Dhe rinisni demonin acpid në mënyrë që ndryshimet të zbatohen:

sudo systemctl restart acpid.service

Gjithçka është gati.

Për Gnome në skript ju duhet të ndryshoni:

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

Burimi: www.habr.com

Shto një koment