跳转至内容

会话锁定

来自 ArchWiki

有许多工具可以锁定会话屏幕。但重要的是要注意,使用的工具高度依赖于您所处的环境,无论是虚拟控制台还是特定的显示服务器(Xorg 或 Wayland)。

参见 List of applications/Security#Screen lockers

按环境

本文档或章节候选合并至 List of applications/Security#Screen lockers

注意: 目的相同,仅按类别划分。(在 Talk:Session lock 中讨论)

虚拟控制台

您可以使用 vlockphyslockAUR 来锁定虚拟控制台。

Xorg

在 Xorg 下锁定会话有许多方法,因此本节可能不完整。但一些方法包括

大多数桌面环境都提供某种方式来锁定会话。

Wayland

您可以通过以下任一方法锁定会话

触发锁定

您可以通过不同方法锁定会话

最后一点(从事件触发锁定)是最棘手的,因为您可以通过两种方式之一来做到这一点:

  • 使操作触发器执行锁定,然后执行初始操作。
  • 从事件触发器开始,将锁定添加到事件链中。到目前为止,只能通过 systemd 来完成。

Shell 触发器

Zsh

要在终端不活动后执行命令,您可以使用 TMOUT 环境变量。

您可以将其与 ALARM 信号的 trap 结合使用来执行锁定。如果没有 trap,它将仅终止 shell。

您可能需要检测您是否处于图形环境中,否则您的 GUI 终端可能会在您不知情的情况下消失。

Xorg 触发器

xss-lock

xss-lock 由以下两种情况之一触发:

这样做的优点是,您可以在同一个地方控制手动锁定、因不活动而锁定以及通过挂起命令锁定。

要对其中一个事件执行操作

$ xss-lock locker-utility
systemd 事件

默认情况下,xss-lock 订阅 suspendhibernatelock-sessionunlock-session,并带有相应的操作(运行锁定器并等待用户解锁或终止锁定器)。

您可以使用 --ignore-sleep 来阻止 xss-lock 被 suspendhibernate 触发。

您可以使用 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 中找到。

注意 使用 xss-lock 和 DPMS 时,您需要自己使屏幕变黑。观看视频时不会触发。

xautolock

安装 xautolockAUR 包。

$ xautolock -time 12 -locker "systemctl suspend" -detectsleep
注意 xautolock 的计时器限制很严格
  • time 的时间为 1 分钟到 1 小时
  • killtime 的时间为 10 分钟到 2 小时
可能需要添加 -detectsleep 来防止 xautolock 在恢复后锁定会话。xautolock 的一个不错的特性是 corners

Wayland 触发器

swayidle

swayidle 侦听来自 Wayland 合成器的空闲活动以及 systemd 事件,并相应地执行命令。参见 Sway#Idle

hypridle

hypridle Hyprland 的空闲守护进程。请参阅 上游以获取配置。

D-Bus 通知

使用 loginctl lock-sessionlogind.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 操作。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.