README
ΒΆ
βββ βββββββββββββ ββββββββ βββ βββ ββββββββββββββββββββββββββ βββ βββββββββ βββββββββ ββββ ββββ ββββββββββ βββββββββ βββ βββββββ βββββββββββββββββββ βββ βββββ ββββββββββ ββββββββ βββ
Vim Integrated Development Environment
Vim Inbuilt-editing Dynamically-tiling file Explorer
A modern, keyboard-driven terminal file manager and editor built in Go.
VIDE1 Name Meaning
VIDE1 intentionally carries two complementary expansions, reflecting the dual nature of the tool:
- Vim Integrated Development Environment
- Vim Inbuilt-editing Dynamically-tiling file Explorer
These two meanings describe the two halves of VIDE1βs identity: a modal, keyboard-driven editor inspired by Vim, and a dynamic tiling file explorer inspired by modern tiling window managers.
Why VIDE1 Has Two Meanings
VIDE1 was designed from the start to be both an editor and an environment. Traditional terminal tools tend to split these roles: one program for editing, another for file navigation, another for terminal panes, another for workspace management. VIDE1 merges all of these into a single binary.
Because of that hybrid nature, the name intentionally reflects both sides of the tool:
- As a Vim Integrated Development Environment, VIDE1 behaves like a lightweight modal IDE with panes, previews, terminals, and editing modes.
- As a Vim Inbuilt-editing Dynamically-tiling file Explorer, VIDE1 behaves like a fast, Miller-column file navigator with dynamic tiling and inline editing.
The dual meaning isnβt a pun β itβs a declaration of scope. VIDE1 is not just an editor with a file tree, and not just a file manager with an editor bolted on. It is both, equally, by design.
This dual identity guides its architecture, keybindings, and workflow philosophy:
everything is a pane, everything is modal, everything is keyboard-first.
Overview
VIDE1 is a fully keyboard-driven, terminal-native development workspace that combines a Vim-style file browser, a Hyprland-style dynamic tiling layout engine, an inline code editor, an asynchronous syntax-highlighted file previewer, and a live embedded PTY shell β all inside a single TUI binary written in pure Go.
No Electron. No LSP daemon. No config files needed to get started. Just launch and go.
Features
ποΈ Miller Column File Browser
Navigate your filesystem using the classic Miller Columns pattern β three columns showing your parent directory, current directory, and a live preview of the selected item.
πͺ Hyprland-Style Dynamic Tiling
Split any pane horizontally or vertically on demand. The layout engine recursively partitions terminal dimensions using a binary tree β every pane gets exactly the space it deserves, recalculated live on resize.
π Async Syntax-Highlighted Preview
Hover over any code file and a goroutine immediately fires to load and highlight it using Chroma. The UI never blocks. Line numbers included.
βοΈ Inline Vim Editor
Open any file directly inside a tiling pane. A fully modal editor β Normal, Insert, and Command modes β with no external process spawned. Your buffer, your pane, your workspace.
π» Embedded PTY Terminal
Spawn a live interactive shell inside any pane with ctrl+t. Keyboard input is piped directly to the shell process via a pseudo-terminal. stdout/stderr stream back in real time.
π¨ TrueColor Aesthetics
- 24-bit color One Dark palette
- Nerd Font icons next to every file entry
- Per-extension neon color coding
- Rounded gradient borders (active pane: magenta, inactive: gray)
- Color-coded status bar showing current mode and path
Installation
Prerequisites
- Go 1.21 or later
- A terminal with TrueColor support (kitty, Alacritty, WezTerm, iTerm2, etc.)
- A Nerd Font installed and set as your terminal font (for icons)
Build from source
git clone https://github.com/sidx1-scratch/vide1
cd vide1
go build -o vide1 .
./vide1
Or run directly without building:
go run .
Install a release
If you don't want to compile from source or mess around with git or go, you can download a pre-built binary from the Releases page (Linux and macOS only because the pty terminal only supports unix-like systems).
Install to PATH (System-wide)
To make VIDE1 available from anywhere on your system, install it to a directory in your PATH:
Option 1: Install to /usr/local/bin (Linux/macOS)
# Build and install system-wide
sudo go build -o /usr/local/bin/vide1 .
# Or if you already built it
sudo cp vide1 /usr/local/bin/
Option 2: Install to ~/.local/bin (User-local, Linux/macOS)
# Create the directory if it doesn't exist
mkdir -p ~/.local/bin
# Build and install
go build -o ~/.local/bin/vide1 .
# Or copy existing binary
cp vide1 ~/.local/bin/
# Add ~/.local/bin to your PATH if not already there
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
# Or for Zsh:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
# Reload your shell
source ~/.bashrc # or source ~/.zshrc
Option 3: Use Go install (Recommended for Go developers)
# This installs directly to $GOPATH/bin (which should be in your PATH)
go install github.com/sidx1-scratch/vide1@latest
After installation, you can run VIDE1 from any directory:
vide1
Usage
Basic Usage
Launch VIDE1 from your terminal:
# Start in current directory
vide1
# Start in a specific directory
vide1 /path/to/project
# Start in your home directory
vide1 ~
Quick Start Guide
- Navigate the file tree using
j/kto move up/down - Enter a directory with
l,β, orEnter - Go back with
horβ - Preview files automatically β just select them
- Open a file for editing with
e - Edit files using Vim-like modal editing:
ito enter Insert modeEscto return to Normal mode:to enter Command mode:wto save,:qto quit
- Split panes with
Ctrl+w - Open a terminal with
Ctrl+t - Switch panes with
Tab - Quit with
qorCtrl+c
Example Workflow
# Start VIDE1 in your project
vide1 ~/myproject
# Navigate to src/
j j l (or use arrow keys)
# Open main.go for editing
e
# Enter insert mode and make changes
i
# Save and return to normal mode
Esc
:w
# Quit the editor
:q
# Open a terminal in the new pane
Ctrl+t
# Switch back to file browser
Tab
# Quit VIDE1
q
Advanced Usage Tips
- Multiple panes: Create a complex layout by repeatedly splitting panes with
Ctrl+w - Terminal integration: Run commands in the terminal pane while editing files in another
- File preview: Preview files without opening them by navigating through the file tree
- Quick navigation: Use
handlto quickly traverse directory structures - Workspace management: Create custom layouts for different projects
Keybindings
ποΈ Explorer Mode
| Key | Action |
|---|---|
j / β |
Move cursor down |
k / β |
Move cursor up |
l / β / enter |
Enter directory |
h / β |
Go to parent directory |
e |
Open file in inline editor |
q |
Quit VIDE1 |
ctrl+c |
Force quit |
πͺ Tiling / Workspace
| Key | Action |
|---|---|
ctrl+w |
Split active pane (auto direction) |
ctrl+shift+tab |
Split active pane (alternate binding) |
tab |
Cycle focus to next pane |
ctrl+t |
Spawn a new live terminal pane |
βοΈ Editor β Normal Mode
| Key | Action |
|---|---|
i |
Enter Insert mode |
: |
Open Command bar |
h / j / k / l |
Navigate cursor (left/down/up/right) |
esc |
Return to Normal mode |
βοΈ Editor β Insert Mode
| Key | Action |
|---|---|
esc |
Return to Normal mode |
| Any key | Type into the buffer |
βοΈ Editor β Command Mode
| Command | Action |
|---|---|
:w + enter |
Write buffer to disk |
:q + enter |
Quit editor, return to file tree |
:wq + enter |
Write and quit |
esc |
Cancel command |
π» Terminal Pane
| Key | Action |
|---|---|
| Any key | Sent directly to shell |
ctrl+d |
EOF / exit shell |
ctrl+c |
Interrupt running process |
tab |
(focus must not be in terminal) Switch pane |
Tip: Press
tabto move focus away from a terminal pane before using other workspace commands.
Architecture
vide1/
βββ main.go # Bubble Tea model, tiling WM (wmModel), pane navigator (paneModel)
βββ load_file.go # Async file loader β Chroma syntax highlighter β tea.Cmd
βββ terminal_pane.go # PTY-backed TerminalPane, goroutine read loop, key routing
βββ theme.go # TrueColor palette, Nerd Font icons, per-ext styles, status bar
βββ go.mod
βββ go.sum
Key design decisions
- Binary tree layout β each pane is a leaf node. Splitting morphs a leaf into an internal node with two children.
renderNoderecurses to distribute width/height. - Bubble Tea command model β all async work (file reads, PTY reads) returns
tea.Cmdand communicates via typed messages (fileLoadedMsg,termOutputMsg). No shared state between goroutines and the main loop. - Single binary, zero runtime deps β no config daemon, no server, no LSP. Just the binary.
Dependencies
| Package | Purpose |
|---|---|
charmbracelet/bubbletea |
Elm-architecture TUI framework |
charmbracelet/lipgloss |
Layout, borders, TrueColor styling |
charmbracelet/bubbles |
textarea component for the inline editor |
alecthomas/chroma/v2 |
Syntax highlighting for 300+ languages |
creack/pty |
PTY creation for the embedded terminal |
Roadmap
- Fuzzy file finder (
/to search) - Git status indicators (modified, staged, untracked)
- Bookmarks / jump list
- Config file (
~/.config/vide1/config.toml) for custom keybindings and themes - File operations (rename, delete, copy, move) with confirmation prompts
- Mouse support
- Remote filesystem support (SFTP/SSH)
Contributing
Pull requests are welcome! Please open an issue first to discuss major changes.
# Run the dev build
go run .
# Lint
go vet ./...
# Format
gofmt -w .
License
VIDE1 is free software, released under the GNU General Public License v3.0.
Copyright (C) 2026 sidx1-scratch
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
See the full license text at https://www.gnu.org/licenses/gpl-3.0.html.
Documentation
ΒΆ
There is no documentation for this package.