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.
Nota: Los entornos de escritorio, como GNOME, el administrador de inicio de sesión de systemd y algunos demonios (daemons) que manejan teclas extra pueden implementar sus propios esquemas de gestión de eventos, independientes de acpid. La ejecución de más de un sistema al mismo tiempo puede provocar un comportamiento inesperado, como suspender dos veces seguidas después de presionar un botón de suspensión. Tenga esto en cuenta y active solo los manejadores que necesite.

Esta traducción de Acpid fue revisada el 2022-11-03. Si existen cambios puede actualizarla o avisar al equipo de traducción.

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-
Sugerencia: Desactive o vincule los botones de volumen en Xorg para evitar conflictos con otras aplicaciones. Véase Xmodmap para más detalles.

Véase también .

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.

Véase también

gollark: Of the US.
gollark: Like anyone *obeys* the *Constitution*.
gollark: Given the massive* success\*\* of campaigns against mass surveillance before, this will*** go well.
gollark: Communism detected. Deploying the [REDACT].
gollark: Also, why is this not concurrent? It should be concurrent.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.