Lockscreen: pull SCTK, pam-sys, tokio, egui_glow into the workspace
Step 1 of the implementation pass: the dep tree exists, the
workspace builds clean on macOS, and the alloy-lock binary now
boots through tokio's current-thread runtime and reports a
platform-aware stub status.
- Workspace Cargo.toml: tokio (rt + macros + sync + time),
smithay-client-toolkit 0.20, pam-sys 0.5 (stable line, matches
greetd; the 1.0.0-alpha is dropped on purpose), egui_glow 0.34.
- crates/alloy_lockscreen/Cargo.toml: tokio depended on
unconditionally; SCTK, pam-sys, egui, egui_glow gated behind
cfg(target_os = "linux") so non-Linux builds resolve. alloy_ui
is unconditional (egui's a workspace-portable dep for tokens).
- main.rs: #[tokio::main(flavor = "current_thread")] entry point
that prints version, target, and lock-state placeholder. Exits
non-zero on every platform until real wiring lands so it isn't
silently considered "working."
README: new "Build" section calls out the Linux runtime
requirements (libpam, wayland, EGL/Mesa) and the non-Linux
behavior.
Next step is the first real Wayland code: copy SCTK's
examples/session_lock.rs shape into the crate to prove the
protocol binding works on fw13.
Co-Authored-By
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-06-26 19:59 UTC
Stub. The crate compiles, depends on `alloy_ui`, and prints a placeholder. Wayland and PAM integration land after the open questions below are resolved.
7
+
Stub. The crate compiles, depends on `alloy_ui` + the lockscreen stack (SCTK, pam-sys, tokio, egui_glow), and prints a placeholder. All four open questions about scope/architecture are settled — see below. Wayland and PAM wiring land next.
8
+
9
+
## Build
10
+
11
+
Linux-only at runtime. The crate is a workspace member on every platform so `alloy_ui` dev work isn't blocked on macOS, but its Wayland and PAM deps (`smithay-client-toolkit`, `pam-sys`, `egui_glow`) are gated behind `cfg(target_os = "linux")`. Building the lockscreen for real needs:
12
+
13
+
- `libpam` runtime + headers (`pam-devel` on Fedora).
14
+
- Wayland client libraries (`wayland-devel` on Fedora) and an EGL provider (Mesa).
15
+
- GL: a working OpenGL ES 2 / GLES3-capable Mesa driver.
16
+
17
+
On non-Linux platforms `cargo build` produces a binary that prints the platform-unsupported message and exits non-zero — useful as a sanity check that the workspace still resolves.