Como definir o botão liga / desliga para desligar em vez de suspender?

17

Estou usando o GNOME 3.18.1 no Arch Linux 4.2.5-1-ARCH x86_64 em um laptop Dell E6530. Desde que eu instalei este sistema operacional anos atrás, o botão liga / desliga do meu laptop sempre levou meu sistema operacional a desligar completamente.

No entanto, nas últimas semanas, esse comportamento mudou, de modo que pressionar o botão liga / desliga agora coloca meu laptop no modo de economia de energia. Não alterei minhas configurações de energia. No pacman -Syyuentanto, sempre mantenho meu sistema atualizado usando , portanto, suspeito que uma atualização alterou essa funcionalidade.

Nas configurações de energia, não há opção para isso.

Como posso restaurar o comportamento inicial, para que pressionar esse botão desligue o sistema?

Konrad Höffner
fonte
2
@ Konrad Como segundo passo, convém verificar se o Gnome é o culpado. Essa é uma suposição. Se você tentar mudar as conchas, poderá aprender alguma coisa. Você também pode listar as etapas que você executou para depurar esse problema.
Sarah Weinberger
1
O que mudou? Você atualizou alguma coisa? Qual sistema operacional (incluindo versões) você está executando? Em que hardware? O que você estava correndo quando funcionou?
Gilles 'SO- stop be evil'
Desculpe pelas informações ausentes, atualizei minha postagem.
Konrad Höffner

Respostas:

16

Isso é causado pelas gnome-settings-daemonatualizações mais recentes ...
Não existe essa opção nas configurações de energia porque ela foi removida pelos desenvolvedores do GNOME (a shutdown/power offação é considerada "muito destrutiva" ).
Conclusão: você não pode mais desligar o laptop pressionando o botão desligar .


No entanto, você pode adicionar uma nova opção dconf/ gsettings(ou seja shutdown) ao plug-in de energia do daemon de configurações, se estiver disposto a corrigir e 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;

Depois de instalar a versão corrigida, uma nova shutdownopção estará disponível em dconf-editorsob org> gnome> settings-daemon> plugins> Energia> poder-botão-action :

insira a descrição da imagem aqui

selecione isso para desligar via botão liga / desliga ou, se você preferir CLI, execute no terminal:

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

Claro, para que o trabalho acima funcione, você também precisa das configurações corretas em /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Lembre-se de que pressionar o botão liga / desliga desligará o sistema sem aviso.

don_crissti
fonte
6
Isso é muito decepcionante, eu sempre pensei que o Linux é o sistema operacional em que o usuário decide o que quer, mesmo que seja perigoso. Mas muito obrigado por descobrir isso, pelo menos não perco meu tempo na busca de uma solução inexistente.
Konrad Höffner /
Muito obrigado pela solução detalhada. Apesar de ter o gnome-settings-daemon 3.18.2-1, minha instalação tem arquivos diferentes, no entanto: gsd-enums.hestá na pasta /usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/e gsd-media-keys-manager.cnão existe.
Konrad Höffner
O Dev reverteu sua decisão e restaurou a opção interativa no gnome-settings-daemon 3.20 . (Eu acho que eu não tenha atualizado para essa versão ainda..)
idbrii
1
@idbrii - bem, tenho más notícias para você: estou no 3,22 e não há opção de desligamento.
don_crissti
6

Como o @don_crissti explicou, a situação é tola, porque realmente não é possível simplesmente desligar sem confirmação usando as configurações normais.

No entanto, há uma solução alternativa: se o tipo de chassi da máquina estiver definido como "vm" (máquina virtual), o antigo comportamento de desligamento imediato assumirá todas as configurações. Simplesmente entre como root:

hostnamectl set-chassis vm

e reinicie uma vez. Não conheço nenhum efeito colateral dessas configurações.

Lorenzo Pistone
fonte
1
Eu segui esta questão do botão de alimentação por um longo tempo ligação Nosso aplicativo tem uma configuração / mouseless "visão única" keyboardless modo que precisa ser desligado por pessoal não técnico, todas as noites. Quando a capacidade de desligar com o botão liga / desliga fosse perdida, eles precisariam apenas puxar o plugue. Essa solução funciona muito bem para nós e é de longe a abordagem mais fácil para nós.
Mikev
4

No Ubuntu 18.04 ou qualquer Linux semelhante variantes com ACPI (se não você provavelmente poderá instalar), faça um arquivo chamado /etc/acpi/events/powercom

sudo nano /etc/acpi/events/power

e colocar

event=button/power
action=/sbin/poweroff

dentro do arquivo, feche-o e depois

sudo service acpid restart

Esta é provavelmente a solução mais simples que definitivamente funciona.

Seungmin Kim
fonte
1
Esta solução funciona muito bem na minha situação: ubuntu server 18.04 com o gnome-desktop instalado e no modo sem cabeça (não é necessário quando um monitor está conectado). Obrigado !
M-Jack
3

Como alternativa, você pode abrir a janela de configurações do teclado e atribuir um atalho de teclado personalizado ao comando gnome-session-quit --power-off, que abrirá o menu de desligamento. Eu o configurei para disparar por Super+ q.

joelostblom
fonte
2

Como primeiro passo, verifique se Configurações | Energia (assumindo o Gnome v3) "Suspender e desligar" / "Suspensão automática" está desativado. Basicamente, desative os recursos de configuração de energia do GNOME e deixe o sistema assumir o controle.

Sarah Weinberger
fonte
0

O atalho de teclado personalizado funciona, eu o defino gnome-session-quit --power-off --forcepressionando apenas o botão liga / desliga, que é tudo o que eu queria.

xxx
fonte
1
Verdade? Para mim, isso não funciona. O botão ainda se comporta de acordo com a power-button-actionopção. No Ctrl+PowerOffentanto, posso definir como tecla de atalho.
Alexey #
O mesmo problema para mim. @Alexey
Konrad Höffner
0

Encontrei outra opção para fazer isso no Debian Stretch. Instalei o pacote acpi-support-basee editei o arquivo /etc/acpi/powerbtn-acpi-support.shadicionando as seguintes linhas após o comentário do cabeçalho e antes de qualquer código.

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

Este é um instrumento meio franco, mas funciona para mim em uma área de trabalho e deve funcionar em um laptop. Ele também ignora as configurações do Gnome3, mas é mais fácil do que corrigir o Gnome e recompilar.

De acordo com a página do Arch Wiki, acpidisso provavelmente pode ser implementado modificando-se /etc/acpi/handler.shno Arch.

HankB
fonte
0

Eu trabalhei com esse problema em um servidor meu, monitorando a saída do log, systemd-logindbasicamente refinando as soluções apresentadas em outras respostas.

Esta solução alternativa requer dois arquivos. O script que aciona o evento de desligamento 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

e o arquivo de serviço que o 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
fonte