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.
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