diff options
| author | srdusr <[email protected]> | 2026-07-04 14:22:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2026-07-04 14:22:00 +0200 |
| commit | d448a82990efb5c510064f1de5b5d32e932a4f9e (patch) | |
| tree | f74f66522f8259a2e726f2b892ede8332667e74b /crates/config/src/engine | |
| parent | 4c6d059359537e03f677e83d345f52fae29ae746 (diff) | |
| download | srdwm-d448a82990efb5c510064f1de5b5d32e932a4f9e.tar.gz srdwm-d448a82990efb5c510064f1de5b5d32e932a4f9e.zip | |
Use the real user avatar on the lock screen, and let its keyboard type every character
Two gaps, both found by being asked about them.
~/.face was never read. The file exists here, a 300x300 JPEG, and a grep for
.face/AccountsService/avatar_path returned nothing anywhere in the codebase:
the lock screen drew a coloured circle with the user's initial
unconditionally. It now looks for ~/.face, ~/.face.icon, then
/var/lib/AccountsService/icons/$USER, which is where GNOME and KDE keep the
picture their settings UI sets. Scaled to cover the circle and
centre-cropped rather than letterboxed, and masked with a soft edge. Falls
back to the initial when nothing is set or the file will not decode.
That needed a raster decoder, since ~/.face is JPEG and the only image code
here was resvg, which is SVG-only. Added image with default features off and
only jpeg and png.
The on-screen keyboard could not type most passwords. It had letters,
digits, and the digits' own shifted symbols, and nothing else - no -, _, .,
/, =, [, ], ;, ', comma, backslash or backtick. For the case that keyboard
exists for, a session with no reachable physical keyboard, a password
containing any of those meant no way in at all. Every printable ASCII
character now has a key, with a test asserting the whole 0x20..0x7f range
rather than spot-checking.
The lock screen itself could not be screenshotted: locking a nested instance
hits the pre-existing EGL context-loss crash already recorded in docs/TODO.md,
confirmed again here. That is environmental and predates this change, so the
on-screen appearance still needs the real session. The avatar path is covered
by four tests including one that decodes the real ~/.face through the same
function the lock screen calls.
529 tests pass, clippy clean.
Diffstat (limited to 'crates/config/src/engine')
0 files changed, 0 insertions, 0 deletions