A minimal app launcher for Wayland
  • Rust 86.1%
  • CSS 5.6%
  • Just 3.2%
  • Nix 3%
  • Shell 2.1%
Find a file
2026-02-22 19:05:18 -07:00
.github/workflows ci: fix release workflow permissions, bump to gh-release v2 2026-02-22 18:15:26 -07:00
defaults feat: add show_shortcuts and show_descriptions config options 2026-02-22 18:18:58 -07:00
docs Updated the README.md with a few more examples about using custom commands 2025-12-17 20:28:48 -07:00
specs Merge feat/open-on-active-monitor into main 2026-02-22 18:08:09 -07:00
src Harden app launching and history file handling 2026-02-22 18:30:04 -07:00
.gitignore Fix pkgver() for repos without tags 2025-12-17 09:24:20 -07:00
.SRCINFO Fix pkgver() for repos without tags 2025-12-17 09:24:20 -07:00
AGENTS.md Bump version to 0.1.3 2025-12-17 17:43:04 -07:00
Cargo.lock Harden app launching and history file handling 2026-02-22 18:30:04 -07:00
Cargo.toml Harden app launching and history file handling 2026-02-22 18:30:04 -07:00
CHANGELOG.md Adding Change Log 2026-02-22 19:05:18 -07:00
CONTRIBUTING.md Bump version to 0.1.3 2025-12-17 17:43:04 -07:00
flake.nix Adding Nix Flake 2025-12-17 17:02:20 -07:00
justfile making my life easier 2025-12-17 16:58:44 -07:00
LICENSE project start 2025-12-17 01:41:51 -07:00
PKGBUILD security: Fix command injection vulnerability in app launching 2025-12-17 20:46:33 -07:00
README.md Harden app launching and history file handling 2026-02-22 18:30:04 -07:00
yeet.code-workspace project start 2025-12-17 01:41:51 -07:00
yeet.png Update ReadMe w/ pretty pic 2025-12-17 01:48:58 -07:00

Yeet

License Rust

Hey 👋 I'm @1337Hero and this is Yeet! A fast, minimal app launcher for Wayland. That's it.

Yeet!

What Yeet Is

Yeet launches apps. That's it. Desktop entry commands run directly (without shell evaluation), and apps.custom commands run through the shell so it can also act as a command palette.

  • 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

What Yeet Isn't

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.

Installation

Arch Linux (AUR)

yay -S yeet-git

Nix

# Run directly
nix run github:1337hero/yeet

# Install to profile
nix profile install github:1337hero/yeet

From Source

git clone https://github.com/1337hero/yeet
cd yeet
cargo build --release
sudo cp target/release/yeet /usr/local/bin/

Dependencies: GTK4, gtk4-layer-shell

Usage

yeet
  • Type to search
  • Enter — Launch selected app
  • Up/Down — Navigate results
  • Scroll / Trackpad — Navigate results
  • Alt+1-9 — Quick launch by position
  • Escape — Close

Bind it to a key in your compositor (e.g., Super+Space in Hyprland/Sway).

Configuration

Config lives in ~/.config/yeet/. Yeet ships with sensible defaults — only override what you need.

config.toml

[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 terms

Custom Entries

apps.custom.exec is passed to the shell, so Yeet doubles as a command palette. Anything you can run in a terminal becomes a launchable "app."

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 ~/projects/yeet"
icon = "visual-studio-code"
keywords = ["dev", "rust", "launcher"]

style.css

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

Building

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 warnings

Why "Yeet"?

You yeet apps into existence.

License

GPL-3.0