Як встановити кнопку живлення для вимкнення, а не призупинення?


17

Я використовую GNOME 3.18.1 на Arch Linux 4.2.5-1-ARCH x86_64 на ноутбуці Dell E6530. Оскільки я встановив цю ОС багато років тому, кнопка живлення на моєму ноутбуці завжди приводила мою ОС до повного вимкнення живлення.

Однак за останні кілька тижнів така поведінка змінилася, так що натискання кнопки живлення зараз переводить мій ноутбук в режим економії енергії. Я не змінив налаштування живлення. pacman -SyyuОднак я завжди постійно оновлюю свою систему , тому підозрюю, що оновлення змінило цю функціональність.

У налаштуваннях живлення для цього немає можливості.

Як я можу відновити початкову поведінку, щоб натискання цієї кнопки вимкнуло систему?


2
@Konrad В якості другого кроку ви можете переконатися, що справді винуватець Gnome. Це припущення. Якщо ви спробуєте змінити мушлі, ви можете чомусь навчитися. Чи можете ви також вказати, які кроки ви зробили для налагодження цієї проблеми.
Сара Вайнбергер

1
Що змінилося? Ви щось модернізували? Яку операційну систему (включаючи версії) ви працюєте? На якому апаратному забезпеченні? Що ти бігав, коли це працювало?
Жил "ТАК - перестань бути злим"

Вибачте за відсутні дані, я оновив свою публікацію.
Конрад Геффнер

Відповіді:


16

Це викликано останніми gnome-settings-daemonоновленнями ...
У налаштуваннях живлення такої опції немає, оскільки її видалили диски 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> plugins> 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не існує зовсім.
Конрад Хьоффнер

Dev змінив своє рішення і відновив інтерактивну опцію в gnome-settings-демон 3.20 . (Я думаю. Я ще не оновлював цю версію.)
idbrii

1
@idbrii - ну, у мене є погані новини для вас: я перебуваю на 3.22, і немає можливості відключення.
don_crissti

6

Як пояснив @don_crissti, ситуація нерозумна, оскільки насправді неможливо просто відключитись без підтвердження, використовуючи звичайні налаштування.

Однак є вирішення: якщо тип шасі машини встановлений на "vm" (віртуальна машина), стара поведінка негайного відключення прийме будь-які налаштування. Просто введіть як корінь:

hostnamectl set-chassis vm

і перезавантажте один раз. Я не знаю жодних побічних ефектів цих налаштувань.


1
Я довго слідкував за цим питанням кнопки живлення зв'язок Наше додаток має безклавіатурні / конфігурацію Mouseless «тільки перегляд» режим , який повинен бути відключений без технічного персоналу щоночі. Коли втрачена можливість вимкнення кнопки живлення, їм потрібно буде просто витягнути вилку. Це рішення чудово працює для нас і є, безумовно, найпростішим підходом для нас.
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, який відкриє меню вимкнення. У мене він встановлений для запуску через Super+ q.


2

В якості першого кроку слід переконатися, що Параметри | Харчування (якщо припустити Gnome v3) "Призупинення та вимкнення живлення" / "Автоматичне призупинення" встановлено на вимкнено. В основному вимкніть функції налаштування живлення GNOME і просто дозвольте системі перейняти її.


0

Працює спеціальна комбінація клавіш, я налаштовую її gnome-session-quit --power-off --force, натискаючи лише кнопку живлення, і це все, що я хотів.


1
Дійсно? Для мене це не працює. Кнопка все ще поводиться відповідно до power-button-actionопції. Ctrl+PowerOffОднак я можу встановити як клавішу швидкого доступу.
Олексій

Та сама проблема для мене. @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.shArch.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.