We don't actually depend on libxcb-randr or libxcb-xfixes, because the
Rust xcb crate implements extensions by autogenerating XCB message
structs, and then using the main libxcb message sending functions (not
the C functions in each extension library) to send the requests.
Previously I was just presenting a static username/password box, and
then running PAM with pre-set credentials. This works just fine when
PAM is expecting a username and password, but if it's expecting
something like a fingerprint scan or a hardware security token, this
wouldn't entirely work right. Well, it would "work", but the
username/password dialog would be displayed, and then hitting "Unlock"
would start a different auth process with no visible feedback as to
what's supposed to happen.
This also means I need to switch PAM wrapper crates; the one I was using
before did not allow passing a fixed username to the underlying
pam_start() call, which meant that PAM would try to prompt the user for
it, which is not what we want.
If the user presses enter or escape in order to get the unlock dialog to
show in the first place, forwarding that event to the dialog will only
cause it to close immediately.
Also took the opportunity to clean up the dependencies where I have my
own patches. I'm now using the cargo 'patch' section so that the
dependencies specified in the individual Cargo.toml files are clean.
I gave up on getting it to build on bullseye, as its cargo/rustc is too
old for the 2021 edition. Building newer deb packages of rust is
apparently a difficult, manual process. I tried installing rustup and
pulling the latest compiler, but that failed with strange errors that I
am tired of debugging.