A modular, menu-agnostic launcher for Linux
Project description
menu-kit
A modular, menu-agnostic launcher for Linux with plugin-first architecture.
Overview
menu-kit is a launcher/menu system that works with multiple menu backends (rofi, fuzzel, dmenu, fzf) while providing a unified plugin system. Everything is a plugin - file browsing, app launching, settings, search.
Status: Early development - architecture defined, implementation starting.
Features (Planned)
- Menu-agnostic - Works with rofi, fuzzel, dmenu, wofi, bemenu, fzf
- Plugin-first - Core features implemented as plugins
- Smart indexing - .gitignore aware file scanning
- SQLite backend - Fast queries, frequency tracking, incremental updates
- TOML config - Human-readable configuration
- Systemd integration - Background index rebuilding
Architecture
┌─────────────────────────────────────┐
│ Core (Python 3.11+) │
│ - Config (TOML) │
│ - Database (SQLite) │
│ - Plugin loader │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ Menu Abstraction Layer │
│ (stdin/stdout dmenu protocol) │
└──────────────┬──────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
rofi fuzzel dmenu
Built-in Plugins
| Plugin | Description |
|---|---|
apps |
Application launcher (.desktop files) |
files |
File browser with contextual navigation |
settings |
In-menu configuration |
calculator |
Evaluate expressions |
websearch |
Configurable search engines |
Requirements
- Python 3.11+
- One of: rofi, fuzzel, dmenu, fzf
Configuration
Config lives at ~/.config/menu-kit/config.toml:
[menu]
backend = "auto" # auto-detect, or: rofi, fuzzel, dmenu, fzf
prompt = ">"
lines = 15
[indexing]
watch_folders = ["~/"]
ignore_patterns = [".git", "node_modules", "__pycache__"]
respect_gitignore = true
[plugins]
enabled = ["files", "apps", "settings", "calculator"]
Background
menu-kit is the spiritual successor to dmenu-extended, redesigned with:
- Menu-agnostic architecture (not tied to dmenu)
- Plugin-first design (everything is a plugin)
- Modern Python practices (type hints, dataclasses, SQLite)
- Better separation of concerns
Licence
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters