dorkhub

ned

ImGui Text Editor with Retro Style Shaders

nealmick
C++37223 forksMITupdated 6 days ago
git clone https://github.com/nealmick/ned.gitnealmick/ned
ned-3

Build Status macOS Debian Windows

A retro-style text editor with GL shader effects. NED includes Tree-sitter syntax highlighting, multi-cursor editing, LSP integration, git line markers, and a built-in terminal.

Download

ned.demo.github.mp4

Shader Effects: Static Noise, Burn In, Screen Curvature, Bloom, Vignetting

Amber Solarized
amber.github.mp4
solarized.github.mp4
Ned Custom
ned.github.mp4
custom.github.mp4

Notable Features

  • OpenGL CRT-style shaders (noise, burn-in, curvature, bloom, scanlines, jitter, and more)
  • Tree-sitter syntax highlighting for 15+ languages (C/C++, JS/TS/TSX, Python, Rust, Go, Java, C#, Ruby, Kotlin, HTML/CSS, JSON, TOML, HCL, Bash, …)
  • Multi-cursor editing (Option/Alt+↑/↓ to add carets; Cmd/Ctrl+Enter in find to select all matches)
  • LSP integration (goto definition, find references, symbol info) with configurable language servers
  • Git changed-line markers in the gutter via libgit2
  • Fullscreen terminal (ImGui-Terminal) toggled from the editor
  • File tree explorer, fuzzy file finder, in-buffer find, and go-to-line
  • Rainbow cursor and line numbers so the cursor is hard to lose
  • Theme profiles (Ned, Amber, Solarized, custom) with live settings
  • Embeddable ned_embed library for Dear ImGui hosts (multi-tab docking)

Build from source

Prerequisites

  • CMake 3.10 or higher
  • C++20 compatible compiler
  • OpenGL, GLFW3, GLEW
  • FreeType and Fontconfig
  • Curl (and OpenSSL on Linux for libgit2 HTTPS)

Clone the repository with its submodules:

# Make sure you clone with the recursive flag
git clone --recursive https://github.com/nealmick/ned
cd ned
git submodule init
git submodule update

# macOS (Apple Silicon / ARM64)
brew install clang-format cmake llvm glfw glew pkg-config curl freetype fontconfig

# Ubuntu/Debian
sudo apt install cmake libglfw3-dev libglew-dev libgtk-3-dev pkg-config clang \
  libcurl4-openssl-dev libfreetype6-dev libfontconfig1-dev libssl-dev zlib1g-dev \
  clang-format mesa-utils dpkg-dev

# For Windows, the dependencies are installed using the build script (vcpkg)

Building the Project

macOS and Linux (Ubuntu/Debian)

./scripts/build.sh
# Build only (no launch):  ./scripts/build.sh --no-run
# Clean rebuild:           ./scripts/build.sh --clean

Windows

./scripts/build-win.bat
# On Windows, the build script will attempt to install Visual Studio with Build Tools. 10–20 minutes.
# After VS has been installed, you must close and re-open PowerShell and run ./scripts/build-win.bat again.
# Subsequent rebuilds are much faster after the initial dependencies have been installed.

Tests

./scripts/test.sh
# Catch2 suites cover the document model, commands, multi-cursor, undo, save, git, and UTF-8 helpers.

Create app package

./scripts/pack-mac.sh
./scripts/pack-deb.sh

# Bypass quarantine/translocation, or sign with your own Apple developer account
xattr -dr com.apple.quarantine Ned.app

Embed Ned in Your Dear ImGui Projects

embed.demo.github.mp4

github.com/nealmick/ImGui_Ned_Embed

Ned can be embedded in other ImGui applications through the ned_embed library. The embed host adds multi-tab docking on top of the same editor core used by the standalone app — file explorer, terminal, themes, emoji fonts, and LSP are available to the host. The demo repository shows how to wire it into a project.

About the Project

Ned is a Dear ImGui text editor aimed at a lightweight, embeddable core with a strong retro aesthetic.

Editor core is layered as Commands → Operations → document state (copy-on-write rope buffer). Outside code talks to the editor through EditorApi. Highlighting, save, undo, and git are focused services behind events rather than a monolithic editor class.

Syntax highlighting uses Tree-sitter with query files for the languages above. Multi-cursor and selection live in view state; document mutation stays a stream of single text ops. LSP is driven by a configurable lsp.json (clangd, gopls, pyright/typescript-language-server, rust-analyzer, and others). The terminal is a fullscreen overlay powered by ImGui-Terminal. Shader effects, theme profiles, and keybinds live under user config (~/ned/config) seeded from bundled resources.

Standalone Ned is single-buffer; multi-tab editing is provided by NedEmbed for host applications. Platforms tested: macOS ARM64, Windows x64, and Debian. Windows builds use vcpkg via the build script.

If you have questions or issues, feel free to reach out.

more like this

Scythe

SCYTHE is a lightweight, C#-based game engine focused on modifiability and rapid iteration using Raylib.

C#50

search

search projects, people, and tags