会话锁定
有许多工具可以锁定会话屏幕。但重要的是要注意,使用的工具高度依赖于您所处的环境,无论是虚拟控制台还是特定的显示服务器(Xorg 或 Wayland)。
参见 List of applications/Security#Screen lockers。
按环境
虚拟控制台
您可以使用 vlock 或 physlockAUR 来锁定虚拟控制台。
Xorg
在 Xorg 下锁定会话有许多方法,因此本节可能不完整。但一些方法包括
xlock,在 xlockmore 包中 -xsecurelock,在 xsecurelock 包中xscreensaver-command -lock,在 xscreensaver 包中- xss-lock
- slock,在 slock 包中
- kscreenlocker
- i3lock
- i3lock-colorAUR
- alockAUR
大多数桌面环境都提供某种方式来锁定会话。
Wayland
您可以通过以下任一方法锁定会话
触发锁定
您可以通过不同方法锁定会话
- 从终端
- 使用 GUI
- 从桌面图标
- 使用热角
- 从菜单(鼠标或键盘驱动)
- 从 快捷方式
- 从事件
- 不活动(使用 systemd、xss-lock 或 xautolock)
- systemd 事件(挂起、休眠等)
最后一点(从事件触发锁定)是最棘手的,因为您可以通过两种方式之一来做到这一点:
- 使操作触发器执行锁定,然后执行初始操作。
- 从事件触发器开始,将锁定添加到事件链中。到目前为止,只能通过 systemd 来完成。
Shell 触发器
Zsh
要在终端不活动后执行命令,您可以使用 TMOUT 环境变量。
您可以将其与 ALARM 信号的 trap 结合使用来执行锁定。如果没有 trap,它将仅终止 shell。
您可能需要检测您是否处于图形环境中,否则您的 GUI 终端可能会在您不知情的情况下消失。
Xorg 触发器
xss-lock
xss-lock 由以下两种情况之一触发:
- systemd 事件
- DPMS
这样做的优点是,您可以在同一个地方控制手动锁定、因不活动而锁定以及通过挂起命令锁定。
要对其中一个事件执行操作
$ xss-lock locker-utility
systemd 事件
默认情况下,xss-lock 订阅 suspend、hibernate、lock-session 和 unlock-session,并带有相应的操作(运行锁定器并等待用户解锁或终止锁定器)。
您可以使用 --ignore-sleep 来阻止 xss-lock 被 suspend 和 hibernate 触发。
您可以使用 loginctl lock-session 手动触发锁定,或使用 loginctl lock-sessions 锁定所有当前会话。
DPMS
配置 DPMS 信号超时
# Trigger screensaver after 10 minutes of inactivity xset s on xset s 600
DPMS 信号也可以在 /etc/X11/xorg.conf.d/ 的 Monitor 部分进行配置。
使用 DPMS 信号,您可以设置第二个计时器,例如通知用户或调暗屏幕。例如(来自 xss-lock(1))
# Dim the screen after three minutes of inactivity, lock the screen two minutes later using i3lock: xset s 180 120 xss-lock -n dim-screen.sh -- i3lock -n
一个示例 dim-screen.sh 脚本可以在 /usr/share/doc/xss-lock 中找到。
xautolock
安装 xautolockAUR 包。
$ xautolock -time 12 -locker "systemctl suspend" -detectsleep
time的时间为 1 分钟到 1 小时killtime的时间为 10 分钟到 2 小时
-detectsleep 来防止 xautolock 在恢复后锁定会话。xautolock 的一个不错的特性是 corners。Wayland 触发器
swayidle
swayidle 侦听来自 Wayland 合成器的空闲活动以及 systemd 事件,并相应地执行命令。参见 Sway#Idle。
hypridle
hypridle Hyprland 的空闲守护进程。请参阅 上游以获取配置。
D-Bus 通知
使用 loginctl lock-session 或 logind.conf(5) 中的 lock 操作,您可以向系统通过 DBUS 发出锁定请求。此通知随后可以被处理,例如由 xss-lock。
非活跃 (Inactivity)
在 logind.conf(5) 中,您可以将 IdleAction 配置为 lock。这将触发一个 DBUS 通知,必须进行处理(例如通过 xsslock)才能锁定会话。
请注意,这是针对全局系统的(因此不适用于多用户环境)。
另请注意,“这要求用户会话正确地向系统报告空闲状态”。
单元
休眠或冬眠前
您可以使用 Sleep hook。
[Unit] Description=Lock the screen Before=sleep.target [Service] User=%I Type=forking Environment=DISPLAY=:0 ExecStart=/usr/bin/i3lock -c 000000 [Install] WantedBy=sleep.target
要为特定用户启用它,请 enable sleep@Username.service。
合上盖子
您可以使用与 ACPI event 相关的 lock 操作。