Bagaimana cara mengatur tombol power ke shutdown bukannya suspend?

17

Saya menggunakan GNOME 3.18.1 di Arch Linux 4.2.5-1-ARCH x86_64 pada laptop Dell E6530. Sejak saya menginstal OS ini bertahun-tahun yang lalu, tombol power di laptop saya selalu membuat OS saya benar-benar mati.

Namun, dalam beberapa minggu terakhir perilaku ini telah berubah, sehingga menekan tombol daya sekarang menempatkan laptop saya ke mode hemat energi. Saya tidak mengubah pengaturan daya saya. Namun saya selalu menjaga agar sistem saya tetap mutakhir pacman -Syyu, jadi saya menduga bahwa pembaruan mengubah fungsi ini.

Dalam pengaturan daya tidak ada opsi untuk ini.

Bagaimana saya bisa mengembalikan perilaku awal, sehingga menekan tombol itu mematikan sistem?

Konrad Höffner
sumber
2
@Konrad Sebagai langkah kedua, Anda mungkin ingin memverifikasi bahwa memang Gnome adalah penyebabnya. Itu asumsi. Jika Anda mencoba mengganti kerang, Anda dapat mempelajari sesuatu. Bisakah Anda juga mencantumkan langkah-langkah apa yang Anda lakukan untuk men-debug masalah ini.
Sarah Weinberger
1
Apa yang berubah? Apakah Anda meningkatkan sesuatu? Sistem operasi apa (termasuk versi) yang Anda jalankan? Pada perangkat keras apa? Apa yang Anda jalankan saat itu berhasil?
Gilles 'SANGAT berhenti menjadi jahat'
Maaf atas informasi yang hilang, saya memperbarui posting saya.
Konrad Höffner

Jawaban:

16

Itu disebabkan oleh gnome-settings-daemonpembaruan terbaru ...
Tidak ada opsi seperti itu di pengaturan daya karena telah dihapus oleh dev GNOME ( shutdown/power offtindakan dianggap "terlalu merusak" ).
Intinya: Anda tidak dapat lagi mematikan laptop dengan menekan tombol power off .


Namun Anda dapat menambahkan dconf/ gsettingsopsi baru (yaitu shutdown) ke pengaturan daemon power plugin jika Anda bersedia untuk menambal dan membangun kembali 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;

Setelah Anda menginstal versi yang ditambal, shutdownopsi baru akan tersedia di dconf-editorbawah org> gnome> settings-daemon> plugins> power> power-button-action :

masukkan deskripsi gambar di sini

jadi pilih itu untuk dimatikan melalui tombol daya atau, jika Anda lebih suka CLI, jalankan di terminal:

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

Tentu, agar cara di atas berfungsi, Anda juga memerlukan pengaturan yang tepat di /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Ingatlah bahwa menekan tombol daya akan mematikan sistem Anda tanpa peringatan apa pun.

don_crissti
sumber
6
Itu sangat mengecewakan, saya selalu berpikir Linux adalah OS di mana pengguna memutuskan apa yang dia inginkan walaupun itu berbahaya. Tetapi terima kasih banyak untuk mengetahui ini, setidaknya saya tidak membuang waktu saya untuk mencari perbaikan yang tidak ada.
Konrad Höffner
Terima kasih banyak atas solusi terperincinya. Meskipun memiliki gnome-settings-daemon 3.18.2-1, instalasi saya memiliki file yang berbeda, namun: gsd-enums.hada di folder /usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/dan gsd-media-keys-manager.ctidak ada sama sekali.
Konrad Höffner
Dev telah membalikkan keputusannya dan mengembalikan opsi interaktif di gnome-settings-daemon 3.20 . (Saya pikir. Saya belum memperbarui ke versi itu.)
idbrii
1
@ idbrii - yah, saya punya kabar buruk untuk Anda: Saya di 3.22 dan tidak ada opsi mematikan.
don_crissti
6

