# TODO * Fully audit the locker source to ensure that it cannot crash based on error handling in its own code. * Add support for running screensaver programs ("hacks" in `xscreensaver` parlance) that draw interesting things on `bscreensaver`'s blanker windows. Without this, `bscreensaver` is more accurately called `bscreenlocker`. * Dig into the systemd service a bit more; I think it isn't always locking properly before the system suspends (sometimes there is a flash of screen contents on resume). * Build a second locker dialog using another toolkit. Qt could be interesting, as well as iced. I do not believe it is possible to use GTK4, as GTK4 no longer has `GtkPlug` and is intentionally too platform-agnostic to support the kind of things we need. * Move the `xcb-xembed` and `xcb-async` sub-crates to their own project. I may want to flesh out `xcb-xembed` so it supports the entirety of the XEMBED spec, not just the features I needed for this project. * Consider using `x11rb` rather than `xcb`. The former autogenerates a full XCB protocol library in Rust, while the latter is a set of bindings to the `libxcb` C library. I would like to reduce the amount of non-Rust code executed in the locker process, for safety/security reasons. * Add support for non-Linux systems that are also UNIX-like. PAM, I believe, is different on other systems and the auth code might need some changes. Also, a method of disabling building, installing, and running the systemd, and possibly DBus, services would be needed. * Figure out why forwarding key release events (in addition to key press events) to the unlock dialog results in duplicate key presses.