Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neobeam

Neobeam

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)                           │
└─────────────────────────────────────────────┘

Features

  • Embedded Neovim — spawns nvim --embed and 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 VFXsonicboom, railgun, torpedo, pixiedust cursor modes
  • Live settings — in-app panel with hot-reload from disk

Requirements

  • 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.

Build & run

cargo build --release
./target/release/neobeam

On 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.

Settings

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

Project layout

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.

Development

# 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

Credits

  • 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.

License

MIT

Contributors

Languages