Omahub
← All plugins
X

Window Switcher

by xadacka

Searchable Alt-Tab alternative: lists open windows in Omarchy's own menu overlay and focuses the one you pick.

Security review

Review recommended · 1 finding

Deterministic scan — not a security guarantee

Low
Risk level
Low
Analyzed commit
90149d6
Scanned
1 month ago

Flagged patterns appear only in documentation files (README / docs) — descriptive examples, not executable code.

  • Docs external_hosts README.md:68

    Downloads or connects to an external HTTP(S) host.

    git clone https://github.com/xadacka/omarchy-window-switcher.git

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

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

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
90149d6
Reviewed
1 month ago

The plugin is a straightforward window switcher that uses hyprctl and omarchy-shell. It modifies ~/.config/hypr/bindings.lua to add a keybinding, using an atomic replace pattern that avoids symlink attacks. No network access or malicious behavior was found; the only external host reference is the README's git clone URL, which is documentation only.

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/xadacka/omarchy-window-switcher --enable
Desktop #Hyprland #quickshell #launcher

omarchy-window-switcher

A searchable window switcher for Omarchy/Hyprland — an Alt-Tab alternative that lets you type to filter open windows by title or app, instead of cycling through them one at a time.

It reuses Omarchy's own menu UI (the same overlay used for the system menu, theme picker, etc.) via its dmenu-style IPC, so it looks and feels native — no extra launcher (rofi/wofi/fuzzel/walker) required — and shows a Nerd Font glyph per row for common terminals, browsers, editors, and a handful of other apps.

Window switcher preview

Why

Hyprland/Omarchy already bind ALT + TAB to "focus next window", which cycles one window at a time — fine with two or three windows open, tedious with a dozen. This gives you a SUPER + GRAVE (backtick) binding that opens a filterable list instead: type a few letters of the title or app name, press Enter, done.

Requirements

  • Omarchy (tested on the Quickshell-based omarchy-shell release, Hyprland 0.56.2)
  • jq

Install

This is an Omarchy shell plugin, so the standard plugin flow installs and wires it up in one step:

omarchy plugin add https://github.com/xadacka/omarchy-window-switcher.git --enable

(While this repo is private, git clone needs your credentials to reach it — either an authenticated gh/git credential helper, or use the git@github.com:... SSH form instead of the https:// one above.)

What --enable actually does here: this plugin's only job is a service that runs once inside the Omarchy shell and idempotently appends one line to ~/.config/hypr/bindings.lua:

o.bind("SUPER + GRAVE", "Window switcher", "<path-to-this-plugin>/bin/omarchy-window-switcher")

then reloads Hyprland so it takes effect immediately. It checks for its own marker before writing, so re-enabling, updating, or restarting the shell never duplicates the line. (Shell plugins run inside the Quickshell process and have no direct way to register a Hyprland keybind, so this bootstrap step is what makes omarchy plugin add alone sufficient — no separate manual binding step needed.)

Without --enable:

omarchy plugin add https://github.com/xadacka/omarchy-window-switcher.git
omarchy plugin enable io.github.xadacka.window-switcher

Manual install (no plugin system)

If you'd rather not use the plugin manager at all:

git clone https://github.com/xadacka/omarchy-window-switcher.git
cd omarchy-window-switcher
./install.sh

This copies bin/omarchy-window-switcher to ~/.local/bin/ and appends the same keybinding to bindings.lua directly (skipped if the key's already bound to something else, or the binding's already there). Override the key with OMARCHY_WINDOW_SWITCHER_KEY="SUPER + SHIFT + TAB" ./install.sh.

Usage

Press the bound key, start typing to filter, use ↑/↓ to move, Enter to focus the selected window, Esc to cancel.

How it works

hyprctl clients -j lists open windows (address, title, class, workspace, recency). The script builds that into Omarchy's generic dmenu payload, picking a Nerd Font glyph per row from the window's class, and opens it with:

omarchy-shell shell summon omarchy.menu '{"mode":"select", ...}'

then blocks on the selection/done temp files the menu writes back to, the same round-trip Omarchy's own image picker uses. Once a window is picked, it's focused with:

hyprctl dispatch 'hl.dsp.focus({ window = "address:0x..." })'

(Hyprland 0.56's Lua dispatch API — the classic hyprctl dispatch focuswindow address:0x... string syntax no longer works on this version.)

The currently-focused window is left out of the list, since switching to it would be a no-op.

Why glyphs, not real app icons

Omarchy's own app launcher/menu shows real app icons (actual images, resolved from each app's .desktop entry). This plugin can't reuse that: the generic omarchy.menu "select" mode it's built on renders every row as plain text — its row delegate only draws an Image for the launcher's own kind: "app" rows, never for "dmenu" rows (see menu/Menu.qml in the Omarchy shell source). So a real icon image is architecturally not an option through this overlay; a same-line Nerd Font glyph is the closest available substitute, matched off the window's class in bin/omarchy-window-switcher. Showing real icons would mean this plugin shipping its own custom overlay (a menu or overlay kind, rendering its own window list) instead of reusing Omarchy's built-in one — a much bigger undertaking than reusing the existing menu, and not something this plugin currently does.

Caveats

  • Requires the Quickshell-based Omarchy shell (the omarchy.menu IPC target) — not compatible with older wofi/walker-based Omarchy releases.
  • Two windows with an identical title, app, and workspace are indistinguishable in the list; picking either one focuses whichever of them was enumerated first.
  • Removing the plugin (omarchy plugin remove io.github.xadacka.window-switcher) does not remove the line it added to bindings.lua — that file is outside the plugin's own directory, so nothing auto-cleans it. Delete the -- Added by the xadacka.window-switcher plugin. block by hand if you uninstall.