Hey π I'm @1337Hero and this is Yeet! A fast, minimal app launcher for Wayland. That's it.
Yeet launches apps. That's it. Custom entries let it double as a command palette too.
- Fast β Rust + GTK4, optimized release builds
- Minimal β Single binary, no daemons, no bloat
- Smart search β Substring-first with Skim fuzzy fallback (junk results filtered automatically)
- Configurable β TOML config + CSS theming
- Wayland-native β Layer shell overlay with keyboard grab
Yeet is not trying to be an all-in-one tool. No clipboard manager, no calculator, no file browser, no emoji picker, no websearch, no plugins. If you want those, check out walker or wofi.
yay -S yeet-git# Run directly
nix run github:1337hero/yeet
# Install to profile
nix profile install github:1337hero/yeetgit clone https://github.com/1337hero/yeet
cd yeet
cargo build --release
sudo cp target/release/yeet /usr/local/bin/Dependencies: GTK4, gtk4-layer-shell
yeet- Type to search
Enterβ Launch selected appUp/Downβ Navigate resultsScroll/Trackpadβ Navigate resultsAlt+1-9β Quick launch by positionEscapeβ Close
Bind it to a key in your compositor (e.g., Super+Space in Hyprland/Sway).
Config lives in ~/.config/yeet/. Yeet ships with sensible defaults β only override what you need.
[general]
monitor = 0 # Show on specific monitor (0 = primary)
max_results = 8 # Max results when searching
initial_results = 8 # Results shown before typing (0 = just search bar)
terminal = "alacritty"
[appearance]
width = 500 # Window width (height auto-sizes)
anchor_top = 200 # Distance from top of screen
[search]
min_score = 30 # Absolute floor for fuzzy fallback
score_threshold = 0.6 # Keep matches within % of best score (0.0-1.0)
prefer_prefix = true # Prioritize exact prefix matches
[apps]
extra_dirs = [] # Additional directories to scan for .desktop files
exclude = ["Htop"] # Apps to hide (use display names)
favorites = ["Firefox", "Alacritty"] # Pin to top (use display names)
# Custom app entries
[[apps.custom]]
name = "My Script"
exec = "/path/to/script.sh"
icon = "utilities-terminal" # optional, from icon theme
keywords = ["alias", "shortcut"] # optional, extra search termsCustom entries turn Yeet into a command palette. Define any command as a launchable "app."
Note: commands are executed directly (no shell). Shell features like ~ expansion, $VARS, pipes, redirects, and && wonβt work unless you explicitly run a shell (e.g. exec = "sh -c '...'").
Power menu:
[[apps.custom]]
name = "Logout"
exec = "hyprctl dispatch exit"
icon = "system-log-out"
keywords = ["logout", "sign out", "exit", "session"]
[[apps.custom]]
name = "Shutdown"
exec = "systemctl poweroff"
icon = "system-shutdown"
keywords = ["power off", "shutdown"]
[[apps.custom]]
name = "Reboot"
exec = "systemctl reboot"
icon = "system-reboot"
keywords = ["restart", "reboot"]
[[apps.custom]]
name = "Lock"
exec = "hyprlock"
icon = "system-lock-screen"
keywords = ["lock", "screen"]Browser profiles:
[[apps.custom]]
name = "Chrome - Personal"
exec = "google-chrome-stable --profile-directory=Default"
icon = "google-chrome"
keywords = ["browser", "personal"]
[[apps.custom]]
name = "Chrome - Work"
exec = "google-chrome-stable --profile-directory=\"Profile 1\""
icon = "google-chrome"
keywords = ["browser", "work"]SSH connections:
[[apps.custom]]
name = "SSH - Production"
exec = "alacritty -e ssh user@prod-server"
icon = "utilities-terminal"
keywords = ["ssh", "prod", "server"]Projects / dev environments:
[[apps.custom]]
name = "Project - Yeet"
exec = "code /home/you/projects/yeet"
icon = "visual-studio-code"
keywords = ["dev", "rust", "launcher"]Full GTK4 CSS theming. Copy defaults/style.css to ~/.config/yeet/style.css and customize. Default theme is Catppuccin Macchiato with transparency for compositor blur.
/* Use alpha() for compositor blur (Hyprland/Sway) */
.yeet-window {
background-color: alpha(#1e1e2e, 0.9);
border-radius: 12px;
}
.yeet-entry {
font-size: 24px;
padding: 16px;
caret-color: #a6e3a1;
}
.yeet-row:selected {
background-color: #45475a;
}CSS classes:
| Class | Element |
|---|---|
.yeet-window |
Main window |
.yeet-container |
Inner container |
.yeet-entry |
Search input |
.yeet-list |
Results list |
.yeet-row |
Result row (supports :selected, :hover) |
.yeet-row-content |
Row inner content |
.yeet-icon |
App icon |
.yeet-app-name |
App name label |
.yeet-app-desc |
App description |
.yeet-shortcut |
Alt+N shortcut badge |
Requires Rust 1.85+ and GTK4 development libraries.
# Dev build
cargo run
# Release build
cargo build --release
# Format + lint (mirrors CI)
cargo fmt && cargo clippy --all-targets -- -D warningsYou yeet apps into existence.
GPL-3.0
