Yus314/kasane: Drop-in Kakoune frontend with an extensible UI foundation · GitHub

💥 Check out this trending post from Hacker News 📖

📂 **Category**:

📌 **What You’ll Learn**:

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.

Kasane demo — fuzzy finder, pane splits, and color preview running as WASM plugins
GPU backend (--ui gui) — fuzzy finder, pane splits, and color preview are all WASM plugins

CI
License: MIT OR Apache-2.0
Rust: 1.85+

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.

Note

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 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:

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 💬,

    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.

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.

kasane [options] [kak-options] [file]... [+[:]|+:]

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.

See CONTRIBUTING.md for development setup and guidelines.

cargo test                             # Run all tests
cargo clippy -- -D warnings            # Lint
cargo fmt --check                      # Format check

MIT OR Apache-2.0

{💬|⚡|🔥} **What’s your take?**
Share your thoughts in the comments below!

#️⃣ **#Yus314kasane #Dropin #Kakoune #frontend #extensible #foundation #GitHub**

🕒 **Posted on**: 1776791255

🌟 **Want more?** Click here for more info! 🌟

By

Leave a Reply

Your email address will not be published. Required fields are marked *