Kasane: New drop-in Kakoune front end with GPU rendering and WASM Plugins
Summary
Kasane is a drop-in Kakoune frontend that adds GPU rendering, native multi-pane splits, and sandboxed WASM plugin support while keeping existing kakrc configs unchanged.
View Cached Full Text
Cached at: 04/21/26, 04:34 PM
Yus314/kasane
Source: https://github.com/Yus314/kasane
Kasane
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
What You Get
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.
Quick Start
Requires Kakoune 2024.12.09 or later. Binary packages skip the Rust toolchain requirement.
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.
See Getting Started for detailed setup.
Plugins
Plugins can add floating overlays, line annotations, virtual text, code folding, gutter decorations, input handling, scroll policies, and more. Bundled example plugins you can try today:
| Plugin | What it does |
|---|---|
| cursor-line | Highlight the active line with theme-aware colors |
| fuzzy-finder | fzf-powered file picker as a floating overlay |
| sel-badge | Show selection count in the status bar |
| color-preview | Inline color swatches next to hex values |
| pane-manager | Tmux-like splits with Ctrl+W — no external multiplexer needed |
| image-preview | Display images in a floating overlay anchored to the cursor |
| smooth-scroll | Animated scrolling |
| prompt-highlight | Visual feedback when entering prompt mode |
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()))
})
},
},
}
Start writing your own:
kasane plugin new my-plugin # scaffold from 6 templates
kasane plugin dev # hot-reload while you edit
See Plugin Development and Plugin API.
Status
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.
Usage
kasane [options] [kak-options] [file]... [+<line>[:<col>]|+:]
All Kakoune arguments work — kasane passes them through to kak.
kasane file.txt # Edit a file
kasane -c project # Connect to existing session
kasane -s myses file.txt # Named session
kasane --ui gui file.txt # GPU backend
kasane -l # List sessions (delegates to kak)
See docs/config.md for configuration.
Contributing
See CONTRIBUTING.md for development setup and guidelines.
cargo test # Run all tests
cargo clippy -- -D warnings # Lint
cargo fmt --check # Format check
License
MIT OR Apache-2.0
Similar Articles
A detailed introduction to Kakoune for the aspiring power user
This article provides a comprehensive introduction to Kakoune, a modal text editor, detailing its design philosophy, inverted grammar, and unique features like multiple selections and server-client architecture.
A simple project switcher for Kakoune
The author implements a lightweight project switcher for the Kakoune terminal editor using its built-in scripting, allowing users to register and fuzzy-find projects.
@kanewang_: Introducing Takumi v2 beta, the Rust engine that renders JSX to images without a headless browser. - renderSvg() for SV…
Introducing Takumi v2 beta, a Rust engine that renders JSX to images without a headless browser, adding SVG output, on-demand Google Fonts, language-aware text handling, and improved font caching.
I ported Kubernetes to the browser
Sam Rose from ngrok demonstrates how they ported Kubernetes to run entirely in the browser using WebAssembly, allowing developers to simulate a local cluster without needing a remote server or complex setup.
@cnakazawa: fate 1.0: The first full Async React Metaframework New in 1.0: * Zero-Config Live Views via SSE * Drizzle Support * "Na…
fate 1.0 is a new full async React metaframework featuring zero-config live views via SSE, Drizzle support, native HTTP, Void Router, Vite plugin, and clientside garbage collection. It aims to simplify data fetching by normalizing caches and composing views.