Investigations

Twin Commander

Go February 2026

A Norton Commander-style dual-pane terminal file explorer built in Go with keyboard-driven navigation and real-time filtering.

I grew up with Norton Commander and Midnight Commander, and I've always missed having a proper dual-pane file manager in the terminal. So I built one in Go.

Twin Commander launches full-screen with two panels showing the current directory side by side. Navigation is entirely keyboard-driven: arrow keys move the cursor, Enter opens directories, Backspace goes to the parent, Tab switches the active panel. The active panel gets a cyan border so you always know where you are.

The standout feature is real-time filtering. Press / and start typing — the file list instantly narrows with case-insensitive substring matching. It's remarkably useful when you're in a directory with hundreds of files and you know part of the name.

Files are colour-coded by type (directories in blue, executables in green, symlinks in purple, broken symlinks in dark grey), and sizes display in human-readable format (K, M, G). There's a smart cursor that remembers where you were — navigate into a directory and then back up, and the cursor returns to the directory you came from.

The whole thing compiles to a single static binary with zero runtime dependencies. No config files, no setup, just run it.

What this project demonstrates

Dual-pane side-by-side file browsing with independent panel state
Real-time case-insensitive search/filter with / key
Colour-coded file types: directories, executables, symlinks
Smart cursor returns to previous position when navigating up
Toggle hidden dotfiles per panel
Single static binary — zero runtime dependencies

Technologies

TUIFile ManagerTerminalCLIDual-Pane

© 2026 Jonathan Leahy · v0.8.1-31-g196fa14