bscreensaver/TODO.md
2022-05-23 15:24:14 -07:00

1.8 KiB

TODO

  • Fully audit the locker source to ensure that it cannot crash based on error handling in its own code.
  • Add the (optional) ability to allow some key presses through, such as screen brightness keys.
  • 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.