acpid (Español)
acpid2 es un demonio flexible y extensible para entregar eventos ACPI. Cuando ocurre un evento, ejecuta programas para manejarlo. Estos eventos son desencadenados por ciertas acciones, tales como:
- Presionando teclas especiales, incluido el botón de Encendido/Suspensión/Hibernación
- Cerrando la tapa de un portátil
- (Des)Enchufando un adaptador de corriente de un portátil
- (Des)Enchufando el conector del teléfono (módem), etc.
Instalación
Instale el paquete acpid. Entonces inicie/active .
Configuración
acpid viene con una serie de acciones predefinidas para eventos activados, como lo que debería suceder cuando presionas el botón de encendido en tu máquina. De forma predeterminada, estas acciones se definen en /etc/acpi/handler.sh
, que se ejecuta después de detectar cualquier evento ACPI (según lo determinado por )
Lo siguiente es un pequeño ejemplo de una acción de este tipo. En este caso, cuando se presiona el botón de Suspensión, acpid ejecuta la orden echo -n mem >/sys/power/state
que debería colocar la computadora en un estado de suspensión (hibernación):
button/sleep) case "$2" in SLPB) echo -n mem >/sys/power/state ;; *) logger "ACPI action undefined: $2" ;; esac ;;
Desafortunadamente, no todas las computadoras etiquetan los eventos ACPI de la misma manera. Por ejemplo, el botón de suspensión puede identificarse en una máquina como SLPB y en otra como SBTN.
Para determinar cómo se reconocen sus botones o atajos , ejecute la siguiente orden:
# journalctl -f
Ahora presione el botón de encendido y/o el botón de suspensión (por ejemplo, ) en su máquina. El resultado debería ser algo así:
logger: ACPI action undefined: PBTN logger: ACPI action undefined: SBTN
Si eso no funciona, ejecute:
# acpi_listen
o con :
$ netcat -U /var/run/acpid.socket
Luego presione el botón de encendido y verá algo como esto:
button/power PBTN 00000000 00000b31
El resultado de acpi_listen
se envía a /etc/acpi/handler.sh
como parámetros $1, $2, $3 y $4.
Ejemplo:
$1 button/power $2 PBTN $3 00000000 $4 00000b31
Como habrá notado, el botón de suspensión en la salida del ejemplo se reconoce realmente como SBTN, en lugar de la etiqueta SLPB especificada en el archivo /etc/acpi/handler.sh
predeterminado. Para que la función de suspensión funcione correctamente en esta máquina, debería reemplazar SLPB) por SBTN).
Al utilizar esta información como base, puede personalizar fácilmente el archivo /etc/acpi/handler.sh
para ejecutar una variedad de órdenes según el evento que se active. Véase la sección #Consejos y trucos a continuación para conocer otras órdenes usadas comúnmente.
Configuración alternativa
De manera predeterminada, todos los eventos ACPI se pasan a través del script /etc/acpi/handler.sh
. Esto se debe al conjunto de reglas descrito en :
# Pasar todos los eventos a nuestro script de un solo controlador event=.* action=/etc/acpi/handler.sh %e
Si bien esto funciona bien, algunos usuarios pueden preferir definir reglas y acciones de eventos en sus propios script independientes. El siguiente es un ejemplo de como usar un archivo de evento individual y el script de acción correspondiente:
Como superusuario, cree los siguientes archivos:
Haga el script ejecutable y recargue para que acpid reconozca los cambios en estos archivos.
Al usar este método, es fácil crear cualquier cantidad de scripts de eventos/acciones individuales.
Consejos y trucos
Eventos de ejemplo
Los siguientes son ejemplos de eventos que se pueden usar en el script /etc/acpi/handler.sh
. Estos ejemplos se deben modificar para que se ajusten a su entorno específico, por ejemplo cambiando los nombres de las variables de evento interpretados por acpi_listen
.
Para configurar el brillo de la pantalla del portátil cuando esté o no enchufado (es posible que sea necesario ajustar los números, véase ):
ac_adapter) case "$2" in AC*|AD*) case "$4" in 00000000) echo -n 50 > /sys/class/backlight/acpi_video0/brightness ;; 00000001) echo -n 100 > /sys/class/backlight/acpi_video0/brightness ;; esac
Activar el control del volumen
Averigüe la identidad acpi de los botones de volumen (véase arriba) y sustitúyalos por los eventos acpi en los archivos a continuación.
/etc/acpi/events/vol-d
event=button/volumedown action=amixer set Master 5-
Activar el control del brillo
De forma similar al control de volumen, acpid también le permite controlar el brillo de la pantalla. Para lograr esto, escriba algún controlador, como este:
y nuevamente, conecte las teclas a los eventos ACPI:
/etc/acpi/events/bl_u
event=video/brightnessup action=/etc/acpi/handlers/bl +
Activar el control Wi-Fi
También puede crear un interruptor de alimentación de la red inalámbrica simple al presionar el botón WLAN. Un ejemplo de evento:
y su controlador:
Obtener el nombre de usuario de la pantalla actual
Para ejecutar órdenes que dependan de Xorg, es necesario definir la visualización X así como el archivo MIT Magic Cookie (a través de XAUTHORITY). Después es tener una credencial de seguridad que proporciona acceso de lectura y escritura al servidor X, a la pantalla y a cualquier dispositivo de entrada (Véase ).
Véase para una función de ejemplo cuando se usa xinitrc.
Conectar a un socket acpid
Además de los archivos de reglas, acpid acepta conexiones en un socket de dominio UNIX, de forma predeterminada . Las aplicaciones de usuario pueden conectarse a este socket.
Donde handler.sh
puede ser una script similar a /etc/acpi/handler.sh
.