Omahub
← All plugins
M

Window Tree

by MGC <chagel@gmail.com>

Jump to any window from a searchable tree of every monitor, workspace, and window on the machine. Type to filter, arrows to walk the tree, Enter to focus -- across monitors and workspaces, without cycling through them.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
84bb82e
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
84bb82e
Reviewed
1 month ago

The plugin is a read-only window/workspace picker that reads Hyprland state via Quickshell and dispatches focus commands. No code in the repository performs destructive actions, writes configuration, or accesses sensitive data beyond the window metadata needed for the picker. The deterministic scan found no issues, and manual review confirms the code matches its documented behavior.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/chagel/omarchy-window-tree --enable
Desktop #Hyprland #launcher #workspaces

Window Tree

Jump to any window from a searchable tree of every monitor, workspace, and window on the machine.

Window Tree

On several monitors with several tags each, "where did that terminal go" is normally answered by cycling workspaces until it turns up. Here it is one search and one keypress.

The tree is ordered by monitor and tag rather than by match quality, so a window you jump to often keeps roughly the same position between summons.

Install

omarchy plugin add https://github.com/chagel/omarchy-window-tree --enable

Then bind a key in ~/.config/hypr/bindings.lua:

o.bind("SUPER + slash", "Window tree", "omarchy-shell shell toggle chagel.window-tree")

SUPER + / matches the / search prompt the picker opens with, but any free key works. The plugin does not write your Hyprland config — this line is the one thing you add by hand.

Keys

Key
type filter; every space-separated term must match, in any order
↑ ↓ / Ctrl+P Ctrl+N move
← fold the row, or jump to its parent
→ unfold the row, or step into it
PgUp PgDn Home End move faster
Enter focus the selected row
Esc clear the filter, then close

Enter on a window focuses it, following it to whatever monitor and workspace it lives on. Enter on a workspace or monitor goes there. Clicking a row does the same as Enter on it.

Folded rows stay folded until the shell restarts, so a monitor you never pick from can be kept out of the way.

Workspace numbering

Workspace ids are shown as the tag its own bar shows. If you partition ids per monitor — 1–9 on the first output, 11–19 on the second, as omarchy-workspace-tags does — then workspace 12 displays as tag 2 under its monitor rather than as 12. An unpartitioned pool is already the identity, so this needs no setting and works either way.

What it touches

Nothing. It reads Hyprland's monitor, workspace, and window state through Quickshell and dispatches focus. It writes no configuration, moves no windows, and closes nothing; there are no destructive keys to mis-press.

Focus is dispatched in the Lua form Hyprland 0.56+ expects (hl.dsp.focus({ window = "address:0x…" })). The classic focuswindow address:0x… string is a parse error under a Lua config.

Requirements

Omarchy with the Quickshell-based shell, and Hyprland 0.56+.

Removal

omarchy plugin remove chagel.window-tree

Then delete the keybinding you added.

Development

node test/tree.test.js

TreeModel.js holds the tree building, filtering, flattening, and the focus dispatches, and is kept free of Qt so it can be exercised outside the shell. Tree.qml is the overlay around it.

License

MIT