Skip to content

1337hero/yeet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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. 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

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

Custom 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"]

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