วิธีการตั้งค่าปุ่มเพาเวอร์เป็นปิดแทนที่จะระงับ?


17

ฉันใช้GNOME 3.18.1กับArch Linux 4.2.5-1-ARCH x86_64บนแล็ปท็อป Dell E6530 ตั้งแต่ฉันติดตั้งระบบปฏิบัติการนี้เมื่อหลายปีก่อนปุ่มเปิดปิดบนแล็ปท็อปของฉันทำให้ระบบปฏิบัติการของฉันปิดตัวเองอย่างสมบูรณ์

อย่างไรก็ตามในช่วงสองสามสัปดาห์ที่ผ่านมาพฤติกรรมนี้เปลี่ยนไปดังนั้นการกดปุ่มเปิด - ปิดเครื่องจะทำให้แล็ปท็อปของฉันเข้าสู่โหมดประหยัดพลังงาน ฉันไม่ได้เปลี่ยนการตั้งค่าพลังงานของฉัน ฉันใช้ระบบของฉันให้ทันสมัยอยู่เสมอpacman -Syyuดังนั้นฉันสงสัยว่าการอัปเดตจะเปลี่ยนการทำงานนี้

ในการตั้งค่าพลังงานไม่มีตัวเลือกสำหรับสิ่งนี้

ฉันจะคืนค่าการทำงานเริ่มต้นได้อย่างไรเพื่อให้การกดปุ่มนั้นปิดระบบ


2
@ Konrad เป็นขั้นตอนที่สองคุณอาจต้องการตรวจสอบว่า Gnome เป็นผู้ร้ายแน่นอน นั่นคือสมมติฐาน หากคุณลองเปลี่ยนเปลือกหอยคุณอาจเรียนรู้บางอย่าง คุณสามารถระบุขั้นตอนที่คุณใช้ในการแก้ไขปัญหานี้ได้หรือไม่
Sarah Weinberger

1
มีอะไรเปลี่ยนแปลง คุณอัพเกรดบางสิ่ง คุณใช้ระบบปฏิบัติการใด (รวมถึงรุ่น) เกี่ยวกับฮาร์ดแวร์อะไร คุณทำงานอะไรเมื่อทำงาน
Gilles 'หยุดความชั่วร้าย'

ขออภัยสำหรับข้อมูลที่ขาดหายไปฉันอัพเดตโพสต์ของฉัน
Konrad Höffner

คำตอบ:


16

เกิดจากการgnome-settings-daemonอัปเดตล่าสุด...
ไม่มีตัวเลือกดังกล่าวในการตั้งค่าพลังงานเพราะdevs GNOMEถูกลบออกไป (การshutdown/power offกระทำนั้นถือว่า"ทำลายมากเกินไป" )
บรรทัดด้านล่าง: คุณสามารถไม่มีอำนาจอีกต่อไปปิดแล็ปท็อปของคุณโดยการกดปิดปุ่ม


อย่างไรก็ตามคุณสามารถเพิ่มใหม่dconf/ gsettingsตัวเลือก (เช่นshutdown) ในปลั๊กอินพลังงานการตั้งค่าภูตหากคุณยินดีที่จะแก้ไขและสร้างใหม่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;

เมื่อคุณติดตั้งเวอร์ชันที่ติดตั้งแล้วshutdownตัวเลือกใหม่จะพร้อมใช้งานdconf-editorภายใต้org> gnome> settings-daemon> ปลั๊กอิน> power> power-button-action :

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นให้เลือกที่จะปิดเครื่องผ่านปุ่มเพาเวอร์หรือหากคุณต้องการ CLI ให้รันในเทอร์มินัล:

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

แน่นอนว่าสำหรับการทำงานข้างต้นคุณต้องมีการตั้งค่าที่เหมาะสมใน/etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

โปรดทราบว่าการกดปุ่มเปิดปิดจะเป็นการปิดระบบโดยไม่มีการเตือนล่วงหน้า


6
มันน่าผิดหวังมากฉันคิดเสมอว่า Linux เป็นระบบปฏิบัติการที่ผู้ใช้ตัดสินใจในสิ่งที่เขาต้องการแม้ว่าจะเป็นอันตราย แต่ขอบคุณมากสำหรับการค้นพบสิ่งนี้อย่างน้อยฉันก็ไม่เสียเวลาในการค้นหาการแก้ไขที่ไม่มีอยู่แล้ว
Konrad Höffner

ขอบคุณมากสำหรับคำตอบอย่างละเอียด แม้จะมี gnome-settings-daemon 3.18.2-1 แต่การติดตั้งของฉันก็มีไฟล์ต่างกันอย่างไรก็ตาม: gsd-enums.hอยู่ในโฟลเดอร์/usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/และgsd-media-keys-manager.cไม่มีอยู่เลย
Konrad Höffner

Dev ได้กลับตัดสินใจของเขาและเรียกคืนตัวเลือกโต้ตอบในgnome-ตั้งค่าภูต 3.20 (ผมคิดว่าผมยังไม่ได้ปรับปรุงให้เป็นรุ่นที่ยัง..)
idbrii

1
@idbrii - ดีฉันมีข่าวร้ายสำหรับคุณ: ฉันอยู่ที่ 3.22 และไม่มีตัวเลือกการปิด
don_crissti

