アーチ/システムでカバーを閉じるときの画面の一時停止とロック

アーチ/システムでカバーを閉じるときの画面の一時停止とロック

画面をロックしてカバーを閉じたときに一時停止する最も簡単な方法は何ですか?イベントフックを使用していますが、/etc/systemd/logind.confふたを閉めると正常に停止します。しかし、ロック部分に関しては迷子になりました。一部のスクリーンセーバーサービスを有効にする必要があり、どのように2つのイベントを同時にトリガーできますかlogind.conf

答え1

にはいくつかの例があります。アーチスウィキ

デフォルトでは、画面ロック用のサービスファイルを作成し、そのファイルがsuspendhibernateまたはsleepターゲットに接続されていることを確認することが含まれます。

次の簡単な画面ロックを使用する場合ロックする/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の他の例には、他のサービスをオフにして起動するなど、より複雑なオプションがあります。

答え2

Jasonwryanの答えは正確ですが不完全です。一時停止後(以前ではない)、安全にロックするには、ルート以外のプロセスによってカーネルが一時停止されない可能性があるため、以下を追加する必要があります。前=強制インスタンスシステム待つ実行開始に電話するロックする一時停止する前に始めてください。使用睡眠目標一時停止、休止状態、ハイブリッド省電力モードをカバーします。

[Unit]
 Description=Lock
+Before=sleep.target

 [Service]
 User=mustapha
 Environment=DISPLAY=:0
 ExecStart=/usr/local/bin/slock

 [Install]
-WantedBy=suspend.target
+WantedBy=sleep.target

答え3

openrcwithを使用する場合、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

引用:https://gist.github.com/ryukinix/bd0c1ddcbbafdb4149ae70e41b7c822b

正しい動作方法を見つけるのは難しく、このスレッドが「中断後のロック」に関するGoogleの最初の結果中に現れたため、この記事を投稿してください。

答え4

ここに示されているすべての答えには、1つの根本的な欠陥があります。つまり、どの座席/セッションが有効になっているかに関係なく、DISPLAY変数を個別に設定します。これには、独自のシステムサービスファイルを作成する作業が含まれます。

したがって、中断される前にDBUS通知を送信するという事実のため、logind(私の考えではsystemdの一部)を使用することをお勧めします。このメッセージを購読すると、デスクトップ環境で画面ロック機能を実行し、実際に正しい画面/セッションをロックできます。

他にも次のようなものがあります。https://github.com/swaywm/swayidleすでに実装しています。たとえば、私のウィンドウマネージャの設定は次のようになります。

exec swayidle -w \
    timeout 300  'swaylock -i $wallpaper' \
    timeout 600  'swaymsg "output * dpms off"' \
    resume       'swaymsg "output * dpms on"' \
    before-sleep 'swaylock -i $wallpaper' \
    lock         'swaylock -i $wallpaper'

一定時間後、停止前、画面ロックが要求されるたびに自動的に画面をロックします。HandleLidSwitch=lockノートブックがシャットダウンしたときにノートブックをロックするように/etc/systemd/logind.confに設定しました。

編集:また、デスクトップセッションに対してDBUSサポートを有効にする必要があります。コンソールから直接ウィンドウマネージャ(sway)を起動するので、私の呼び出しは次のようになります。

exec dbus-run-session sway

同様に、次の行を使用してXウィンドウマネージャであるi3を起動することもできます(この部分は正しくテストされていません)。~/.xinitrc

exec dbus-launch i3 > /dev/null

編集:この答えが提供されました。たくさん後。この回答が提供された時点で、これがすでに可能かどうかわからず、他の著者の信用を落としたくはありません。

関連情報