Kasane: New drop-in Kakoune front end with GPU rendering and WASM Plugins

Kakoune handles editing. Kasane rebuilds the rendering pipeline — terminal or GPU — and opens the full UI to extension: splits, image display, workspace persistence, and beyond.
Kakoune handles editing. Kasane rebuilds the rendering pipeline — terminal or GPU — and opens the full UI to extension: splits, image display, workspace persistence, and beyond. Extend it yourself with sandboxed WASM plugins — a complete one fits in 15 lines of Rust. Your kakrc works unchanged.
GPU backend ( --ui gui) — fuzzy finder, pane splits, and color preview are all WASM plugins
Getting Started · What's Different · Plugin Development · Vision
alias kak=kasane
and these improvements apply automatically:
Flicker-free rendering— no more tearing on redraws Multi-pane without tmux— native splits with per-pane status bars Clipboard that just works— Wayland, X11, macOS, SSH — no xclip needed Correct Unicode— CJK and emoji display correctly regardless of terminal
Add --ui gui for a GPU backend with system font rendering, smooth animations, and inline image display.
Existing Kakoune plugins (kak-lsp, …) work as before. See What's Different for the full list.
Arch Linux: yay -S kasane-bin | macOS: brew install Yus314/kasane/kasane | Nix: nix run github:Yus314/kasane | From source: cargo install --path kasane
kasane file.txt # your Kakoune config works unchanged
alias kak=kasane # add to .bashrc / .zshrc
GPU backend: cargo install --path kasane --features gui, then kasane --ui gui.
Plugins can add floating overlays, line annotations, virtual text, code folding, gutter decorations, input handling, scroll policies, and more. Bundled example plugins include cursor-line, fuzzy-finder, sel-badge, color-preview, pane-manager, image-preview, smooth-scroll, and prompt-highlight.
Each plugin builds into a single .kpk package — sandboxed, composable, and ready to install. A complete plugin in 15 lines — here is sel-badge in its entirety:
kasane_plugin_sdk::define_plugin! {
manifest: "kasane-plugin.toml",
state {
#[bind(host_state::get_cursor_count(), on: dirty::BUFFER)]
cursor_count: u32 = 0,
},
slots {
STATUS_RIGHT(dirty::BUFFER) => |_ctx| {
(state.cursor_count > 1).then(|| {
auto_contribution(text(&format!(" {} sel ", state.cursor_count), default_face()))
})
},
},
}
Kasane is stable as a Kakoune frontend — ready for daily use. The plugin API is evolving; see Plugin Development for the current ABI version and migration guides.
Source: Hacker News
















