Hej alle. Jeg bruger Lubuntu 18.04 på min bærbare hjemmecomputer. En skønne dag besluttede jeg, at jeg ikke var tilfreds med de handlinger, som Power Manager tilbød, da jeg lukkede den bærbare computers låg. Jeg ønskede at låse skærmen, når jeg lukkede laptoplåget og efter et stykke tid sende den bærbare computer i dvale. Jeg skrev et manuskript til dette, og jeg skynder mig at dele det med dig.
Jeg løb ind i to problemer.
For det første fungerer dvaletilstand ikke direkte i Lubunta; for at aktivere det, skal du gøre følgende.
Find UUID swap, for at gøre dette skal du køre:
grep swap /etc/fstab
I mit tilfælde er outputtet følgende:
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Derefter skal du tilføje UUID til kerneinitialiseringsparametrene. For at gøre dette skal du tilføje resume=UUID=%dit UUID% til linjen "GRUB_CMDLINE_LINUX_DEFAULT" i filen /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Og kør kommandoen:
sudo update-grub
Nu skulle dvaletilstand fungere, for at kontrollere, at du kan køre:
sudo systemctl hibernate
Det andet problem var, hvordan man låser brugerens skærm som root uden at sende den bærbare computer på vågeblus. Jeg løste det ved hjælp af dbus-send, selve kommandoen er i scriptet nedenfor. Hvis nogen kender andre muligheder, så skriv venligst i kommentarerne
Lad os nu begynde at skrive manuskriptet.
Det første vi skal gøre i Power Manager er at vælge Sluk display som handling, når låget lukkes, så der ikke opstår konflikter med vores script.
Opret derefter en fil /etc/acpi/events/laptop-lid med følgende indhold:
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
og opret et script /etc/acpi/laptop-lid.sh med følgende indhold:
#!/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
Gør scriptet eksekverbart:
sudo chmod a+x /etc/acpi/laptop-lid.sh
Og genstart acpid-dæmonen, så ændringerne anvendes:
sudo systemctl restart acpid.service
Alt er klar.
For Gnome i scriptet skal du ændre:
- lxsessin => nisse-session
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Kilde: www.habr.com