web-dev-qa-db-ja.com

電源ボタンを一時停止ではなくシャットダウンに設定するにはどうすればよいですか?

私はGNOME 3.18.1 on Arch Linux 4.2.5-1-Arch x86_64をDell E6530ラップトップで使用しています。私がこのOSを何年も前にインストールしてから、私のラップトップの電源ボタンはいつも私のOSを完全にパワーダウンさせてきました。

ただし、ここ数週間でこの動作が変更されたため、電源ボタンを押すとラップトップが省電力モードになります。電源設定は変更しませんでした。私は常にpacman -Syyuを使用してシステムを最新の状態に保つので、更新によりこの機能が変更されたと思われます。

電源設定では、このオプションはありません。

最初の動作を復元して、そのボタンを押すとシステムの電源がオフになるようにするにはどうすればよいですか?

17
Konrad Höffner

最新のgnome-settings-daemonの更新が原因です...
GNOME開発者によって削除されたshutdown/power offアクションが考慮されるため、power settingsにはそのようなオプションはありません "破壊的すぎる" )。
結論:電源オフボタンを押すことで、ラップトップの電源をオフできなくなります


ただし、gnome-settings-daemonにパッチを適用して再構築する場合は、設定デーモンの電源プラグインに新しいdconf/gsettingsオプション(つまり、shutdown)を追加できます。

--- 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-editororg> gnome> settings-daemon> plugins> power> power-button-actionで利用できるようになります

enter image description here

電源ボタンでシャットダウンするか、CLIを使用する場合はターミナルで実行するかを選択します。

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

もちろん、上記が機能するためには、/etc/systemd/logind.confの適切な設定も必要です。

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

電源ボタンを押すと、警告なしにシステムがシャットダウンすることに注意してください。

16
don_crissti

@don_crisstiが説明したように、通常の設定を使用して確認せずにシャットダウンすることは実際には不可能であるため、状況はばかげています。

ただし、回避策があります。マシンのシャーシタイプが「vm」(仮想マシン)に設定されている場合、以前の即時シャットダウン動作がすべての設定を引き継ぎます。ルートとして入力するだけです:

hostnamectl set-chassis vm

一度再起動します。この設定の副作用は知りません。

6
Lorenzo Pistone

Ubuntu 18.04またはacpiを使用する同様のLinuxバリアント(インストールできない場合)で、/etc/acpi/events/powerというファイルを

Sudo nano /etc/acpi/events/power

そして、置きます

event=button/power
action=/sbin/poweroff

ファイル内で閉じてから

Sudo service acpid restart

これはおそらく確実に機能する最も簡単なソリューションです。

4
Seungmin Kim

別の方法として、キーボード設定ウィンドウを開き、カスタムキーボードショートカットをコマンドgnome-session-quit --power-offに割り当てると、シャットダウンメニューが表示されます。トリガーするように設定されています Super+q

3
joelostblom

最初のステップとして、次のことを確認する必要があります。電源(Gnome v3を想定)の「サスペンドと電源オフ」/「自動サスペンド」がオフに設定されています。基本的には、GNOME電源設定機能を無効にして、システムに引き継がせるだけです。

2

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にパッチを適用して再コンパイルするよりも簡単です。

acpidのArch Wikiページによると、これはおそらくArchの/etc/acpi/handler.shを変更することで実装できます。

0
HankB

カスタムキーボードショートカットが機能するので、電源ボタンのみを押してgnome-session-quit --power-off --forceに設定しました。

0
xxx

私のサーバーでこの問題を回避するには、systemd-logindのログ出力を監視し、他の回答で提示されたソリューションを基本的に調整しました。

この回避策には2つのファイルが必要です。実際のシャットダウンイベントをトリガーするスクリプト

$ 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
# https://unix.stackexchange.com/questions/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
0
dwt