実行中に systemd HandleLidSwitch 設定を変更しますか?

実行中に systemd HandleLidSwitch 設定を変更しますか?

設定は次のようHandleLidSwitchに定義されます/etc/systemd/logind.conf

HandleLidSwitch=<hibernate,ignore,...>

設定は起動時に正常に適用されます。ただし、AC の状態に応じて実行中に設定を変更したいと思います。

ノートパソコンが充電中の場合は を使用しますHandleLidSwitch=ignore。ノートパソコンがバッテリー駆動の場合は を使用します HandleLidSwitch=suspend

これを現在の systemd で実現することは可能でしょうか?

答え1

logindはインヒビターロックユーザー ソフトウェアがシステム ポリシーをオーバーライドできるようにするメカニズム。たとえば、Gnome がアクティブである限り、すべての ACPI ボタン​​とスイッチを制御できます。これを使用して、デバイスが接続されているときに「ハンドル、蓋、スイッチ」を禁止し、デバイスが取り外されたときにロックを解除することができます。

最良のアプローチは、DBus バインディングのある言語でスクリプトを記述し、logind のInhibit()方法を使用することですが、systemd はsystemd-inhibitシェル スクリプトから使用できるコマンドを提供しています。これは、子プロセスが終了するまでロックを保持するラッパーとして使用することを意図していることに注意してください。

systemd-inhibit --what=handle-lid-switch SOME_COMMAND_HERE

PS これはすべて、すでに「handle-lid-switch」をブロックしているデスクトップ環境を使用していないことを前提としています。systemd-inhibit引数なしで実行すると、既存の抑制因子が一覧表示されます。

関連情報