Как настроить кнопку питания на отключение вместо приостановки?


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рамках орга> Гном> Настройка-демон> плагины> питания> кнопка действие :

введите описание изображения здесь

поэтому выберите это, чтобы отключить через кнопку питания или, если вы предпочитаете CLI, запустить в терминале:

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

Конечно, для того, чтобы вышесказанное работало, вам также нужны правильные настройки в /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Имейте в виду, что нажатие кнопки питания отключит вашу систему без предупреждения.


6
Это очень обидно, я всегда думал, что Linux - это ОС, где пользователь решает, что ему нужно, даже если это опасно. Но большое спасибо за то, что вы узнали это, по крайней мере, я не трачу свое время на поиск несуществующего исправления.
Конрад Хеффнер

Большое спасибо за подробное решение. Несмотря на наличие 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-daemon 3.20 . (Я думаю. Я еще не обновился до этой версии.)
idbrii

1
@idbrii - у меня для вас плохие новости: я нахожусь на 3.22, и у меня нет возможности выключения.
don_crissti

6

Как объяснил @don_crissti, ситуация глупая, потому что на самом деле невозможно просто отключиться без подтверждения с использованием обычных настроек.

Тем не менее, есть обходной путь: если тип шасси машины установлен на «vm» (виртуальная машина), старое поведение немедленного выключения примет все настройки. Просто введите как root:

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 Server 18.04 с установленным gnome-desktop и в режиме без наушников (не обязательно при подключенном дисплее). Благодарность !
М-Джек

3

В качестве альтернативы, вы можете открыть окно настроек клавиатуры и назначить для команды настраиваемое сочетание клавиш gnome-session-quit --power-off, которое вызовет меню выключения. У меня есть для запуска Super+ q.


2

В качестве первого шага вы должны убедиться, что Настройки | Питание (при условии, что Gnome v3) «Suspend & Power Off» / «Automatic Suspend» отключено. По сути, отключите функции настройки мощности GNOME и просто позвольте системе вступить во владение.


0

Настраиваемое сочетание клавиш работает, я установил его gnome-session-quit --power-off --force, нажав только кнопку питания, и это все, что я хотел.


1
В самом деле? Для меня это не работает. Кнопка по-прежнему ведет себя в соответствии с power-button-actionопцией. Я могу установить Ctrl+PowerOffв качестве сочетания клавиш, однако.
Алексей

Та же проблема для меня. @Alexey
Конрад

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.