設定は次のよう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
引数なしで実行すると、既存の抑制因子が一覧表示されます。