Opinionated tmux workspace launcher featuring vinw file browser.
A simple TUI that launches tmux sessions with a fixed, powerful layout designed for modern terminal-based development workflows. Perfect for developers transitioning from VSCode who want the power of tmux without the configuration headaches.
brew install willyv3/tap/vinw-workspaceThis will automatically install:
vinw(file browser)tmux(terminal multiplexer)
No other dependencies required! No Python, no pip, no configuration.
# Next.js project scaffolder
brew install willyv3/tap/nextui
# Coding agents (install as needed)
# claude, opencode, crush, codex, etc.vinw-workspaceThe TUI will guide you through:
- Setting your project directory
- Naming your session
- Choosing terminal mode (shell or nextui)
- Selecting a coding agent (or none)
- Preview and launch
┌─────────┬──────────────────────────────────┐
│ │ vinw-viewer (file preview) │
│ vinw │ │
│ tree │ │
│ ├──────────────┬───────────────────┤
│ │ terminal/ │ coding agent │
│ │ nextui │ (your choice) │
└─────────┴──────────────┴───────────────────┘
Panes:
- [a] vinw file browser (left sidebar)
- [v] vinw-viewer for file preview (top right)
- [t] Terminal or nextui (bottom left)
- [c] Coding agent of your choice (bottom right)
Features:
- vinw and vinw-viewer are synced via session ID
- Select files in vinw → instantly previewed in viewer
- Persistent layout across sessions
- Ready-to-code environment in seconds
vinw-workspace stores config in ~/.vinw-workspace/
Edit ~/.vinw-workspace/config.json:
{
"terminal_options": [
"shell",
"nextui",
"my-custom-tool"
],
"agent_options": [
"claude",
"opencode",
"crush",
"codex",
"none",
"my-agent"
]
}The config file is automatically created with defaults on first run. Add your preferred tools to the arrays and they'll appear as options in the TUI.
vinw-workspace stores only your preferences in:
~/.vinw-workspace/config.json
Sessions are created directly with tmux - no intermediate files.
Tab/↑/↓- Navigate between fieldsj/k- Select options in radio listsEnter- Next field / PreviewEsc- Quit
Enterorl- Launch tmux sessionEsc- Back to inputq- Quit
For VSCode refugees:
- Get a familiar file tree (vinw) + preview pane setup
- Bottom terminal split like VSCode
- Coding agent integration for AI assistance
For tmux beginners:
- No manual tmux configuration needed
- One fixed layout that just works
- Sessions are easily reproducible
For power users:
- Fast workspace setup
- Customizable via config.json
- Pure Go implementation - no Python dependencies
- You configure your workspace in the TUI
- vinw-workspace executes tmux commands directly
- Your session is created with the fixed layout
- vinw and vinw-viewer communicate via session ID (using Skate)
- Each directory gets a unique session ID (deterministic hash)
Multiple workspaces in different directories are isolated. Each gets a unique session ID based on the directory path.
# Project A
cd ~/projects/webapp
vinw-workspace
# Project B (separate session)
cd ~/projects/api
vinw-workspaceSessions don't interfere - each has its own vinw ↔ viewer connection.
Web development:
Directory: ~/code/my-app
Session: webapp
Terminal: shell
Agent: claude
Next.js project creation:
Directory: ~/code/new-project
Session: nextjs
Terminal: nextui (scaffolds the project)
Agent: opencode (helps with code)
System monitoring:
Directory: ~
Session: monitor
Terminal: shell
Agent: none
"vinw not found"
brew install willyv3/tap/vinw"Can't connect vinw to viewer"
- Make sure both are running in the same tmux session
- Check that session IDs match (shown at launch)
"Missing agent/tool"
- Install the tool first
- Or select "none" / "shell" if you don't need it
This tool is intentionally opinionated:
- One layout only - It's tested, it works, it's productive
- Minimal config - Just directory, session name, and tool choices
- vinw-first - Built around the vinw workflow
- Terminal-native - For developers who want to stay in the terminal
If you want full customization, use tmuxomatic directly. If you want a great default that just works, use vinw-workspace.
This is a personal tool made public. It's designed for a specific workflow. If it works for you, great! If not, fork it or use tmuxomatic.
MIT