電源ボタンをサスペンドではなくシャットダウンに設定する方法は?


17

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

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

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

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


2
@Konrad 2番目のステップとして、実際にGnomeが犯人であることを確認することができます。それは仮定です。シェルを変更しようとすると、何かを学ぶかもしれません。また、この問題をデバッグするために行った手順をリストできますか。
サラワインバーガー

1
何が変わった?何かアップグレードしましたか?どのオペレーティングシステム(バージョンを含む)を実行していますか?どのハードウェアで?それが機能したときに何を実行していましたか?
ジル 'SO-悪であるのをやめる'

情報が不足して申し訳ありませんが、投稿を更新しました。
コンラッドホフナー

回答:


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下の組織> GNOME>設定-デーモン>プラグイン>電源>電源ボタンアクション

ここに画像の説明を入力してください

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

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

確かに、上記が機能するためには、以下の適切な設定も必要です/etc/systemd/logind.conf

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

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


6
それは非常に残念です。Linuxは、たとえ危険であってもユーザーが望むものを決定するOSだといつも思っていました。しかし、これを見つけてくれてありがとう、少なくともその時点で存在しない修正の検索に時間を無駄にしない。
コンラッドホフナー

詳細な解決策をありがとうございます。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」(仮想マシン)に設定されている場合、古い即時シャットダウン動作がすべての設定を引き継ぎます。ルートとして入力するだけです:

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
このソリューションは、私の状況ではうまく機能します。gnome-desktopがインストールされ、ヘッドレスモード(ディスプレイが接続されている場合は必要ありません)のubuntuサーバー18.04。ありがとう!
Mジャック

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
コンラート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基本的に他の回答で提示されたソリューションを改善するログ出力を監視しました。

この回避策には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
# /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.