Idle Settings
A small Omarchy bar-widget that adjusts the screensaver and lock timeouts
(idle.screensaver and idle.lock in ~/.config/omarchy/shell.json)
from a popup, instead of hand-editing the JSON.
Screenshot
<img src="assets/panel.png" alt="Idle Settings popup: Screensaver after 10m, Lock after 30m, and a Save button" width="300">Features
- Small centered popup — a full-screen layer-shell overlay with a compact card centered on screen, not a big window and not a popup anchored under the bar icon.
- Live values — reads the current screensaver/lock timeouts straight from the running shell's config, so the panel always shows what's actually in effect (same fallbacks as Omarchy's own idle service: 150s screensaver, 300s lock, if unset).
- Safe apply — edits are a local draft until you hit Save; closing the popup without saving discards them.
- Validation — lock can't be set shorter than the screensaver.
Why a bar-widget, and why a layer-shell popup
Two design choices worth knowing if you're reading the source:
- Bar-widget, not a keybinding-only panel. Omarchy's plugin/menu
systems have no auto-discovery for a bar-icon-less "panel" plugin — you'd
have to hand-add a keybinding (
bindings.lua) or a menu entry (omarchy-menu.jsonc) yourself for it to be reachable at all. A bar-widget is the only plugin kind that's discoverable with zero manual config:omarchy plugin add ... --enableand the icon just appears. - Layer-shell (
PanelWindow), not a plainFloatingWindow. A regular top-level window is something Hyprland's tiling layout manages — it does not float on its own, and needs a matching Hyprland windowrule (float/center/size) to look right. Nothing under this plugin's own files can apply that rule; it would mean a required manualhyprland.luaedit, which isn't "install and forget." A layer-shell surface (the same foundation as the bar itself, the emoji picker, etc.) isn't part of the tiling workspace at all, so it always renders as a small centered card with zero Hyprland-side configuration.
Dependencies
None beyond Omarchy itself. No helper scripts, no external tools — the
panel reads and writes shell.json entirely through the shell's own
shell.mutateShellConfig() API (the same one the built-in bar uses for
things like toggling transparency), so there's nothing to install and
nothing that can race the shell's own hot-reload.
Install
omarchy plugin add https://github.com/r3mcos3/omarchy-idle-settings.git --enable
Usage
Click the icon to open the popup. Adjust screensaver/lock with the +/− steppers (in minutes), then Save. Click outside the card or press Escape to close without saving.
Configure
omarchy bar move remco.idle-settings --section left # or:
omarchy bar move remco.idle-settings --section center
omarchy bar move remco.idle-settings --section right
Uninstall
omarchy plugin remove remco.idle-settings
Uninstalling the plugin does not touch your current idle.screensaver /
idle.lock values in shell.json — whatever was last saved stays in
effect.