diff options
| author | srdusr <[email protected]> | 2024-10-30 23:52:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2024-10-30 23:52:00 +0200 |
| commit | 9748bca006cd2498c4c0f2730d8789c667bda52b (patch) | |
| tree | f917af35cd32f9745c940253f2400ab0b92f0b0a /crates/wayland/src/lock.rs | |
| parent | 3509cf6127185d9fed5a63ceca18a003213a20d7 (diff) | |
| download | srdwm-9748bca006cd2498c4c0f2730d8789c667bda52b.tar.gz srdwm-9748bca006cd2498c4c0f2730d8789c667bda52b.zip | |
Add srdwm's own native session-lock screen (blur, PAM auth)
A real ext-session-lock-v1 implementation drawn by the compositor
itself, not a hand-off to an external locker process: a live-blurred
background, PAM authentication on a background thread, and its own
config surface (lock_config.rs) rather than hardcoded appearance.
Diffstat (limited to 'crates/wayland/src/lock.rs')
| -rw-r--r-- | crates/wayland/src/lock.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/wayland/src/lock.rs b/crates/wayland/src/lock.rs index ccdea98..828fe98 100644 --- a/crates/wayland/src/lock.rs +++ b/crates/wayland/src/lock.rs @@ -44,6 +44,18 @@ pub(crate) struct SessionLock { /// Outputs that have presented a client-content-free frame since the /// lock request, keyed the same way. pub(crate) presented: HashSet<String>, + /// `Some` while srdwm is its own locker - see `native_lock.rs`'s + /// module doc comment for why this is a separate mode from the fields + /// above rather than folded into them: those exist for an *external* + /// locker client talking `ext-session-lock-v1`; this is srdwm drawing + /// and authenticating its own lock UI directly, with no client + /// surface involved at all. The two are mutually exclusive by + /// construction - `srd dispatch lock` never creates a `LockSurface`, + /// and nothing here stops a *real* external locker from also + /// connecting, but nothing in this session's scope needed to reconcile + /// that edge case, and `locked` alone still gates input/rendering + /// regardless of which mode set it. + pub(crate) native: Option<crate::native_lock::NativeLock>, } impl CompState { |