https://github.com/amirrezaask/neobeam
Missing GUI for Neovim
https://github.com/amirrezaask/neobeam
cargo gui native neovim rust vim wgpu wgpu-rs winit
Last synced: about 7 hours ago
JSON representation
Missing GUI for Neovim
- Host: GitHub
- URL: https://github.com/amirrezaask/neobeam
- Owner: amirrezaask
- Created: 2026-06-06T18:10:45.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-07T21:17:07.000Z (about 1 month ago)
- Last Synced: 2026-06-07T23:15:00.964Z (about 1 month ago)
- Topics: cargo, gui, native, neovim, rust, vim, wgpu, wgpu-rs, winit
- Language: Rust
- Homepage:
- Size: 7.39 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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](https://4coder.net/)'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 VFX** — `sonicboom`, `railgun`, `torpedo`, `pixiedust` cursor modes
- **Live settings** — in-app panel with hot-reload from disk
## Requirements
- [Rust](https://rustup.rs/) (2021 edition)
- [Neovim](https://neovim.io/) 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
```bash
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`](crates/neobeam) | Binary (`neobeam`): window loop, input, settings UI |
| [`crates/nvim-core`](crates/nvim-core) | Neovim session, protocol parsing, grid/window state |
| [`crates/editor-surface`](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
```bash
# 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](https://4coder.net/)** and Ryan Fleury — the original inspiration for smooth, frame-delta editor animations (cursor interpolation, trails, glow, power mode).
- **[Dear ImGui](https://github.com/ocornut/imgui)** — settings panel overlay.
- **[wgpu](https://wgpu.rs/)** — cross-platform GPU rendering.
## License
MIT