Seperti yang dijelaskan @don_crissti, situasinya konyol karena benar-benar tidak mungkin mematikan hanya tanpa konfirmasi menggunakan pengaturan normal.

Namun, ada solusinya: jika jenis sasis mesin diatur ke "vm" (mesin virtual), perilaku shutdown langsung lama akan mengambil alih pengaturan apa pun. Cukup masukkan sebagai root:

hostnamectl set-chassis vm

dan reboot sekali. Saya tidak tahu ada efek samping dari pengaturan ini.

Lorenzo Pistone
sumber
1
Saya telah mengikuti masalah tombol daya ini untuk tautan lama . Aplikasi kami memiliki mode "lihat saja" tanpa papan ketik / konfigurasi yang perlu dimatikan oleh staf non-teknis setiap malam. Ketika kemampuan mematikan dengan tombol power hilang, mereka hanya perlu menarik stekernya. Solusi ini sangat bagus bagi kami dan sejauh ini merupakan pendekatan termudah bagi kami.
MikeV
4

Di Ubuntu 18.04 atau varian Linux yang serupa dengan acpi (jika tidak, Anda mungkin dapat menginstal), buat sebuah file bernama /etc/acpi/events/powerwith

sudo nano /etc/acpi/events/power

dan taruh

event=button/power
action=/sbin/poweroff

di dalam file, tutup, lalu

sudo service acpid restart

Ini mungkin solusi paling sederhana yang pasti berhasil.

Seungmin Kim
sumber
1
Solusi ini berfungsi dengan baik dalam situasi saya: server ubuntu 18.04 dengan gnome-desktop terpasang dan dalam mode tanpa kepala (tidak diperlukan ketika layar terhubung). Terima kasih!
M-Jack
3

Sebagai alternatif, Anda dapat membuka jendela pengaturan keyboard dan menetapkan pintasan keyboard khusus untuk perintah gnome-session-quit --power-off, yang akan memunculkan menu shutdown. Saya sudah mengaturnya untuk memicu oleh Super+ q.

joelostblom
sumber
2

Sebagai langkah pertama, Anda harus memastikan bahwa Pengaturan | Daya (dengan asumsi Gnome v3) "Menangguhkan & Menonaktifkan" / "Menunda Otomatis" dimatikan. Pada dasarnya, nonaktifkan fitur pengaturan daya GNOME dan biarkan sistem mengambil alih.

Sarah Weinberger
sumber
0

Pintasan keyboard khusus berfungsi, saya mengaturnya gnome-session-quit --power-off --forcedengan hanya menekan tombol daya, yang saya inginkan.

xxx
sumber
1
Betulkah? Bagi saya ini tidak berhasil. Tombol masih berlaku sesuai power-button-actionpilihan. Namun saya dapat menetapkan Ctrl+PowerOffsebagai tombol pintas.
Alexey
Masalah yang sama bagi saya. @Alexey
Konrad Höffner
0

Saya menemukan opsi lain untuk mencapai ini di Debian Stretch. Saya menginstal paket acpi-support-basedan mengedit file /etc/acpi/powerbtn-acpi-support.shmenambahkan baris berikut mengikuti komentar header dan sebelum kode apa pun.

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

Ini sedikit instrumen tumpul tetapi bekerja untuk saya di desktop dan harus bekerja pada laptop. Ini juga mem-bypass pengaturan Gnome3 tetapi lebih mudah daripada menambal Gnome dan mengkompilasi ulang.

Menurut halaman Arch Wiki pada acpidini mungkin dapat diimplementasikan dengan memodifikasi /etc/acpi/handler.shpada Arch.

HankB
sumber
0

Saya mengatasi masalah ini pada server saya dengan memonitor output log systemd-logindpada dasarnya memperbaiki solusi yang disajikan dalam jawaban lain.

Solusi ini membutuhkan dua file. Script yang memicu acara shutdown yang sebenarnya

$ 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

dan file layanan yang memulai / me-restart-nya

$ 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
sumber