Conversation
The screensaver has always picked a random ttfx effect (beams, matrix, fireworks, ...) each cycle, with no way to keep one you like. Add an optional idle.screensaverEffect key to shell.json that constrains ttfx's --random-effect selection to a single named effect; an unrecognized name falls back to random and notifies why. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Automated AI review
Outcome: An option-like Option-like effect names pass the
|
Summary
ttfxeffect (beams, matrix, fireworks, ...) each cycle, with no way to stick to one you like.idle.screensaverEffectkey toshell.json. When set, it constrainsttfx's--random-effectselection to that one effect via--include-effects; an unrecognized name falls back to random and sends a notification saying why.bin/omarchy-screensaver-effectresolves and validates the configured effect, kept separate frombin/omarchy-screensaverso the logic is unit-testable without touching the live screensaver loop (mirrors howIdleModel.jsis split out fromService.qml).manual/13-toggles-idle-screensaver.md,docs/omarchy-shell.md, and the bundledomarchyagent skill'splugins.md.Test plan
test/shell.d/screensaver-effect-test.sh(new): unset falls back to random silently, a valid effect resolves and is passed through, an invalid effect falls back to random and notifies../test/allrun locally — no new failures (5 pre-existing failures in this sandbox are all due to a missingomarchy-pkgscheckout or environment-specific rendering/locale issues, unrelated to this change)."screensaverEffect": "matrix"in~/.config/omarchy/shell.json, trigger the screensaver (Super + Esc), confirm it always renders the matrix digital-rain effect instead of a random pick.🤖 Generated with Claude Code