1 unstable release
0.1.0 | Dec 29, 2023 |
---|
#998 in Unix APIs
68KB
1.5K
SLoC
megalock: X11 xlock replacement
This currently is a substrate for a minimal xlock replacement in Rust. It is only functional with X11, but performs the following functions:
- Blanks the entire screen regardless of monitor configuration
- Grabs the keyboard and pointing devices
- Buffers all input into a password
- Performs all password checking through PAM
- Upon pressing enter, verifies that password
- On success, the program exits
- On failure, the program clears the password field and continues
- Additionally, the following environment variables are respected:
TRACE=1
: Enable Trace (lowest) level debuggingDEBUG=1
: Enable Debug level logging -- most status changes, but no raw dataEXIT_TRAP=n
: Forcefully terminate the program aftern
seconds
It performs no indication of events while displaying the lock screen. This is being worked on now.
Events are all synthetic, which are then translated to X11 calls in a dedicated thread. This should allow for easy porting to wayland later without breaking the X11 contract, allowing megalock
to work with both systems natively.
Optimized binary size is about 730k, which was a nice discovery. We'll see if that sticks.
PAM configuration
If you use megalock
, be sure to put contrib/megalock in /etc/pam.d
so that megalock can use the PAM subsystem effectively. megalock
may not work on OpenBSD.
Thanks
Special thanks to Michael Stapelberg, who wrote i3lock
, I spent a lot of time reading it while learning how to write this program.
Author
Erik Hollensbe git@hollensbe.org
License
MIT
Dependencies
~1.3–3.5MB
~63K SLoC