One prompt for your apps and your windows. A launcher and ALT+TAB window switcher for Hyprland that looks like a terminal.
curl -fsSL https://raw.githubusercontent.com/elyesghazel/zunder/main/get.sh | shThis one runs in your browser. Try , , , , .
zunder runs as a small daemon. A keybind sends it a word over a unix socket, and it puts an overlay on top of everything: one prompt, results grouped in sections, monospace, colored app icons.
Open windows, apps, a calculator, a world clock, clipboard history, shell commands, power actions and your own scripts all live in the same list. ALT+TAB shows a live screenshot of each window, even ones on other workspaces.
.desktop app, flatpak too, fuzzy matched on name, keywords and binary.Ctrl+F pins any result to the start screen.Ctrl+B gives any result a system-wide Hyprland keybind.history lists everything you ever launched. It is never cleared.time in ny, time in 2h in tokyo, 3pm ny in zurich.2^10/3, sqrt(2)*pi. Enter copies the result.5 km in mi, 30c, 100 usd in chf. Units and 160 currencies.clip searches your cliphist history, text and images.fire already shows 🔥. :heart opens the picker.> cmd runs in your terminal or in the background.keybind ─► zunder switch ─► $XDG_RUNTIME_DIR/zunder.sock ─► daemon │ hyprctl clients -j ◄─────────────────────┤ on open .desktop files ◄─────────────────────┤ grim -T <window> ◄─────────────────────┘ ALT+TAB only, in threads
src/providers/. Windows, apps, math, time, files, clipboard. Adding one is about 30 lines.applications/ folder changes, and unchanged rows are reused.Measured on a laptop, release build, with ZUNDER_TIMING=1:
| Step | Time |
|---|---|
| open, start screen unchanged | 3–8 ms |
| open, start screen changed | about 25 ms |
| search, per keystroke | 0.3–2.6 ms |
A plugin is any executable in ~/.config/zunder/plugins/. Header comments configure it, and every line it prints becomes a result.
#!/bin/sh # @zunder.name Notes # @zunder.prefix note grep -ri -- "$1" ~/notes | head -50
Typing note groceries runs the script with "groceries" on each keystroke. For more control, print JSON lines with an action: run, term, open, copy, focus or fill.
{"title": "zen-bin", "subtitle": "pid 4242", "hint": "6%", "action": {"run": "kill 4242"}}
Twelve color schemes are built in. Click one, it applies to this page the same way it applies to zunder.
Your own theme is a file in ~/.config/zunder/themes/ with one @define-color line per color. Anything beyond colors goes in style.css.
zunder setup asks a few questions and writes the keybinds, autostart and theme into your Hyprland config. It takes over from vicinae, rofi or wofi, and --dry-run shows the changes first. By hand it is four binds:
-- hyprland.lua hl.exec_cmd("zunder server") hl.bind("ALT + TAB", hl.dsp.exec_cmd("zunder switch")) hl.bind("ALT + SHIFT + TAB", hl.dsp.exec_cmd("zunder switch-prev")) hl.bind("ALT + SPACE", hl.dsp.exec_cmd("zunder toggle")) hl.bind("SUPER + V", hl.dsp.exec_cmd("zunder show 'clip '"))
The classic hyprland.conf works too. Everything is stored in ~/.config/zunder/config.toml, and zunder settings opens a settings window for it.
curl -fsSL https://raw.githubusercontent.com/elyesghazel/zunder/main/get.sh | shThe .dmg from the latest release. Drag it to Applications, then right-click → Open the first time.
zunder-windows-setup.exe installs for your user, no admin. ALT+SPACE opens it.
| Linux | macOS | Windows | |
|---|---|---|---|
| launcher, search, math, time, files, plugins, themes | ✓ | ✓ | ✓ |
| apps | ✓ | ✓ | ✓ |
| open with a key | ✓ | planned | ✓ |
| ALT+TAB switcher and previews | ✓ | ⌘Tab is built in | Alt+Tab is built in |
| tray icon | ✓ | ✓ menu bar | ✓ |
| global shortcuts | ✓ | planned | planned |
| clipboard history | ✓ | planned | planned |