Come impostare il pulsante di accensione su spegnimento anziché su sospensione?


17

Sto usando GNOME 3.18.1 su Arch Linux 4.2.5-1-ARCH x86_64 su un laptop Dell E6530. Da quando ho installato questo sistema operativo anni fa, il pulsante di accensione sul mio laptop ha sempre portato il mio sistema operativo a spegnersi completamente.

Tuttavia, nelle ultime settimane questo comportamento è cambiato, quindi premendo il pulsante di accensione ora il mio laptop entra in modalità di risparmio energetico. Non ho modificato le impostazioni di alimentazione. Tengo sempre aggiornato il mio sistema utilizzando pacman -Syyu, tuttavia, sospetto che un aggiornamento abbia modificato questa funzionalità.

Nelle impostazioni di alimentazione non esiste alcuna opzione per questo.

Come posso ripristinare il comportamento iniziale, in modo che premendo quel pulsante si spenga il sistema?


2
@Konrad Come secondo passo, potresti voler verificare che Gnome sia davvero il colpevole. Questo è un presupposto. Se provi a cambiare shell, potresti imparare qualcosa. Puoi anche elencare quali passaggi hai eseguito per eseguire il debug di questo problema.
Sarah Weinberger,

1
Che cosa è cambiato? Hai aggiornato qualcosa? Quale sistema operativo (comprese le versioni) stai utilizzando? Su quale hardware? Cosa stavi correndo quando ha funzionato?
Gilles 'SO- smetti di essere malvagio' il

Ci scusiamo per le informazioni mancanti, ho aggiornato il mio post.
Konrad Höffner,

Risposte:


16

Ciò è causato dagli ultimi gnome-settings-daemonaggiornamenti ...
Non esiste tale opzione nelle impostazioni di alimentazione perché è stata rimossa dagli sviluppatori GNOME (l' shutdown/power offazione è considerata "troppo distruttiva" ).
In conclusione: non è più possibile spegnere il laptop premendo il pulsante di spegnimento .


È possibile tuttavia aggiungere una nuova opzione dconf/ gsettings(ovvero shutdown) al plug-in di potenza del daemon delle impostazioni se si è disposti a patchare e ricostruire 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 volta installata la versione patchata, una nuova shutdownopzione sarà disponibile in dconf-editorsotto org> gnome> settings-daemon> plugin> alimentazione> del pulsante di alimentazione-action :

inserisci qui la descrizione dell'immagine

quindi seleziona quello per spegnere tramite il pulsante di accensione o, se preferisci la CLI, esegui nel terminale:

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

Certo, per far funzionare quanto sopra hai bisogno anche delle giuste impostazioni in /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Tieni presente che premendo il pulsante di accensione, il sistema verrà spento senza alcun preavviso.


6
Questo è molto deludente, ho sempre pensato che Linux fosse il sistema operativo in cui l'utente decide ciò che vuole anche se è pericoloso. Ma grazie mille per averlo scoperto, almeno non perdo tempo nella ricerca di una soluzione inesistente.
Konrad Höffner,

Grazie mille per la soluzione dettagliata. Nonostante abbia gnome-settings-daemon 3.18.2-1, la mia installazione ha file diversi, tuttavia: gsd-enums.hè nella cartella /usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/e gsd-media-keys-manager.cnon esiste affatto.
Konrad Höffner,

Dev ha invertito la sua decisione e ripristinato l'opzione interattiva in gnome-settings-daemon 3.20 . (Penso. Non ho ancora aggiornato a quella versione.)
Idbrii

1
@idbrii - beh, ho delle brutte notizie per te: sono al 3.22 e non c'è alcuna opzione di spegnimento.
don_crissti,

6

Come ha spiegato @don_crissti, la situazione è sciocca perché in realtà non è possibile semplicemente arrestare senza conferma utilizzando le normali impostazioni.

Tuttavia, esiste una soluzione alternativa: se il tipo di telaio della macchina è impostato su "vm" (macchina virtuale), il vecchio comportamento di spegnimento immediato prenderà il posto di tutte le impostazioni. Inserisci semplicemente come root:

hostnamectl set-chassis vm

e riavviare una volta. Non conosco alcun effetto collaterale di queste impostazioni.


1
Ho seguito questo problema con il pulsante di accensione per un lungo collegamento. La nostra applicazione ha una modalità di configurazione "solo visualizzazione" senza tastiera / senza mouse che deve essere disattivata da personale non tecnico ogni notte. Quando si è persa la possibilità di spegnersi con il pulsante di accensione, è sufficiente staccare la spina. Questa soluzione funziona alla grande per noi ed è di gran lunga l'approccio più semplice per noi.
MikeV,

4

In Ubuntu 18.04 o simili varianti Linux con acpi (se non è possibile installarlo), crea un file chiamato /etc/acpi/events/powercon

sudo nano /etc/acpi/events/power

e metti

event=button/power
action=/sbin/poweroff

all'interno del file, chiudilo, quindi

sudo service acpid restart

Questa è probabilmente la soluzione più semplice che sicuramente funziona.


1
Questa soluzione funziona alla grande nella mia situazione: ubuntu server 18.04 con gnome-desktop installato e in modalità headless (non necessario quando è collegato uno schermo). Grazie !
M-Jack,

3

In alternativa, puoi aprire la finestra delle impostazioni della tastiera e assegnare una scorciatoia da tastiera personalizzata al comando gnome-session-quit --power-off, che farà apparire il menu di spegnimento. Ho impostato per innescare da Super+ q.


2

Come primo passo, dovresti assicurarti che Impostazioni | Power (presupponendo Gnome v3) "Suspend & Power Off" / "Automatic Suspend" è disattivato. Fondamentalmente, disabilita le funzionalità di impostazione dell'alimentazione GNOME e lascia che il sistema prenda il controllo.


0

La scorciatoia da tastiera personalizzata funziona, l'ho impostata gnome-session-quit --power-off --forcepremendo solo il pulsante di accensione, che è tutto ciò che volevo.


1
Veramente? Per me questo non funziona. Il pulsante si comporta ancora in base power-button-actionall'opzione. Ctrl+PowerOffTuttavia, posso impostare come tasto di scelta rapida.
Alexey,

Lo stesso problema per me. @Alexey
Konrad Höffner,

0

Ho trovato un'altra opzione per ottenere questo risultato su Debian Stretch. Ho installato il pacchetto acpi-support-basee modificato il file /etc/acpi/powerbtn-acpi-support.shaggiungendo le seguenti righe dopo il commento dell'intestazione e prima di qualsiasi codice.

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

Questo è un po 'uno strumento contundente, ma funziona per me su un desktop e dovrebbe funzionare su un laptop. Inoltre, ignora le impostazioni di Gnome3 ma è più semplice che correggere e ricompilare Gnome.

Secondo la pagina Arch Wiki su acpidquesto probabilmente può essere implementato modificando /etc/acpi/handler.shsu Arch.


0

Ho risolto questo problema su un mio server monitorando l'output del registro per systemd-logindperfezionare sostanzialmente le soluzioni presentate in altre risposte.

Questa soluzione alternativa richiede due file. Lo script che attiva l'evento di arresto effettivo

$ 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

e il file di servizio che lo avvia / riavvia

$ 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.