Comment régler le bouton d'alimentation sur arrêt au lieu de suspendre?

17

J'utilise GNOME 3.18.1 sur Arch Linux 4.2.5-1-ARCH x86_64 sur un ordinateur portable Dell E6530. Depuis que j'ai installé cet OS il y a des années, le bouton d'alimentation de mon ordinateur portable a toujours conduit mon OS à s'éteindre complètement.

Cependant, au cours des dernières semaines, ce comportement a changé, de sorte qu'en appuyant sur le bouton d'alimentation, mon ordinateur portable passe désormais en mode d'économie d'énergie. Je n'ai pas modifié mes paramètres d'alimentation. pacman -SyyuCependant, je garde toujours mon système à jour en utilisant , donc je soupçonne qu'une mise à jour a changé cette fonctionnalité.

Dans les paramètres d'alimentation, il n'y a pas d'option pour cela.

Comment puis-je restaurer le comportement initial, de sorte qu'en appuyant sur ce bouton, le système s'éteigne?

Konrad Höffner
la source
2
@Konrad Dans un deuxième temps, vous voudrez peut-être vérifier que Gnome est bien le coupable. C'est une hypothèse. Si vous essayez de changer de coquille, vous pourriez apprendre quelque chose. Pouvez-vous également répertorier les mesures que vous avez prises pour déboguer ce problème.
Sarah Weinberger
1
Qu'est ce qui a changé? Avez-vous amélioré quelque chose? Quel système d'exploitation (y compris les versions) utilisez-vous? Sur quel matériel? Que faisiez-vous quand cela a fonctionné?
Gilles 'SO- arrête d'être méchant'
Désolé pour les informations manquantes, j'ai mis à jour mon message.
Konrad Höffner

Réponses:

16

