Live Lock
A fork of Omarchy's built-in omarchy.lock that carries the live wallpaper
treatment onto the lock surface: the blurred background drifts, and an accent
rim breathes in from the screen edges.
Companion to io.github.sumdahl.livewallpaper.
Cosmetic only — the wallpaper plugin works fully on its own, including
parking the desktop scene while the screen is locked. This adds the treatment
behind the lock blur and nothing else.
Everything not listed under Divergence is stock, so rebasing onto a newer Omarchy should stay a small diff.
Install
omarchy plugin add https://github.com/sumdahl/omarchy-plugin-lock.git
omarchy restart shell
Enabling it moves the built-in omarchy.lock into disabledPlugins[], so
exactly one lock screen is ever mounted. Password entry, the clock, the idle
and secure-lock paths are untouched.
Check that the lock screen still works before you next walk away from the machine. A lock plugin that fails to mount leaves you with no lock screen at all, and that is a bad thing to discover later.
Removal
omarchy plugin disable io.github.sumdahl.lock
rm -rf ~/.config/omarchy/plugins/io.github.sumdahl.lock
omarchy restart shell
Disabling re-enables the built-in omarchy.lock, so you get the stock lock
screen back. Confirm the lock screen works before walking away — a session
with no lock plugin mounted has no lock screen.
Divergence from stock
LockView.qml
- Wraps the wallpaper and its
MultiEffectblur in an overscannedplateitem and applies the parallax transform to that. Panning the source would makeMultiEffectredo a 128px blur every frame for a result the blur discards; transforming the finished texture looks identical and costs one matrix. - Adds
senseRim— four edge gradients, full screen, driven by a pulse envelope. Gradients rather than a radial shader so it composites over the plate without a second offscreen pass. - Reads its numbers from the resolved live spec (see below) with stock fallbacks, so a missing spec means stock behaviour.
The lock motion is damped only lightly against the desktop's — drift ×0.85, zoom ×0.8, same loop period. An earlier version halved the drift and doubled the period, which compounds to a quarter of the desktop's apparent speed, about 0.9 px/s. On a 128px blur that is indistinguishable from a still image. Blur removes the fine detail the eye tracks to perceive slow motion, so it hides movement rather than exaggerating it.
Service.qml
- Watches
$XDG_RUNTIME_DIR/omarchy-live/resolved.json— the merged spec the wallpaper plugin publishes — and hands it to bothLockViewmounts. Reading a theme's ownlive/live.jsoninstead would see one of four layers and disagree with the desktop. - Notifies
omarchy-shell livewallpaper setLocked <bool>on lock and unlock. The wallpaper plugin also detects lock state itself, so this is a faster, more explicit signal rather than a requirement. - A re-arm timer re-points the watcher, since a theme switch replaces the directory and the watch on the old inode dies with it.
Configuration
None of its own. Everything comes from the live spec — see the wallpaper plugin's README for the layer model. The keys this plugin reads:
| Key | Effect |
|---|---|
lock.pulse |
Rim strength, 0 disables the rim entirely |
motion.period |
Loop length, shared with the desktop |
motion.driftX / driftY |
Pan amplitude, damped ×0.85 here |
motion.zoom |
Breathing amplitude, damped ×0.8 here |
pulse.everyMin / everyMax |
Seconds between rim pulses |
To tune it, set those on the wallpaper side — omarchy-live tune lock.pulse 0
turns the rim off without touching this plugin.
Rebasing onto a newer Omarchy
diff -u /usr/share/omarchy/shell/plugins/lock/LockView.qml LockView.qml
diff -u /usr/share/omarchy/shell/plugins/lock/Service.qml Service.qml
Re-clone with omarchy plugin clone omarchy.lock and re-apply the two changes
above if upstream has moved on.