会话锁定
有许多实用程序可以锁定会话屏幕。但重要的是要注意,要使用的实用程序高度依赖于您所处的环境,无论是虚拟控制台还是特定的显示服务器(Xorg 或 Wayland)。
按环境
虚拟控制台
您可以使用 vlock
或 physlock 来锁定虚拟控制台。
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 信号上的陷阱结合使用以执行锁定。如果没有陷阱,它只会终止 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
可以在 /usr/share/doc/xss-lock
中找到一个示例 dim-screen.sh
脚本。
xautolock
安装 xautolock 软件包。
$ xautolock -time 12 -locker "systemctl suspend" -detectsleep
time
为 1 分钟到 1 小时killtime
为 10 分钟到 2 小时
-detectsleep
以防止 xautolock 在恢复后锁定会话。xautolock 的一个不错的特性是 corners
。Wayland 触发器
swayidle
swayidle 监听来自 Wayland 合成器的空闲活动以及 systemd 事件,并相应地执行命令。参见 Sway#空闲。
hypridle
hypridle Hyprland 的空闲守护程序。有关配置,请参见 上游。
D-Bus 通知
使用 loginctl lock-session
或 logind.conf(5) 中的 lock
操作,您可以通过 DBUS 通知系统您想要锁定。然后可以处理此通知,例如通过 xss-lock。
不活动
在 logind.conf(5) 中,您可以将 IdleAction
配置为 lock
。这将触发 DBUS 通知,该通知将必须被处理(例如通过 xsslock)以锁定会话。
请注意,这是针对全局系统的(因此对于多用户环境来说并不理想)。
另请注意,“这要求用户会话正确地向系统报告空闲状态”。
单元
挂起或休眠前
您可以使用睡眠挂钩。
[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
要为特定用户启用它,启用 sleep@Username.service
。
盖子关闭
您可以使用 lock
操作,使用相关的 ACPI 事件。