Salut tout le monde. J'utilise Lubuntu 18.04 sur mon ordinateur portable personnel. Un beau jour, j'ai décidé que je n'étais pas satisfait des actions proposées par Power Manager lors de la fermeture du couvercle de l'ordinateur portable. Je voulais verrouiller l'écran lors de la fermeture du couvercle de l'ordinateur portable et, après un certain temps, mettre l'ordinateur portable en veille prolongée. J'ai écrit un scénario pour cela et je m'empresse de le partager avec vous.
J'ai rencontré deux problèmes.
Premièrement, l'hibernation ne fonctionne pas immédiatement dans Lubunta ; pour l'activer, vous devez procéder comme suit.
Recherchez le swap UUID, pour ce faire, vous devez exécuter :
grep swap /etc/fstab
Dans mon cas, le résultat est le suivant :
# swap was on /dev/mmcblk0p2 during installation
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Ensuite, vous devez ajouter l'UUID aux paramètres d'initialisation du noyau. Pour cela, ajoutez summary=UUID=%your UUID% à la ligne « GRUB_CMDLINE_LINUX_DEFAULT » dans le fichier /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Et exécutez la commande :
sudo update-grub
Maintenant, l'hibernation devrait fonctionner, pour vérifier, vous pouvez exécuter :
sudo systemctl hibernate
Le deuxième problème était de savoir comment verrouiller l'écran de l'utilisateur en tant que root sans mettre l'ordinateur portable en veille. Je l'ai résolu en utilisant dbus-send, la commande elle-même se trouve dans le script ci-dessous. Si quelqu'un connaît d'autres options, veuillez l'écrire dans les commentaires
Commençons maintenant à écrire le script.
La première chose que nous devons faire dans Power Manager est de sélectionner Désactiver l'affichage comme action lors de la fermeture du couvercle, afin qu'il n'y ait pas de conflits avec notre script.
Créez ensuite un fichier /etc/acpi/events/laptop-lid avec le contenu suivant :
event=button/lid.*
action=/etc/acpi/laptop-lid.sh
et créez un script /etc/acpi/laptop-lid.sh avec le contenu suivant :
#!/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
Rendre le script exécutable :
sudo chmod a+x /etc/acpi/laptop-lid.sh
Et redémarrez le démon acpid pour que les modifications soient appliquées :
sudo systemctl restart acpid.service
Tout est prêt.
Pour Gnome, dans le script, vous devez modifier :
- lxsessin => session gnome
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver
Source: habr.com