srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/wayland/src/lock.rs
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2024-10-30 23:52:00 +0200
committersrdusr <[email protected]>2024-10-30 23:52:00 +0200
commit9748bca006cd2498c4c0f2730d8789c667bda52b (patch)
treef917af35cd32f9745c940253f2400ab0b92f0b0a /crates/wayland/src/lock.rs
parent3509cf6127185d9fed5a63ceca18a003213a20d7 (diff)
downloadsrdwm-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.rs12
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 {