my-grid

A spatial canvas editor for your terminal. Think vim meets infinite whiteboard, with live terminal zones and system monitoring built in.
"Navigate to information, don't open windows." – Inspired by Jef Raskin's The Humane Interface
Why my-grid?
Traditional terminals are linear. my-grid gives you infinite 2D space where you can:
- ✏️ Draw and diagram directly in ASCII
- 📊 Embed live terminals (PTY zones) anywhere on the canvas
- 🔄 Monitor commands that auto-refresh (watch zones)
- 🗺️ Spatially organize your development workspace
- 🚀 Navigate like vim with bookmarks and modal editing
Perfect for:
- DevOps dashboards (disk usage, logs, git status in one spatial view)
- System administration (live terminals + monitoring + notes)
- ASCII art and diagramming
- Spatial note-taking and documentation
- Terminal-native project workspaces
🎬 Demo
# Demo recording coming soon!
# Run: asciinema rec demo/basic-usage.cast
Try it yourself:
pip install -r requirements.txt
python mygrid.py
:layout load devops # Load DevOps monitoring layout
⚡ Quick Start
Installation
# Clone the repository
git clone https://github.com/jcaldwell-labs/my-grid.git
cd my-grid
# Install dependencies
pip install -r requirements.txt
# Run the editor
python mygrid.py
First Steps
# Navigate with vim keys or arrows
wasd / ←↓↑→
# Enter edit mode and type
i
Hello World!
<Esc>
# Draw a rectangle
:rect 20 10
# Create a live terminal zone (Unix/WSL)
:zone pty TERM 80 24
# Save your work
:w myproject.json
# Load a pre-built workspace
:layout load development
🎯 Core Features
Infinite Canvas
- Sparse storage – Only stores non-empty cells, unlimited space
- Configurable origin – Y-up (mathematical) or Y-down (screen) coordinates
- Grid overlay – Major/minor grid lines for alignment
Vim-Style Navigation
- Modal editing – NAV, EDIT, PAN, COMMAND, VISUAL, DRAW modes
- Bookmarks – Quick jump with
m/' + 36 slots (a-z, 0-9)
- Fast movement –
WASD for 10x speed
Dynamic Zones (The Killer Feature)
| Zone Type | Description | Use Case |
|---|
| PIPE | One-shot command output | tree, ls, snapshot data |
| WATCH | Auto-refreshing commands | git status, df -h, monitoring |
| PTY | Live interactive terminal | Full shell, Python REPL, vim |
| FIFO | Named pipe listener (Unix) | External process communication |
| SOCKET | TCP port listener | Remote control, API integration |
Example: DevOps Dashboard
:zone watch DISK 40 10 30s df -h
:zone watch GIT 50 15 5s git status --short
:zone pty TERM 80 24
:zone create NOTES 0 0 40 20
Layouts (Workspace Templates)
- Save/load zone configurations
- Pre-built layouts:
devops, development, monitoring
- YAML format – Easy to share and version control
Visual Selection & Drawing
- Visual mode – Select rectangular regions, yank/delete/fill
- Draw mode – Trace lines with box-drawing characters
- Box tools – Integrate
boxes, figlet for ASCII art
🎮 Key Bindings
Navigation Mode (default)
| Key | Action |
|---|
wasd / arrows | Move cursor |
WASD | Fast move (10x) |
i | Enter edit mode |
p | Toggle pan mode |
v | Visual selection mode |
D | Draw mode |
: or / | Command mode |
m + key | Set bookmark (a-z, 0-9) |
' + key | Jump to bookmark |
g / G | Toggle grid |
0 | Toggle origin marker |
Esc | Exit current mode |
Edit Mode
| Key | Action |
|---|
| Type | Insert characters |
Esc | Return to NAV mode |
Visual Mode
| Key | Action |
|---|
wasd / arrows | Extend selection |
y | Yank (copy) |
d | Delete selection |
f | Fill with character |
Esc | Cancel |
📝 Essential Commands
File Operations