Cela est dû aux dernières gnome-settings-daemonmises à jour ...
Il n'y a pas une telle option dans les paramètres d'alimentation car elle a été supprimée par les développeurs GNOME (l' shutdown/power offaction est considérée comme "trop ​​destructrice" ).
Conclusion: vous ne pouvez plus éteindre votre ordinateur portable en appuyant sur le bouton de mise hors tension .


Vous pouvez cependant ajouter une nouvelle option dconf/ gsettings(c'est shutdown-à- dire ) au plugin d'alimentation du démon settings si vous êtes prêt à patcher et reconstruire 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;

Une fois que vous avez installé la version corrigée, une nouvelle shutdownoption sera disponible dans dconf-editorsous org> gnome> settings-daemon> plugins> power> power-button-action :

entrez la description de l'image ici

alors sélectionnez-le pour arrêter via le bouton d'alimentation ou, si vous préférez CLI, exécutez dans le terminal:

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

Bien sûr, pour que ce qui précède fonctionne, vous avez également besoin des bons paramètres dans /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Gardez à l'esprit qu'en appuyant sur le bouton d'alimentation, vous arrêterez votre système sans aucun avertissement.

don_crissti
la source
6
C'est très décevant, j'ai toujours pensé que Linux est l'OS où l'utilisateur décide de ce qu'il veut même s'il est dangereux. Mais merci beaucoup d'avoir découvert cela, au moins je ne perds pas mon temps à chercher un correctif inexistant.
Konrad Höffner
Merci beaucoup pour la solution détaillée. Malgré la présence de gnome-settings-daemon 3.18.2-1, mon installation a cependant des fichiers différents: se gsd-enums.htrouve dans le dossier /usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/et gsd-media-keys-manager.cn'existe pas du tout.
Konrad Höffner
Dev a annulé sa décision et restauré l'option interactive dans gnome-settings-daemon 3.20 . (Je pense. Je n'ai pas encore mis à jour cette version.)
idbrii
1
@idbrii - eh bien, j'ai de mauvaises nouvelles pour vous: je suis sur 3.22 et il n'y a pas d'option d'arrêt.
don_crissti
6

Comme @don_crissti l'a expliqué, la situation est idiote car il n'est vraiment pas possible de simplement arrêter sans confirmation en utilisant les paramètres normaux.

Cependant, il existe une solution de contournement: si le type de châssis de la machine est défini sur "vm" (machine virtuelle), l'ancien comportement d'arrêt immédiat reprendra tous les paramètres. Entrez simplement en tant que root:

hostnamectl set-chassis vm

et redémarrez une fois. Je ne connais aucun effet secondaire de ces paramètres.

Lorenzo Pistone
la source
1
J'ai suivi ce problème de bouton d'alimentation pendant un lien de longue date Notre application dispose d'un mode de configuration sans clavier / sans souris "affichage uniquement" qui doit être désactivé par le personnel non technique tous les soirs. Lorsque la possibilité de s'éteindre avec le bouton d'alimentation était perdue, ils devaient simplement débrancher la prise. Cette solution fonctionne très bien pour nous et est de loin l'approche la plus simple pour nous.
MikeV
4

Dans Ubuntu 18.04 ou toute variante Linux similaire avec acpi (sinon vous pouvez probablement l'installer), créez un fichier appelé /etc/acpi/events/poweravec

sudo nano /etc/acpi/events/power

et met

event=button/power
action=/sbin/poweroff

à l'intérieur du fichier, fermez-le, puis

sudo service acpid restart

C'est probablement la solution la plus simple qui fonctionne définitivement.

Seungmin Kim
la source
1
Cette solution fonctionne très bien dans ma situation: serveur ubuntu 18.04 avec gnome-desktop installé et en mode sans tête (pas nécessaire lorsqu'un écran est connecté). Merci !
M-Jack
3

Comme alternative, vous pouvez ouvrir la fenêtre des paramètres du clavier et attribuer un raccourci clavier personnalisé à la commande gnome-session-quit --power-off, ce qui fera apparaître le menu d'arrêt. Je l'ai configuré pour se déclencher par Super+ q.

joelostblom
la source
2

Dans un premier temps, vous devez vous assurer que Paramètres | Power (en supposant que Gnome v3) "Suspend & Power Off" / "Automatic Suspend" est désactivé. Fondamentalement, désactivez les fonctionnalités de réglage de l'alimentation de GNOME et laissez simplement le système prendre le relais.

Sarah Weinberger
la source
0

Le raccourci clavier personnalisé fonctionne, je l'ai défini gnome-session-quit --power-off --forceen appuyant uniquement sur le bouton d'alimentation, ce qui est tout ce que je voulais.

xxx
la source
1
Vraiment? Pour moi, cela ne fonctionne pas. Le bouton se comporte toujours selon l' power-button-actionoption. Je peux toutefois définir Ctrl+PowerOffla touche de raccourci.
Alexey
Même problème pour moi. @Alexey
Konrad Höffner
0

J'ai trouvé une autre option pour accomplir cela sur Debian Stretch. J'ai installé le package acpi-support-baseet édité le fichier en /etc/acpi/powerbtn-acpi-support.shajoutant les lignes suivantes après le commentaire d'en-tête et avant tout code.

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

C'est un peu un instrument contondant mais fonctionne pour moi sur un bureau et devrait fonctionner sur un ordinateur portable. Il contourne également les paramètres de Gnome3 mais est plus facile que de corriger Gnome et de recompiler.

Selon la page Arch Wiki, acpidcela peut probablement être implémenté en modifiant /etc/acpi/handler.shsur Arch.

HankB
la source
0

J'ai travaillé autour de ce problème sur un de mes serveurs en surveillant la sortie du journal en systemd-logindaffinant essentiellement les solutions présentées dans d'autres réponses.

Cette solution de contournement nécessite deux fichiers. Le script qui déclenche l'événement d'arrêt réel

$ 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

et le fichier de service qui le démarre / le redémarre

$ 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
la source