¿Cómo configurar el botón de encendido para apagar en lugar de suspender?

17

Estoy usando GNOME 3.18.1 en Arch Linux 4.2.5-1-ARCH x86_64 en una computadora portátil Dell E6530. Desde que instalé este sistema operativo hace años, el botón de encendido de mi computadora portátil siempre ha llevado a mi sistema operativo a apagarse por completo.

Sin embargo, en las últimas semanas este comportamiento ha cambiado, por lo que presionar el botón de encendido ahora pone mi computadora portátil en modo de ahorro de energía. No cambié mi configuración de energía. pacman -SyyuSin embargo, siempre mantengo mi sistema actualizado , así que sospecho que una actualización cambió esta funcionalidad.

En la configuración de energía no hay opción para esto.

¿Cómo puedo restaurar el comportamiento inicial, de modo que al presionar ese botón se apaga el sistema?

Konrad Höffner
fuente
2
@Konrad Como segundo paso, es posible que desee verificar que de hecho Gnome es el culpable. Eso es una suposición. Si intenta cambiar las conchas, podría aprender algo. ¿Puede también enumerar los pasos que realizó para depurar este problema?
Sarah Weinberger
1
¿Qué cambió? ¿Actualizaste algo? ¿Qué sistema operativo (incluidas las versiones) está ejecutando? ¿En qué hardware? ¿Qué estabas corriendo cuando funcionó?
Gilles 'SO- deja de ser malvado'
Perdón por la información faltante, actualicé mi publicación.
Konrad Höffner

Respuestas:

16

Eso es causado por las últimas gnome-settings-daemonactualizaciones ...
No existe tal opción en la configuración de energía porque fue eliminada por los desarrolladores de GNOME (la shutdown/power offacción se considera "demasiado destructiva" ).
En pocas palabras: ya no puede apagar su computadora portátil presionando el botón de apagado .


Sin embargo se podría añadir un nuevo dconf/ gsettingsopción (es decir shutdown) a los valores de daemon plugin de energía si usted está dispuesto a arreglar y reconstruir gnome-settings-daemon:

--- gnome-settings-daemon-3.18.2/data/gsd-enums.h   2015-11-10 09:07:12.000000000 -0500
+++ gnome-settings-daemon-3.18.2/data/gsd-enums.h   2015-11-11 18:43:43.240794875 -0500
@@ -114,7 +114,8 @@
 {
   GSD_POWER_BUTTON_ACTION_NOTHING,
   GSD_POWER_BUTTON_ACTION_SUSPEND,
-  GSD_POWER_BUTTON_ACTION_HIBERNATE
+  GSD_POWER_BUTTON_ACTION_HIBERNATE,
+  GSD_POWER_BUTTON_ACTION_SHUTDOWN
 } GsdPowerButtonActionType;

 typedef enum
