Gabriel Kaszewski bd356f27d1 feat: production hardening (panic isolation, file logging, apps cache)
- Kernel::search wraps each plugin in catch_unwind; panics are logged and return []
- init_logging() adds daily rolling file at ~/.local/share/k-launcher/logs/
- AppsPlugin caches entries to ~/.cache/k-launcher/apps.bin via bincode; stale-while-revalidate on subsequent launches
- 57 tests pass
2026-03-18 12:59:24 +01:00
2026-03-15 19:03:30 +00:00
2026-03-15 19:03:30 +00:00

k-launcher

A lightweight, GPU-accelerated command palette for Linux (Wayland/X11). Zero Electron — every pixel rendered via WGPU. Async search that never blocks the UI.

Quick Start

git clone https://github.com/GKaszewski/k-launcher
cd k-launcher
cargo build --release
./target/release/k-launcher

Keybinds

Key Action
Type Filter results
/ Navigate
Enter Launch selected
Escape Close

Compositor Setup

k-launcher uses a normal window; configure your compositor to float it.

Hyprland (~/.config/hypr/hyprland.conf):

windowrule = float, ^(k-launcher)$
windowrule = center, ^(k-launcher)$
bind = SUPER, Space, exec, k-launcher

Sway (~/.config/sway/config):

for_window [app_id="k-launcher"] floating enable, move position center
bindsym Mod4+space exec k-launcher

Built-in Plugins

Trigger Plugin Example
(any text) Apps firefox
number/expression Calc 2^10 + 5
> prefix Shell > echo hello
/ or ~/ Files ~/Documents

External Plugins

Drop in community plugins — any language, no recompilation. Plugins are executables that communicate over stdin/stdout JSON:

# ~/.config/k-launcher/config.toml
[[plugins.external]]
name = "my-plugin"
path = "/usr/lib/k-launcher/plugins/my-plugin"

See Plugin Development for the full protocol.

Docs

Description
No description provided
Readme 623 KiB
Languages
Rust 98.4%
Makefile 1%
Shell 0.6%