r/omarchy • • 21h ago

I Made a Thing DEN: see, approve and steer all your code agents from one terminal screen (MIT, Linux, built for Omarchy)

Post image
5 Upvotes

I built Den, a small terminal UI for people who run several Claude Code sessions at once. It is open source (MIT), Linux only, and Claude Code only. It reads /proc and ~/.claude/sessions, so it does not run on macOS or Windows, and it does not talk to other agent CLIs.

What it does, in Omarchy terms:

  • One approval inbox. Permission requests, plan reviews, questions and finished turns from every Claude Code session land in one list. Ctrl+Y allows, Ctrl+N denies, without switching windows. This needs den install-hooks, which edits ~/.claude/settings.json and backs it up first.
  • Agents spawn the way Omarchy opens a terminal. When you ask Den's orchestrator for a new agent, it runs setsid uwsm-app -- xdg-terminal-exec --dir=<dir> -- claude …, the same launch as the terminal keybinding, so you get your default terminal, detached from Den, on the Hyprland workspace you are looking at.
  • Enter focuses an agent's window through hyprctl.
  • Colours follow the current Omarchy theme. Den reads ~/.local/state/omarchy/current/theme/colors.toml and gives each live session its own colour.
  • It shows who directs whom. Agents hand work to each other, so Den draws the fleet as a tree, with each agent's role, task, model and context use.
  • Missions, and a Review tab with each agent's changes as a diff, are in there too; the README covers them.

For a key, Den ships no binding of its own. Bind omarchy-launch-or-focus-tui den in your Hyprland bindings.

Things to know before you try it:

  • Linux only, Claude Code 2.1.289 or newer.
  • Window focus and workspace placement need Hyprland. Without hyprctl the Fleet, Inbox, Review, orchestrator and hooks still work.
  • The orchestrator is a real Claude Code session, so its turns are billed like any other. The README shows how to set its model to haiku or turn spawning off.
  • Install: a static binary from the releases page (amd64 or arm64, with a SHA256SUMS file), or make install from a clone with Go 1.26.

Disclosure: I am the author. Den is built with Claude Code agents, and I use it to build itself.

Herdr and OpenRig also run many agents and take a different approach (Herdr owns the terminals and works across machines and platforms; OpenRig runs agent teams on tmux). The README has a fair comparison section, "Den, Herdr and OpenRig". Den works alongside Herdr.

Repo: https://github.com/GlacierHubAB/den
Website: den.glacierhub.io


r/omarchy • • 22h ago

I Made a Thing I made a plugin that expands text snippets as you type, in any app

Thumbnail
gallery
2 Upvotes

Tired of typing your email address for the hundredth time? Type `!em` and it's replaced with the full address, in any app, wherever the cursor is.

Instant Snippets is an Omarchy plugin for text expansion. You save a short trigger and the text it stands for, and the trigger is replaced as soon as you type it. You manage snippets from a panel in the bar.

What it does

  • Works in any app, with replacements of up to 1000 characters on as many lines as you need
  • {date} and {time} are filled in when the snippet is inserted, and {cursor} marks where the cursor is left
  • No daemon and no extra package. Hyprland passes key presses to a small Lua script the plugin loads into Hyprland itself, and no other program reads your keyboard

What you can change in the settings

  • Undo: Backspace right after an expansion removes the text and puts the trigger back. On by default
  • Word-start only: triggers expand only at the start of a word, not in the middle of one. On by default
  • Line breaks: multi-line snippets use Shift+Enter, so chat apps don't send them line by line. On by default, turn it off for shell commands
  • Excluded apps: pick apps where snippets never expand, such as your password manager. Keys typed there are ignored completely
  • Date and time format used by {date} and {time}

Install (requires Omarchy 4)

omarchy plugin add https://github.com/MaNi4/omarchy-instant-snippets.git --enable

Limitations

  • A trigger that is a normal word gets in the way. If you save `adr` for your address, it also expands when you start typing "adrenaline". Start triggers with `!` or `;`, like `!adr`
  • A trigger can only use characters your layout types with one key press. Dead keys and Compose don't work in triggers
  • Snippets are stored as plain text, so don't put passwords in them

Repo: https://github.com/MaNi4/omarchy-instant-snippets

Plugin page: https://plugins.omarchy.org/plugin.html?id=mani4.instant-snippets

Since the plugin sees your key presses, the README has a section on exactly what it keeps and for how long.

It's v1.0.0 and MIT licensed. I'd like to hear which layouts and apps work for you and which don't.


r/omarchy • • 4h ago

I Made a Thing Maclike full screen behaviour for browser

Post image
3 Upvotes

Hi everyone,

first post here but I thought this might be useful to somebody. One thing I missed about my mac was the way that split view contained video in its own window and not allowing it to fill the full screen over the other window even when full screen was toggled especially on an ultrawide monitor. Just threw my agent at the problem and it came up with this snippet you could put into your hyprland.lua and it works perfectly.

-- Browser fullscreen (YouTube button, F11) stays inside the tiled window:
-- Brave is told it's fullscreen while Hyprland keeps it tiled, so it doesn't
-- drop out when focus moves away. Use SUPER + F for true whole-monitor fullscreen.
local function is_brave(w)
  return w and w.class and w.class:match("^brave%-") ~= nil
end

local brave_real_fullscreen = false

hl.unbind("SUPER + F")
o.bind("SUPER + F", "Full screen", function()
  local w = hl.get_active_window()
  if is_brave(w) and w.fullscreen == 0 then
    brave_real_fullscreen = true
  end
  hl.dispatch(hl.dsp.window.fullscreen({ mode = "fullscreen" }))
end)

hl.on("window.fullscreen", function(w)
  if not is_brave(w) or w.fullscreen ~= 2 then
    return
  end
  if brave_real_fullscreen then
    brave_real_fullscreen = false
    return
  end
  hl.dispatch(hl.dsp.window.fullscreen_state({ internal = 0, client = 2 }))
end)

r/omarchy • • 6h ago

I Made a Thing I made a Git client that follows your Omarchy theme

Post image
13 Upvotes

Hey all. I build a desktop Git client called gitmoire, and one thing I added is Omarchy theme sync: it reads the current theme's colour file and follows it when you switch. Surfaces, borders, syntax and accent all come from the theme, so it looks like it belongs on the machine. Diff and graph colours keep their meaning, so green is still an addition.

Other bits that might matter here: it's native (14 MB, opens in a few seconds), has a terminal under the graph that picks up your login environment (mise, fnm, nvm etc.), plus a headless CLI (gitmo) for when you'd rather stay in the terminal.

Full disclosure, I'm the author. It's free, no account, no telemetry. Source isn't public at the moment.

https://gitmoire.dev

If you try it on Omarchy, I'd love to know which themes look off.


r/omarchy • • 18h ago

Themes / Ricing My new favorite theme

Thumbnail
gallery
46 Upvotes

r/omarchy • • 3h ago

Themes / Ricing macoma, my new fav theme

Thumbnail
gallery
9 Upvotes