Skip to content

RobbyTSP/ReIDE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReIDE

ReIDE is an ultra-lightweight, high-performance, and adaptive dark-mode IDE built from the ground up utilizing x86_64 Assembly, Free Pascal (FPC), and Rust. It runs directly on the X11 windowing system with zero heavy dependencies (no electron, no web-tech, no massive UI frameworks).

License Language


🚀 Key Features

  • Hybrid Architecture:
    • Assembly (x86_64): Optimized register-based char/icon blitter (font.pas) with zero stack frame overhead.
    • Free Pascal: GUI framework, tab manager, X11 event loop, and Unix pseudo-terminal (PTY) shell spawner.
    • Rust: High-performance tokenizer, code syntax highlighter, and shebang-based language detector.
  • Universal Language Highlighting: Dynamically parses shebang headers (#!/bin/bash, #!/usr/bin/env python) and file extensions to support 15+ languages (Pascal, Rust, ASM, C/C++, Python, Go, JS/TS, HTML, CSS, Markdown, JSON, YAML/TOML).
  • Responsive Layout & Buffer Resizing: Listens to X11 ConfigureNotify events. Resizing the window reallocates the framebuffer on the fly, adjusts text scrolls, and scales the terminal dimensions dynamically.
  • Integrated PTY Shell Terminals: Multiple concurrent terminal tabs at the bottom with standard ANSI escape color parsing and process monitoring (automatically respawns shells if they exit).
  • Live Debugger Panel: Dedicated "Logs" tab displaying internal events (FFI calls, keys, window resizes) in real-time, backed up by file logs in /home/USER/.reide/logs/ide.log.
  • Session Persistence: Saves and restores your workspace, active tabs, and cursor offsets automatically when you close and reopen the editor.
  • Top Utility Menu: Interactive buttons [ New ] [ Open ] [ Save ] [ Save As ] for mouse-driven workflows.

⌨️ Keyboard Shortcuts

Shortcut Action
Ctrl + N Instantly create a new untitled buffer in a new tab
Ctrl + O Open / Create file path input prompt
Ctrl + S Save current active file
Ctrl + A Clear all text in the active tab (reset cursor to 0,0)
Ctrl + F Search text in active document (scrolls automatically)
Ctrl + Q Safe Exit (saves session files & cursor positions)

🛠️ Build & Installation

Prerequisites

You need the Free Pascal Compiler, Cargo (Rust), and X11 development headers installed on your system.

Debian / Ubuntu:

sudo apt update
sudo apt install fpc cargo libx11-dev make

Compilation

Compile the Rust shared library and FPC binary in one step using the provided Makefile:

make

Running

To launch the IDE:

./ide

To open specific files directly in new tabs:

./ide main.pas src/lib.rs Makefile

🔌 Creating Assembly Plugins

ReIDE features a lightweight, Unix-style plugin manager. Plugins are written in raw x86_64 Assembly (.asm), stored in the ~/.reide/plugins/ directory, and dynamically scanned by the IDE.

How it works:

  1. Dynamic Compilation: When you click a plugin from the [ Plugins ] dropdown menu, the IDE compiles the raw .asm file on-the-fly using nasm and ld:
    nasm -f elf64 -o plugin.o plugin.asm && ld -o plugin plugin.o
  2. Text Filtering: Active plugins act as text streams. The IDE pipes the current editor buffer into the plugin's stdin, captures the modified output from stdout, and replaces the editor buffer in real-time.
  3. Live Toggling: Click a plugin in the list to toggle it:
    • Active (Red outline): Runs reactively on every keypress (e.g., converting all typed text to uppercase live).
    • Inactive (Blue outline): Turns the plugin filter off.

Example: Uppercase Converter (uppercase.asm)

Save this code in ~/.reide/plugins/uppercase.asm to try it out:

section .bss
    buf resb 4096

section .text
    global _start

_start:
.loop:
    ; read(0, buf, 4096)
    mov rax, 0      ; sys_read
    mov rdi, 0      ; stdin
    mov rsi, buf    ; buffer
    mov rdx, 4096   ; size
    syscall

    test rax, rax   ; EOF or error
    jle .exit

    mov r8, rax     ; save bytes read
    mov rcx, 0      ; index

.process:
    cmp rcx, r8
    jge .write       ; finished processing buffer, write it out
    mov al, [rsi + rcx]
    cmp al, 'a'
    jl .skip
    cmp al, 'z'
    jg .skip
    sub al, 32      ; to uppercase
    mov [rsi + rcx], al
.skip:
    inc rcx
    jmp .process

.write:
    ; write(1, buf, r8)
    mov rax, 1      ; sys_write
    mov rdi, 1      ; stdout
    mov rsi, buf
    mov rdx, r8     ; bytes to write
    syscall
    jmp .loop

.exit:
    mov rax, 60     ; sys_exit
    mov rdi, 0      ; status 0
    syscall

📁 Project Structure

  • ide.pas — Main loop, X11 layout, text buffers, mouse/keyboard handler, PTY shell manager, and settings.
  • font.pas — Contains the 8x16 console bitmap font and the custom x86_64 assembly blitter routines (DrawCharASM).
  • src/lib.rs — Rust FFI library for tokenization, language detection, and custom tab icons.
  • Makefile — Build script orchestrating Cargo and FPC compilers.

📝 License

This project is licensed under the GNU Affero General Public License v3 (AGPLv3). See the LICENSE file for details.

About

ReIDE is an ultra-lightweight, high-performance, and adaptive dark-mode IDE built from the ground up utilizing x86_64 Assembly, Free Pascal (FPC), and Rust. It runs directly on the X11 windowing system with zero heavy dependencies (no electron, no web-tech, no massive UI frameworks)

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Contributors