A powerful, keyboard-driven multi-terminal dashboard for developers. Manage multiple terminal sessions in a flexible grid layout with project awareness, command queues, and session persistence.
- Flexible grid system - Split panels horizontally or vertically
- Layout presets - Single, 2-column, 3-column, or 2×2 grid
- Drag & drop - Swap panel contents by dragging headers
- Maximize mode - Double-click header to maximize any panel
- Multiple tabs per panel with independent terminal sessions
- Per-panel project paths - Each terminal opens in its project directory
- Git status - Branch name and dirty indicator in panel header
- Environment detection - Node.js and Python version badges
- Recent projects - Quick access sidebar with 10 most recent folders
- Queue commands - Line up multiple commands to run sequentially
- Batch operations - Add common command sets (install, build, test)
- Auto-run mode - Automatically execute queued commands
- Configurable delays - Set time between command execution
- Auto-save - Layout, projects, theme, and snippets persist automatically
- Named sessions - Save and load different workspace configurations
- Command snippets - Store frequently used commands for quick access
- Full keyboard navigation - Switch panels, split, close without touching mouse
- Command palette - Quick access to all commands via
Cmd+K - Panel sync - Broadcast input to multiple panels simultaneously
8 built-in themes including Dark, Light, Nord, Monokai, and Claude themes.
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/websitebutlers/terminus-terminal.git
cd terminus-terminal
# Install dependencies
npm install
# Start development server
npm run dev# Build the application
npm run build
# The built app will be in the dist folder| Shortcut | Action |
|---|---|
Cmd+D |
Split panel horizontally |
Cmd+Shift+D |
Split panel vertically |
Cmd+W |
Close panel |
Cmd+T |
New tab in panel |
Cmd+1-9 |
Focus panel by index |
Cmd+[ |
Focus previous panel |
Cmd+] |
Focus next panel |
Escape |
Exit maximize / clear sync |
| Shortcut | Action |
|---|---|
Cmd+B |
Toggle sidebar |
Cmd+K |
Command palette |
Cmd+Enter |
Launch Claude Code |
Cmd+F |
Search in terminal |
- Electron - Cross-platform desktop app framework
- React 18 - UI framework
- TypeScript - Type-safe JavaScript
- Vite - Fast build tooling
- Zustand - Lightweight state management
- xterm.js - Terminal emulator
- node-pty - Pseudo-terminal for native shell integration
terminus/
├── electron/
│ ├── main.ts # Main process
│ ├── preload.ts # Preload bridge
│ └── pty-manager.ts # PTY process management
├── src/
│ ├── components/
│ │ ├── Layout/ # Panel, SplitContainer, Resizer
│ │ ├── Panel/ # PanelHeader, TabBar, QuickActionsBar
│ │ ├── Sidebar/ # Project list, session info
│ │ ├── Terminal/ # xterm.js integration
│ │ └── CommandPalette/
│ ├── stores/ # Zustand state stores
│ ├── types/ # TypeScript definitions
│ └── hooks/ # Custom React hooks
└── package.json
Session data is stored in:
- macOS:
~/Library/Application Support/terminus/ - Windows:
%APPDATA%/terminus/ - Linux:
~/.config/terminus/
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style and patterns
- Add TypeScript types for new code
- Test on macOS, Windows, and Linux if possible
- Update documentation for new features
- SSH remote connections
- Split terminal recording/replay
- Plugin system
- Custom theme editor
- Terminal multiplexer integration (tmux/screen)
MIT License - see LICENSE for details.
- xterm.js - Terminal emulator
- node-pty - PTY bindings
- Electron - Desktop framework
- Zustand - State management
Built with care for developers who live in the terminal.