--- gnome-settings-daemon-3.18.2/plugins/media-keys/gsd-media-keys-manager.c    2015-11-10 09:07:12.000000000 -0500
+++ gnome-settings-daemon-3.18.2/plugins/media-keys/gsd-media-keys-manager.c    2015-11-11 18:47:52.388602012 -0500
@@ -1849,6 +1849,9 @@

         action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action");
         switch (action_type) {
+        case GSD_POWER_BUTTON_ACTION_SHUTDOWN:
+                do_config_power_action (manager, GSD_POWER_ACTION_SHUTDOWN, in_lock_screen);
+                break;
         case GSD_POWER_BUTTON_ACTION_SUSPEND:
                 do_config_power_action (manager, GSD_POWER_ACTION_SUSPEND, in_lock_screen);
                 break;

Una vez que instale la versión parcheada, una nueva shutdownopción estará disponible en dconf-editorvirtud de org> gnome> Valores de daemon-> plugins> potencia> botón power-acción :

ingrese la descripción de la imagen aquí

así que seleccione eso para apagar con el botón de encendido o, si prefiere CLI, ejecute en la terminal

gsettings set org.gnome.settings-daemon.plugins.power power-button-action shutdown

Claro, para que lo anterior funcione, también necesita la configuración correcta en /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Tenga en cuenta que presionar el botón de encendido apagará su sistema sin ninguna advertencia.

don_crissti
fuente
66
Eso es muy decepcionante, siempre pensé que Linux es el sistema operativo donde el usuario decide lo que quiere, incluso si es peligroso. Pero muchas gracias por descubrir esto, al menos no pierdo mi tiempo en la búsqueda de una solución inexistente entonces.
Konrad Höffner
Muchas gracias por la solución detallada. A pesar de tener gnome-settings-daemon 3.18.2-1, mi instalación tiene diferentes archivos, sin embargo: gsd-enums.hestá en la carpeta /usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/y gsd-media-keys-manager.cno existe en absoluto.
Konrad Höffner
Dev ha revocado su decisión y ha restaurado la opción interactiva en gnome-settings-daemon 3.20 . (Creo. Todavía no he actualizado a esa versión.)
idbrii
1
@idbrii: bueno, tengo malas noticias para ti: estoy en 3.22 y no hay una opción de apagado.
don_crissti
6

Como explicó @don_crissti, la situación es tonta porque realmente no es posible simplemente cerrar sin confirmación utilizando la configuración normal.

Sin embargo, hay una solución alternativa: si el tipo de chasis de la máquina está configurado en "vm" (máquina virtual), el antiguo comportamiento de apagado inmediato se hará cargo de cualquier configuración. Simplemente ingrese como root:

hostnamectl set-chassis vm

y reiniciar una vez. No conozco ningún efecto secundario de esta configuración.

Lorenzo Pistone
fuente
1
He seguido este problema del botón de encendido durante mucho tiempo . Nuestra aplicación tiene un modo de "solo lectura" de configuración sin teclado / mouse que debe ser desactivado por personal no técnico todas las noches. Cuando se pierde la capacidad de apagarse con el botón de encendido, tendrían que tirar del enchufe. Esta solución funciona muy bien para nosotros y es, con mucho, el enfoque más fácil para nosotros.
MikeV
4

En Ubuntu 18.04 o cualquier otra versión similar de Linux con acpi (si no, probablemente pueda instalar), cree un archivo llamado /etc/acpi/events/powercon

sudo nano /etc/acpi/events/power

y pon

event=button/power
action=/sbin/poweroff

dentro del archivo, ciérrelo, luego

sudo service acpid restart

Esta es probablemente la solución más simple que definitivamente funciona.

Seungmin Kim
fuente
1
Esta solución funciona muy bien en mi situación: ubuntu server 18.04 con gnome-desktop instalado y en modo sin cabeza (no es necesario cuando hay una pantalla conectada). Gracias !
M-Jack
3

Como alternativa, puede abrir la ventana de configuración del teclado y asignar un método abreviado de teclado personalizado al comando gnome-session-quit --power-off, que abrirá el menú de apagado. Lo tengo configurado para activarse por Super+ q.

joelostblom
fuente
2

Como primer paso, debe asegurarse de que Configuración | Encendido (suponiendo Gnome v3) "Suspender y Apagar" / "Suspender Automático" está desactivado. Básicamente, deshabilite las funciones de configuración de energía de GNOME y simplemente deje que el sistema se haga cargo.

Sarah Weinberger
fuente
0

El atajo de teclado personalizado funciona, lo configuré gnome-session-quit --power-off --forcepresionando solo el botón de encendido, que es todo lo que quería.

xxx
fuente
1
De Verdad? Para mí esto no funciona. El botón todavía se comporta según la power-button-actionopción. Ctrl+PowerOffSin embargo, puedo establecer como tecla de acceso directo.
Alexey
El mismo problema para mi. @Alexey
Konrad Höffner
0

Encontré otra opción para lograr esto en Debian Stretch. Instalé el paquete acpi-support-basey edité el archivo /etc/acpi/powerbtn-acpi-support.shagregando las siguientes líneas después del comentario del encabezado y antes de cualquier código.

## Bypass logic to force shutdown on power button
/sbin/shutdown -h -P now "Power button pressed"
exit 0

Este es un instrumento un poco contundente, pero funciona para mí en una computadora de escritorio y debería funcionar en una computadora portátil. También omite la configuración de Gnome3, pero es más fácil que parchear Gnome y volver a compilar.

De acuerdo con la página de Arch Wiki, acpidesto probablemente se puede implementar modificando /etc/acpi/handler.shen Arch.

HankB
fuente
0

Trabajé en torno a este problema en un servidor mío monitoreando la salida del registro de systemd-logindrefinar básicamente las soluciones presentadas en otras respuestas.

Esta solución requiere dos archivos. El script que desencadena el evento de apagado real

$ cat /usr/local/bin/shutdown_button_monitor.sh
#!/bin/sh

# ansible managed

# systemd-logind prints a line of the form 
# Dez 21 11:12:10 box03.yeepa.de systemd-logind[748]: Power key pressed.
# on key press, but doesn't handle the button because gnome3 blocks systemd from doing so.
# See `systemd-inhibit` for that.

# first sleep a minute so we have chance to disable this scritp if it runs amok
sleep 1m

# so we workaround gnome a bit here.
journalctl -u systemd-logind --follow --lines=0 | \
while read line ; do
    if echo "$line" | grep --quiet 'Power key pressed'
    then
        systemctl poweroff
    fi
done

y el archivo de servicio que lo inicia / reinicia

$ cat /etc/systemd/system/shutdown_button_monitor.service
# ansible managed

[Unit]
Description=Power off the machine if the power button is pressed
# Workaround for gnomes block of the shutdown button
# /unix/242129/gnome-3-how-to-set-power-button-to-shutdown-instead-of-suspend#242452
# Monitor these blocks yourself with `systemd-inhibit`

[Service]
User=root
ExecStart=/usr/local/bin/shutdown_button_monitor.sh
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
dwt
fuente