Hola a todos. Yo uso Lubuntu 18.04 en la computadora portátil de mi casa. Un buen día, decidí que no estaba contento con las acciones que ofrece Power Manager al cerrar la tapa de una computadora portátil. Cuando cerré la tapa de la computadora portátil, quise bloquear la pantalla y después de un tiempo enviar la computadora portátil a la hibernación. Para hacer esto, escribí un guión y me apresuro a compartirlo contigo.Me encontré con dos problemas.El primero es que la hibernación no funciona en el mundo fuera de la caja;Encuentre el intercambio de UUID, para esto debe hacer:grep swap /etc/fstab
En mi caso, el resultado es el siguiente:
UUID=aebf757e-14c0-410a-b042-3d9a6044a987 none swap sw 0 0
Luego debe agregar el UUID a los parámetros de inicialización del núcleo. Para hacer esto, agregue el archivo / etc / default / grub a la línea "GRUB_CMDLINE_LINUX_DEFAULT" resume = UUID =% su UUID%...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=aebf757e-14c0-410a-b042-3d9a6044a987"
...
Y ejecuta el comando:sudo update-grub
Ahora la hibernación debería funcionar, para la verificación puede hacer:sudo systemctl hibernate
El segundo problema era cómo bloquear la pantalla del usuario desde la raíz sin enviar la computadora portátil a dormir. Lo resolví usando dbus-send, el comando en sí está en el script a continuación. Si alguien conoce otras opciones, escriba los comentarios.Ahora comencemos a escribir el guión.Lo primero que debemos hacer en Power Manager es seleccionar Desactivar pantalla como acción al cerrar la cubierta para que no haya conflictos con nuestro script.
Luego cree el archivo / etc / acpi / events / laptop-lid con el siguiente contenido:event=button/lid.*
action=/etc/acpi/laptop-lid.sh
y cree el script /etc/acpi/laptop-lid.sh con el siguiente contenido:#!/bin/bash
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 () {
grep -q closed $LID
}
check_lid
if [ $? = 0 ]
then
sudo -u $USER -E dbus-send --bus=$BUS \
--type=method_call \
--dest="org.freedesktop.ScreenSaver" \
"/org/freedesktop/ScreenSaver" \
org.freedesktop.ScreenSaver.Lock
fi
sleep 600
check_lid
if [ $? = 0 ]
then
systemctl hibernate
fi
Hacemos que el script sea ejecutable:sudo chmod a+x /etc/acpi/laptop-lid.sh
Y reinicie el demonio acpid para que se apliquen los cambios:sudo systemctl restart acpid.service
Todo está listo.Para Gnome en el script, debe cambiar:- lxsessin => gnome-session
- org.freedesktop.ScreenSaver => org.gnome.ScreenSaver