Linux でノートパソコンのフタを開いた時にスリープから復帰しないようにする

ノートパソコンをスリープにしたつもりで数時間持ち歩いて、次に開いた時は本体が激熱、バッテリーが残り5%みたいな事象、たまによくあって非常に厄介ですよね。
あれはなにかのきっかけで勝手にスリープから戻ってしまっていて、バッテリーが残り5%になった時に電源管理がまたスリープにしてくれてる、という感じだと思っていたので、電源ボタンを押したとき以外は一切スリープから戻らないようにします。

acpid とかが必要かもしれない。それと Arch Linux / KDE な ThinkPad X240 でしか検証してない。

だいたい使えそうな方法

/proc/acpi/wakeup を見てみると

Device  S-state   Status   Sysfs node
LID       S4    *enabled 
SLPB      S3    *enabled 
IGBE      S4    *enabled   pci:0000:00:19.0
EXP2      S4    *disabled  pci:0000:00:1c.1
XHCI      S3    *enabled   pci:0000:00:14.0
EHC1      S3    *enabled   pci:0000:00:1d.0

こんな感じのイカニモなリストが出てくる。今回の目的は LID ただそれだけ、なのでそれを書き換えてやる。
書き換えかたは root で

echo LID > /proc/acpi/wakeup

ってやってあげると LID の Status がトグルされる。実行結果は

Device  S-state   Status   Sysfs node
LID       S4    *disabled
SLPB      S3    *disabled
IGBE      S4    *disabled  pci:0000:00:19.0
EXP2      S4    *disabled  pci:0000:00:1c.1
XHCI      S3    *disabled  pci:0000:00:14.0
EHC1      S3    *enabled   pci:0000:00:1d.0

なぜか LID 以外もほとんど disabled になってしまった。理由は分からん。
多分これでうまく行くはず。

XHCI / EHCI は USB まわりの何かだった気がするけど、SLP8, IGBE, EXP2 は見たことも聞いたこともないのでご存知の方教えてください……。

あなたが systemd を溺愛している場合に使えそうな方法

systemd はなんでもできるからね。

この方法に関しては GNOME とか KDE みたいなマシマシWMを使ってる場合はそいつらが systemd の電源管理を “inhibit” して、無効にしてるらしい、ので使えないらしい。
Power Management – ArchWiki に2行ぐらい書いてる。

/etc/systemd/logind.conf の中で

HandleLidSwitch=ignore

にして、systemd-logind を restart するだけ。自分の環境では効かなかった。

下の方に LidSwitchIgnoreInhibited がコメントアウトされていたが、こちらも特に効果はなかった。