6

ตามที่ @don_crissti อธิบายแล้วสถานการณ์นั้นโง่เพราะมันเป็นไปไม่ได้ที่จะปิดตัวลงโดยไม่ได้รับการยืนยันจากการตั้งค่าปกติ

อย่างไรก็ตามมีวิธีแก้ไข: หากประเภทแชสซีของเครื่องถูกตั้งค่าเป็น "vm" (เครื่องเสมือน) พฤติกรรมการปิดเครื่องแบบเก่าในทันทีจะเข้าแทนที่การตั้งค่าใด ๆ เพียงป้อนเป็นรูต:

hostnamectl set-chassis vm

และรีบูตหนึ่งครั้ง ฉันไม่รู้ผลข้างเคียงของการตั้งค่านี้


1
ฉันได้ติดตามปัญหาของปุ่มเปิดปิดสำหรับการเชื่อมโยงเป็นเวลานานแอปพลิเคชันของเรามีการกำหนดค่าแบบ "ดูอย่างเดียว" โดยไม่ใช้คีย์บอร์ด เมื่อความสามารถในการปิดระบบโดยใช้ปุ่มเปิดปิดหายไปพวกเขาจะต้องดึงปลั๊กออก โซลูชันนี้ใช้งานได้ดีสำหรับเราและเป็นวิธีที่ง่ายที่สุดสำหรับเรา
MikeV

4

ใน Ubuntu 18.04 หรือตัวแปร Linux ที่คล้ายกันที่มี acpi (หากไม่ใช่คุณสามารถติดตั้งได้) ให้สร้างไฟล์ที่เรียก/etc/acpi/events/powerด้วย

sudo nano /etc/acpi/events/power

และใส่

event=button/power
action=/sbin/poweroff

ภายในไฟล์ให้ปิดแล้ว

sudo service acpid restart

นี่อาจเป็นทางออกที่ง่ายที่สุดที่ใช้งานได้จริง


1
โซลูชันนี้ใช้งานได้ดีในสถานการณ์ของฉัน: เซิร์ฟเวอร์ ubuntu 18.04 ที่ติดตั้ง gnome-desktop และอยู่ในโหมดหัวขาด (ไม่จำเป็นเมื่อเชื่อมต่อจอแสดงผล) ขอบคุณมาก!
M-Jack

3

คุณสามารถเปิดหน้าต่างการตั้งค่าแป้นพิมพ์และกำหนดแป้นพิมพ์ลัดที่กำหนดเองให้กับคำสั่งgnome-session-quit --power-offซึ่งจะเปิดเมนูปิด ฉันมีมันตั้งค่าการเรียกโดย+Superq


2

เป็นขั้นตอนแรกคุณควรตรวจสอบให้แน่ใจว่าการตั้งค่า | กำลังไฟ (สมมติว่า Gnome v3) "ระงับและปิดเครื่อง" / "ระงับอัตโนมัติ" ถูกตั้งเป็นปิด โดยทั่วไปให้ปิดการใช้งานฟีเจอร์การตั้งค่าพลังงานของ GNOME และเพียงแค่ให้ระบบครอบครอง


0

แป้นพิมพ์ลัดที่กำหนดเองใช้งานได้ฉันตั้งค่าไว้gnome-session-quit --power-off --forceโดยกดปุ่มเปิดปิดเท่านั้นซึ่งเป็นสิ่งที่ฉันต้องการทั้งหมด


1
จริงๆ? สำหรับฉันมันไม่ทำงาน ปุ่มยังคงทำงานตามpower-button-actionตัวเลือก ฉันสามารถตั้งค่าCtrl+PowerOffเป็นปุ่มทางลัดได้
Alexey

ปัญหาเดียวกันสำหรับฉัน @Alexey
Konrad Höffner

0

ฉันพบตัวเลือกอื่นเพื่อทำให้สิ่งนี้สำเร็จบน Debian Stretch ฉันติดตั้งแพคเกจacpi-support-baseและแก้ไขไฟล์/etc/acpi/powerbtn-acpi-support.shเพิ่มบรรทัดต่อไปนี้ตามความคิดเห็นส่วนหัวและก่อนรหัสใด ๆ

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

นี่เป็นเครื่องมือทื่อ ๆ แต่เหมาะกับฉันบนเดสก์ท็อปและควรใช้กับแล็ปท็อป นอกจากนี้ยังข้ามการตั้งค่า Gnome3 แต่ทำได้ง่ายกว่าการแก้ไข Gnome และการคอมไพล์ซ้ำ

ตามหน้า Arch Wiki ในacpidเรื่องนี้อาจจะสามารถนำไปใช้ได้โดยการแก้ไข/etc/acpi/handler.shบน Arch


0

ฉันแก้ไขปัญหานี้บนเซิร์ฟเวอร์ของฉันโดยการตรวจสอบบันทึกผลลัพธ์ของsystemd-logindการปรับแต่งโซลูชันที่เสนอในคำตอบอื่น ๆ

วิธีแก้ปัญหานี้ต้องใช้สองไฟล์ สคริปต์ที่ก่อให้เกิดเหตุการณ์การปิดระบบจริง

$ 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

และไฟล์บริการที่เริ่มต้น / รีสตาร์ท

$ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.