画面をロックして蓋を閉じるときに一時停止する最も簡単な方法は何ですか?私は/etc/systemd/logind.conf
でイベントフックを使用しており、ふたを閉じると正常に中断します。しかし、ロックの部分に関しては迷っています。スクリーンセーバーサービスを有効にする必要がありますか。また、logind.conf
で2つのイベントを一度にトリガーするにはどうすればよいですか。
Arch Wiki にはいくつかの例があります。
基本的には、画面ロッカーのサービスファイルを作成し、suspend
、hibernate
、またはsleep
ターゲットのいずれかにフックされるようにします。
slock のような単純な画面ロッカーを使用する場合、/etc/systemd/system/lock.service
は次のようになります。
[Unit]
Description=Lock the screen on resume from suspend
[Service]
User=jason
Environment=DISPLAY=:0
ExecStart=/usr/bin/slock
[Install]
WantedBy=suspend.target
Wikiの他の例には、他のサービスのシャットダウンや起動など、より複雑なオプションがあります。
Jasonwryanの応答は正しいですが、不完全です。一時停止の前ではなく安全にロックするために、非ルートプロセスがカーネルの一時停止を妨げる可能性がある場合、Before =インスタンスを追加する必要がありますsystemdを強制しますExecStartslockの呼び出しが開始するのを待ってから、一時停止します。 sleep.targetを使用すると、サスペンド、ハイバネート、ハイブリッドスリープがカバーされます。
[Unit]
Description=Lock
+Before=sleep.target
[Service]
User=mustapha
Environment=DISPLAY=:0
ExecStart=/usr/local/bin/slock
[Install]
-WantedBy=suspend.target
+WantedBy=sleep.target
openrc
をelogind
とともに使用する場合、代替の解決策があります(systemdに依存しません)。
#!/bin/sh
#
# /lib/elogind/system-sleep/lock.sh
# Lock before suspend integration with elogind
username=lerax
userhome=/home/$username
export XAUTHORITY="$userhome/.Xauthority"
export DISPLAY=":0.0"
case "${1}" in
pre)
su $username -c "/usr/bin/slock" &
sleep 1s;
;;
esac
ref: https://Gist.github.com/ryukinix/bd0c1ddcbbafdb4149ae70e41b7c822b
これが機能する適切な方法を見つけることが非常に困難であり、このスレッドが「サスペンド後のロック」などについてのグーグルの最初の結果に表示されるため、これを投稿しています。