A fast, keyboard-driven launcher for Wayland. Search applications, navigate files, and switch windows -- all from a single search bar.
Built with C, GTK4, and gtk4-layer-shell. Currently supports niri for window management.
inspired from OLauncher (Android Home Launcher)'s application launcher
How fast is it?
Depends on how fast you can type. Literally.
How does it work?
OLauncher launches application based on narrowing your app search launch with the characters you enter, and as soon as it hits on only one result, it immediately opens it.
That's what thundersearch is based on, but with more robust functionality, made in GTK4 and GTK4-layer-shell.
Below vidoes were recorded on an i3 4th Gen processor, MX500 ssd.
Opening Applications
thundersearch-v0.1.mp4
Switching Windows From Across Workspaces
thundersearch-v0.1-part1.mp4
Opening File Directories Directly In Your Default File Explorer
thundersearch-v0.1-part2.mp4
Opening Files From Thundesearch
thundersearch-v0.1-part3.mp4
- GTK4
- gtk4-layer-shell
- GLib/GIO
- niri (for
/winwindow switching)
make
sudo make install
ThunderSearch runs as a single-instance daemon via GtkApplication. To apply a new build, kill the running instance first:
killall thundersearch && sudo make install
Activate ThunderSearch with your compositor's keybinding (e.g., bind a key to launch thundersearch). A search bar appears as a Wayland overlay. Start typing to use any of the modes below. Press Escape to dismiss.
Just type an application name. Results narrow as you type. When only one match remains, it launches automatically.
firefox -> launches Firefox
term -> launches Terminal (if nicknamed)
Supports nicknames -- short aliases for applications (see Configuration).
Browse and open files/directories starting from your home directory.
| Command | Behavior |
|---|---|
/f |
List home directory contents |
/f Documents |
Open Documents in file manager |
/f /Documents/ |
Browse inside Documents (path mode) |
/f /Documents/project/ |
Browse deeper -- keep typing to narrow |
/f/o /path/to/file.pdf |
Open file with configured app (or xdg-open) |
/fd |
List contents of configured default directory |
/fd /subdir/ |
Browse inside default directory |
How path mode works:
- Start with
/f /to enter path mode - Type to narrow results. Directories show as
(dirname), files asfilename.ext - When narrowed to one directory, it auto-fills the name and shows its contents
- When narrowed to one file, it opens the file (or its parent directory)
- Backspace removes characters naturally -- the path in the search bar IS the state
Simple mode (/f name without leading /) opens the matched directory in your file manager or opens the file's parent directory.
Search and focus any open window across all workspaces.
/win -> list all open windows
/win fire -> narrows to Firefox windows
/win code -> narrows to VS Code
Results display as: AppID - Window Title [workspace N]
When narrowed to one result, ThunderSearch automatically switches to that workspace and focuses the window. You can also press Enter to focus the first result immediately.
Uses niri msg for window listing and focusing. Requires the niri compositor.
Config file location: ~/.config/thundersearch/config
Created automatically on first run with example entries.
Map short aliases to application names:
ff = Firefox
spot = Spotify
term = Alacritty
code = Visual Studio Code
Type ff and Firefox launches immediately.
Set the starting directory for the /fd command:
default_dir = ~/Projects
Configure which application opens which file types when using /f/o. Group extensions on a single line:
open .pdf .epub = zathura
open .png .jpg .jpeg .gif .webp = imv
open .mp4 .mkv .avi .webm = mpv
open .txt .md .cfg .conf = gedit
If no match is found for an extension, falls back to xdg-open.
# Nicknames
ff = Firefox
spot = Spotify
term = Alacritty
# Default directory for /fd
default_dir = ~/Projects
# File openers for /f/o
open .pdf .epub = zathura
open .png .jpg .jpeg .gif .webp = imv
open .mp4 .mkv .avi .webm = mpv
open .txt .md .cfg .conf = gedit
| Command | Description |
|---|---|
| (text) | Search and launch applications |
/f |
Browse home directory |
/f name |
Open directory/file by name |
/f /path/ |
Navigate directories progressively |
/f/o /path/file |
Open file with configured or default app |
/fd |
Browse configured default directory |
/win |
List all open windows |
/win query |
Search windows by title or app ID |
Escape |
Dismiss ThunderSearch |
Enter |
Confirm action on first result |
main.c - GtkApplication setup, D-Bus activation, signal handling
window.c - UI, input handling, mode dispatch
matcher.c - Fuzzy app matching with nickname resolution and usage scoring
app_index.c - Desktop application indexing via GIO
launcher.c - Application launching
config.c - Config parsing (nicknames, openers, default_dir) and usage history
file_nav.c - Directory listing, file search, xdg-open integration
win_nav.c - Window listing and focusing via niri IPC
See LICENSE file for details.