Mukautettu komentosarja, kun suljet kannettavan tietokoneen kannen ja lukitset näytön ilman unta

Hei kaikki. Käytän Lubuntu 18.04:ää kotikannettavassani. Eräänä kauniina päivänä päätin, että en ollut tyytyväinen toimintoihin, joita Power Manager tarjosi kannettavan tietokoneen kannen sulkemisen yhteydessä. Halusin lukita näytön, kun suljet kannettavan tietokoneen kannen, ja jonkin ajan kuluttua lähettää kannettavan tietokoneen horrostilaan. Kirjoitin tälle käsikirjoituksen ja kiirehdin jakamaan sen kanssasi.

Törmäsin kahteen ongelmaan.

Ensinnäkin lepotila ei toimi heti Lubuntassa; sen käyttöönotto edellyttää seuraavaa.

Etsi UUID-swap, tehdäksesi tämän sinun on suoritettava:

grep swap /etc/fstab

Minun tapauksessani tulos on seuraava:

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

Sitten sinun on lisättävä UUID ytimen alustusparametreihin. Voit tehdä tämän lisäämällä tiedoston /etc/default/grub riville "GRUB_CMDLINE_LINUX_DEFAULT" resume=UUID=%your UUID%

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

Ja suorita komento:

sudo update-grub

Nyt lepotilan pitäisi toimia, jotta voit tarkistaa, voit suorittaa:

sudo systemctl hibernate

Toinen ongelma oli kuinka lukita käyttäjän näyttö pääkäyttäjäksi lähettämättä kannettavaa tietokonetta nukkumaan. Ratkaisin sen dbus-sendillä, itse komento on alla olevassa skriptissä. Jos joku tietää muita vaihtoehtoja, kirjoita kommentteihin

Aloitetaan nyt käsikirjoituksen kirjoittaminen.

Ensimmäinen asia, joka meidän on tehtävä Power Managerissa, on valita Kannen sulkemisen toiminnoksi Näyttö pois päältä, jotta skriptimme kanssa ei tule ristiriitoja.

Mukautettu komentosarja, kun suljet kannettavan tietokoneen kannen ja lukitset näytön ilman unta

Luo sitten tiedosto /etc/acpi/events/laptop-lid, jossa on seuraava sisältö:

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

ja luo komentosarja /etc/acpi/laptop-lid.sh, jossa on seuraava sisältö:

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

Skriptin tekeminen suoritettavaksi:

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

Ja käynnistä acpid-daemon uudelleen, jotta muutokset otetaan käyttöön:

sudo systemctl restart acpid.service

Kaikki on valmis.

Skriptin Gnomea varten sinun on muutettava:

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

Lähde: will.com

Lisää kommentti