¿Cómo puedo obtener una notificación en pantalla usando notify-osd cuando enchufo / desconecto el cargador?
battery
notification
notify-osd
panico kernel
fuente
fuente
Respuestas:
Cambiar entre la alimentación de CA y la energía de la batería debería generar un evento en el bus del sistema D-Bus . Ejecute
dbus-monitor --system
y observe qué eventos se generan en su sistema.Si tienes upower ejecutándose, recibirás notificaciones más especializadas
upower -m
.También puede obtener eventos de
acpi_listen
.Ejecute este script cuando desee comenzar a ver notificaciones o agréguelo al inicio de su sesión.
fuente
dbus
Algunas personas informaron que mi solución anterior de udev envió la notificación demasiadas veces cuando se enchufó el cable de alimentación. No pude reproducir eso, pero escribí este script de Python para utilizar dbus en lugar de udev. Guárdelo como un
.py
archivo en algún lugar de su disco duro. Marque el archivo ejecutable ejecutando:y agréguelo a sus aplicaciones de inicio como se describe aquí . Este script requiere que el paquete
acpi
esté instalado.udev
Con un poco de experimentación (y un poco de ayuda) pude utilizar una regla udev para lograr esto. Algunas personas han informado que a veces envía la notificación más de una vez, pero no he tenido ningún problema. YMMV.
Cree un script con los siguientes contenidos:
reemplazando
some_user
con su nombre de usuario. Marque el archivo ejecutable ejecutando:reemplazando
/path/to/script.sh
con la ruta a donde guardó el script.A continuación, cree un archivo con
/etc/udev/rules.d
nombre10-power.rules
con el contenido:nuevamente reemplazando
/path/to/script.sh
con la ruta al script que creó anteriormente.Ahora vuelva a cargar las reglas de udev ejecutando:
Desenchufe el cable de alimentación. Deberías recibir una notificación.
fuente
XAUTHORITY
algunos administradores de pantalla como gdm.dbus-monitor
. Mira mi respuesta.Fuente de script
Obteniendo el guión
El script también se agrega a mi github ; esa versión será actualizada y desarrollada un poquito más.
Puede obtenerlo haciendo lo siguiente:
sugo apt-get install git
cd /opt
git clone https://github.com/SergKolo/sergrep.git
El script estará en el
/opt/sergrep
directorio, llamadonotify_ac_change.sh
Diseño conceptual
Las preguntas clave son "¿Cómo verificamos la presencia del adaptador de CA?" y "¿Cómo detectamos cambios?"
Bueno, este problema ha sido resuelto hace mucho tiempo por otros desarrolladores. Ubuntu viene por defecto con un script llamado on_ac_power , que se almacena en
/usr/bin/on_ac_power
. El adaptador de corriente se puede mencionar en diferentes subsistemas en el núcleo (ACPI o APM), pero este script simplifica nuestro trabajo: los autores han cubierto muchas variaciones posibles. Solo devuelve el estado de salida, por lo que es apropiado para su uso enif
declaraciones.¿Por qué es
on_ac_power
una buena elección? Porque se basa en verificar múltiples subsistemas. También proporciona un comando lo suficientemente simple para trabajar: el resultado es verdadero o falso.Por lo tanto, tenemos una herramienta de detección de presencia, pero ¿qué pasa con la lógica? Necesitamos sondear la presencia y detectar cambios en el estado. Lo que podemos hacer es almacenar el estado de salida
on_ac_power
y comparar continuamente el estado actual con lo que hemos guardado, una vez que cambia: enviar notificación, guardar el estado nuevamente y seguir comparando nuevamente, haciendo un bucle. La idea básica es el uso de banderas.En resumen, inicializamos una instantánea del estado y luego sondeamos continuamente el cambio desde la instantánea; Una vez que se produce el cambio, notifique y restablezca la instantánea.
fuente