# 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 debugging - `DEBUG=1`: Enable Debug level logging -- most status changes, but no raw data - `EXIT_TRAP=n`: Forcefully terminate the program after `n` 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](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 ## License MIT