A GPU-accelerated Neovim GUI written in Rust. It embeds Neovim, renders the editor with wgpu, and layers smooth motion on top — inspired by 4coder's feel.
┌─────────────────────────────────────────────┐
│ winit window · wgpu renderer · ImGui │
├─────────────────────────────────────────────┤
│ editor-surface (glyphs, animations, VFX) │
├─────────────────────────────────────────────┤
│ nvim-core (RPC session, grid state, input)│
├─────────────────────────────────────────────┤
│ Neovim (--embed) │
└─────────────────────────────────────────────┘
- Embedded Neovim — spawns
nvim --embedand speaks the UI protocol over RPC - GPU text rendering — glyph atlas, syntax highlighting, multi-grid floats and splits
- Smooth animations — interpolated cursor, scroll springs, highlight flashes, float fade/slide
- Cursor effects — glow, trails, squash/stretch, and optional power-mode particles
- Cursor VFX —
sonicboom,railgun,torpedo,pixiedustcursor modes - Live settings — in-app panel with hot-reload from disk
- Rust (2021 edition)
- Neovim on your
PATH(used via--embed) - A monospace font; Nerd Font glyphs are supported for icons
macOS is the primary target today, but the editor runs on other platforms too.
cargo build --release
./target/release/neobeamOn first launch, a default config is written to:
~/.config/neobeam/settings.json
Edit that file while the app is running — changes reload automatically when the settings panel is closed.
Open the in-app settings panel with ⌘, (Cmd+Comma). Press Esc to cancel, or Apply to save.
| Setting | Description |
|---|---|
font_family |
Monospace family name, or null for system default |
font_size |
Cell height in pixels |
line_height |
Line spacing multiplier |
animations_enabled |
Master toggle for all motion |
power_mode |
Screen shake and typing particles |
cursor_glow |
Bloom around the cursor (0 = off) |
scroll_animation_length |
Smooth-scroll duration in seconds |
vfx_modes |
Comma-separated cursor VFX, e.g. railgun,sonicboom |
| Crate | Role |
|---|---|
crates/neobeam |
Binary (neobeam): window loop, input, settings UI |
crates/nvim-core |
Neovim session, protocol parsing, grid/window state |
crates/editor-surface |
wgpu renderer, fonts, animation engine, cursor VFX |
nvim-core is deliberately windowing- and GPU-agnostic so protocol and grid logic can be tested without a display.
# Run tests (spawns real nvim processes for integration tests)
cargo test
# Verbose logging (`cargo run` stays attached to the terminal)
RUST_LOG=neobeam=debug cargo run -p neobeam
# Release binary detaches from the shell by default; keep the terminal for logs:
RUST_LOG=neobeam=debug ./target/release/neobeam --foreground- 4coder and Ryan Fleury — the original inspiration for smooth, frame-delta editor animations (cursor interpolation, trails, glow, power mode).
- Dear ImGui — settings panel overlay.
- wgpu — cross-platform GPU rendering.
MIT