How exs-lab/exs-lock works
exs-lock is a GTK3 session-lock application for Wayland. The user launches the CLI, which prepares and activates GtkSessionLock, captures each monitor’s background, and creates a lock surface per display. Each surface presents a configurable password entry, blurred wallpaper, and live date/time; password submission is checked through PAM, and successful authentication unlocks and closes the surfaces. The README also documents CSS customization and Exs-Shell settings integration. Configuration and screenshot implementation details are represented from the tree, but their source was not sampled.
Main entry points: cli/lock.py Lock command · modules/lock.py Lock screen · css.py Stylesheet loader · __init__.py CLI dispatcher
Components 19
Launch and setup
- CLI dispatcher
exs_lock/cli/__init__.py - Lock command
exs_lock/cli/lock.py - Fabric application
Lock surfaces
- Lock screen
exs_lock/modules/lock.py - Date and time
exs_lock/modules/widgets/clock.py
Runtime utilities
- Monitor discovery
exs_lock/utils/monitor.py - Screenshot capture
exs_lock/utils/screenshot.py - Config loader
exs_lock/utils/config.py - Image blur
exs_lock/utils/img.py - Thread helper
exs_lock/utils/loop.py
Appearance
- Stylesheet loader
exs_lock/utils/css.py - Lock styles
exs_lock/styles
Other components
- Desktop user
- GtkSessionLock
- Wayland display
- User settings
- PAM authentication
- User CSS
- Exs-Shell settings
Connections 22
- Desktop user → CLI dispatcher: runs
- CLI dispatcher → Lock command: dispatches
- Lock command → Fabric application: creates
- Lock command → Stylesheet loader: loads styles
- Stylesheet loader → Lock styles: reads defaults
- Stylesheet loader → User CSS: loads or creates
- Lock command → Fabric application: sets stylesheet
- Lock command → GtkSessionLock: prepares and locks
- Lock command → Monitor discovery: gets monitor data
- Monitor discovery → Wayland display: queries displays
- Lock command → Screenshot capture: captures backgrounds
- Screenshot capture → Wayland display: captures display
- Lock command → Lock screen: creates per monitor
- Lock screen → GtkSessionLock: registers surface
- Lock screen → Config loader: reads options
- Config loader → User settings: reads
- Lock screen → Image blur: blurs background
- Lock screen → Date and time: embeds widget
- Lock screen → Thread helper: runs authentication
- Lock screen → PAM authentication: checks password
- Lock screen → GtkSessionLock: unlocks on success
- Exs-Shell settings → User settings: configures optionally