1 unstable release
| 0.1.0 | Aug 11, 2025 |
|---|
#230 in Configuration
1MB
1K
SLoC
Hypr-showkey
A fast, configurable TUI application for displaying and searching Hyprland keybindings with fuzzy search functionality.

Features
-
Fuzzy Search - Quickly find keybindings by typing partial matches
-
Responsive Columns - Automatically adapts to terminal width (50+ chars per column)
-
Catppuccin Themes - Beautiful color themes with full customization
-
Configurable - Parse any Hyprland config files you specify
-
Categorization - Automatically categorize keybindings by function
-
Smart Filtering - Unbound keybindings are automatically filtered out
-
Fast - Built in Rust for speed and reliability
-
Easy Navigation - Vim-like keybindings for smooth navigation
Installation
Quick Setup with Task Runner
- Clone the repository:
git clone <repository-url>
cd hypr-showkey
- Set up the development environment:
task setup
- Install the application:
task install # Install to ~/.local/bin
# OR
task install-global # Install globally with cargo
Manual Installation
- Clone and build:
git clone <repository-url>
cd hypr-showkey
cargo build --release
- Install manually:
cp target/release/hypr-showkey ~/.local/bin/
Configuration
Create a configuration file at ~/.config/hypr-showkey/showkey.yaml:
# Hyprland configuration files to parse
hyprland_configs:
files:
- "conf/keybindings/default.conf"
- "conf/keybindings/custom.conf"
# Add your Hyprland config files here
# Optional: Categorize keybindings
categories:
applications:
name: "Applications"
description: "Launch applications and tools"
keywords: ["terminal", "browser", "filemanager"]
# UI settings
ui:
show_descriptions: true
search_threshold: 0.6
max_results: 50
# Theme (Catppuccin Mocha by default)
theme:
name: "catppuccin_mocha"
colors:
key_color: "#89b4fa" # Blue
action_color: "#cdd6f4" # Text
category_color: "#a6e3a1" # Green
# ... more colors
Usage
# Use default config location (~/.config/showkey.yaml)
hypr-showkey
# Use custom config file
hypr-showkey --config /path/to/config.yaml
# With Task runner
task dev # Run in development mode
task dev-config -- custom.yaml # Run with custom config
Development
This project uses Task for automation. Common commands:
task # Show all available tasks
task dev # Run in development mode
task build-release # Build optimized binary
task check # Check code without building
task test # Run tests
task lint # Run clippy linter
task fmt # Format code
task qa # Run all quality checks
task install # Install to ~/.local/bin
task setup-config # Copy example config
Keybindings
- Navigation:
↑/k(up),↓/j(down) - Search: Type to search keybindings
- Help:
?orF1to toggle help - Quit:
qorEsc - Clear Search:
Backspace
Display Features
- Responsive Layout: Automatically creates multiple columns based on terminal width
- Smart Filtering: Unbound keybindings (using
unbindor empty actions) are hidden - Minimum Width: Each column requires at least 50 characters for readability
Themes
Hypr-showkey comes with built-in Catppuccin themes:
catppuccin_mocha(default, dark)catppuccin_latte(light)catppuccin_macchiato(dark)catppuccin_frappe(dark)
Using Preset Themes
ui:
theme: "catppuccin_latte" # Use the light theme
# Or use short names: "mocha", "latte", "macchiato", "frappe"
Custom Colors
You can override specific colors while keeping a base theme:
ui:
theme:
name: "catppuccin_mocha"
colors:
key_color: "#ff0000" # Custom red for keys
border_color: "#00ff00" # Custom green for borders
Configuration File Paths
The app supports both relative paths (relative to ~/.config/hypr/) and absolute paths for Hyprland configuration files:
hyprland_configs:
files:
- "conf/keybindings/default.conf" # Relative to ~/.config/hypr/
- "/absolute/path/to/config.conf" # Absolute path
License
Licensed under the Apache License, Version 2.0
Dependencies
~11–24MB
~336K SLoC