1 个不稳定版本

0.1.0 2023年12月29日

#529 in Unix APIs

MIT 许可证

68KB
1.5K SLoC

megalock: X11 xlock 替代品

目前,这是一个在 Rust 中实现最小 xlock 替代品的底层。它仅与 X11 兼容,但执行以下功能:

  • 无论监视器配置如何,都会使整个屏幕变暗
  • 捕获键盘和指针设备
  • 将所有输入缓冲到密码中
  • 通过 PAM 执行所有密码检查
  • 按下回车键时,验证密码
    • 成功时,程序退出
    • 失败时,程序清除密码字段并继续
  • 此外,以下环境变量也被尊重
    • TRACE=1:启用 Trace(最低)级别调试
    • DEBUG=1:启用 Debug 级别日志记录 -- 大多数状态更改,但没有原始数据
    • EXIT_TRAP=n:在 n 秒后强制终止程序

显示锁屏时不会显示事件指示。目前正在修复此问题。

事件都是合成的,然后被翻译成 X11 调用,在一个专用线程中。这应该使得在不破坏 X11 合同的情况下轻松移植到 wayland 成为可能,使 megalock 能够与两个系统本地工作。

优化后的二进制文件大小约为 730k,这是一个令人愉快的发现。我们将看看这个是否可行。

PAM 配置

如果您使用 megalock,请确保将 contrib/megalock 放在 /etc/pam.d 中,以便 megalock 能够有效地使用 PAM 子系统。 megalock 可能不会在 OpenBSD 上工作。

谢谢

特别感谢 Michael Stapelberg,他写了 i3lock,我在学习如何编写此程序时花了很多时间阅读它。

作者

Erik Hollensbe [email protected]

许可证

MIT

依赖关系

~1.3–3.5MB
~62K SLoC