A fast, extensible desktop launcher for Linux.
Hamr learns from your usage patterns to surface what you need, when you need it. Type a few characters to launch apps, calculate math, search files, access clipboard history, and more.
- Frecency ranking - Results sorted by frequency + recency
- Learned shortcuts - Type "q" to find QuickLinks if that's how you found it before
- Fuzzy matching - Fast, typo-tolerant search powered by nucleo
- Smart suggestions - Context-aware suggestions based on time and usage
- Extensible plugins - JSON protocol, any language (Python, Bash, Go, Rust)
- Live updates - Plugins emit real-time updates without refreshing the list
- Rich UI - Forms, cards, sliders, gauges, preview panels, grid browsers
curl -fsSL https://hamr.run/install.sh | bashThis downloads the latest release binaries, installs to ~/.local/bin, copies essential plugins, and sets up systemd services.
Dependencies: GTK4 4.20+, gtk4-layer-shell, Python 3.9+
wget https://github.com/Stewart86/hamr/releases/latest/download/hamr-linux-x86_64.tar.gz
tar -xzf hamr-linux-x86_64.tar.gz
cd hamr-linux-x86_64
cp hamr hamr-daemon hamr-gtk hamr-tui ~/.local/bin/
cp -r plugins ~/.local/bin/
hamr install| Compositor | Status | Notes |
|---|---|---|
| Hyprland | ✅ Supported | Full functionality with layer-shell |
| Niri | ✅ Supported | Full functionality with layer-shell |
| Sway | ✅ Supported | Works with layer-shell protocol |
| KDE Wayland | ✅ Supported | Requires layer-shell support |
| GNOME Wayland | ❌ Not Supported | No layer-shell protocol support |
| X11 | ❌ Not Supported | Wayland-only application |
Installer Flags:
| Flag | Description |
|---|---|
--check |
Dry-run mode: show what would be installed without making changes |
--yes |
Assume yes for all prompts (non-interactive mode) |
--reset-user-data |
Reset user configuration and plugins (backup created) |
Requires Rust 1.88+, GTK4 4.20+, gtk4-layer-shell.
# Install dependencies (Arch)
sudo pacman -S gtk4 gtk4-layer-shell rust python
# Install dependencies (Fedora)
sudo dnf install gtk4-devel gtk4-layer-shell-devel rust python3
# Install dependencies (Ubuntu/Debian)
sudo apt install libgtk-4-dev gtk4-layer-shell-dev rustc cargo python3
# Clone and build
git clone https://github.com/stewart86/hamr
cd hamr
./install.sh
# Or build manually
cargo build --release
mkdir -p ~/.local/bin
cp target/release/{hamr,hamr-daemon,hamr-gtk,hamr-tui} ~/.local/bin/
hamr install# Try without installing
nix run github:stewart86/hamr
# Install to profile
nix profile install github:stewart86/hamrOr add to your flake:
{
inputs.hamr.url = "github:stewart86/hamr";
# ...
nixpkgs.overlays = [ hamr.overlays.default ];
environment.systemPackages = [ pkgs.hamr ];
}# Pre-built binary (recommended - faster install)
paru -S hamr-bin
# Or build from source
paru -S hamrhamr # Start launcher (auto-starts daemon)
hamr toggle # Toggle visibility
hamr plugin clipboard # Open specific plugin
hamr status # Check daemon statusHyprland (~/.config/hypr/hyprland.conf):
exec-once = hamr
bind = $mainMod, SPACE, exec, hamr toggle
bind = $mainMod, V, exec, hamr plugin clipboard
Niri (~/.config/niri/config.kdl):
spawn-at-startup "hamr"
binds {
Mod+Space { spawn "hamr" "toggle"; }
Mod+V { spawn "hamr" "plugin" "clipboard"; }
}Systemd (optional):
# The installer sets up systemd services (recommended for auto-start on login)
hamr install
systemctl --user start hamr-gtk
# Without systemd, just run:
hamr| Plugin | Description |
|---|---|
apps |
Application launcher with categories |
shell |
Execute shell commands |
calculate |
Calculator with currency, units, temperature |
clipboard |
Clipboard history with search |
power |
Shutdown, reboot, suspend, logout |
Additional plugins available: bitwarden, dictionary, emoji, files, quicklinks, snippets, totp, weather, wifi, youtube.
| Prefix | Function | Prefix | Function |
|---|---|---|---|
~ |
File search | ; |
Clipboard history |
/ |
Actions & plugins | ! |
Shell history |
= |
Calculator | : |
Emoji picker |
Prefixes are configurable in ~/.config/hamr/config.json.
- Installation - Full installation guide
- Configuration - All config options
- Logging - Log paths, env vars, debugging
- Theming - Material Design 3 colors, matugen/pywal
- Troubleshooting - Common issues and solutions
- Plugin Development - Create your own plugins
- API Reference - Plugin protocol specification
- Architecture - System design and crate structure
# Build
cargo build
# Run tests
cargo test
# Run with debug logging
RUST_LOG=debug cargo run -p hamr-daemon
# Test a plugin
cargo run -p hamr -- test shell "ls -la"hamr-cli hamr-gtk hamr-tui
\ | /
\ | /
+----JSON-RPC 2.0---+
|
hamr-daemon
|
hamr-core
|
+---------+---------+
| | |
search plugins frecency
- hamr-core: Platform-agnostic core (search, plugins, frecency, indexing)
- hamr-daemon: Socket server wrapping core
- hamr-gtk: GTK4 native UI with layer shell
- hamr-tui: Terminal UI for headless use
- hamr-cli: Command-line interface
Contributions welcome! Please read the Architecture Guide and Agent Guidelines before submitting PRs.
MIT License - see LICENSE for details.
