A locked, immutable 3-pane tmux dashboard that prevents accidental layout modifications.
ATMu creates a fixed tmux session where the layout cannot be accidentally changed:
- Alt+arrow keys won't resize panes
- Splitting/closing panes is disabled
- Mouse dragging is disabled
- Dead panes remain visible with
[exited]status
This is a TUI (Terminal User Interface) for maintaining a stable, accident-proof workspace.
# 1. Enable WSL and install Ubuntu
wsl --install
# 2. Inside WSL, install tmux
sudo apt update && sudo apt install -y tmux
# 3. Copy project to WSL
mkdir -p ~/Dev
cp -r /mnt/c/Users/YOUR_USERNAME/Dev/ATMu ~/Dev/
# 4. Run installer
cd ~/Dev/ATMu
chmod +x install.sh
./install.sh
# 5. Launch dashboard
./launch-dashboard.sh# 1. Install tmux
sudo apt install tmux # Debian/Ubuntu
brew install tmux # macOS
# 2. Clone/copy the repository
cd ~/Dev
git clone <your-repo> ATMu
# 3. Run installer
cd ATMu
chmod +x install.sh
./install.sh
# 4. Launch dashboard
./launch-dashboard.sh┌──────────────────────────────────────────────┐
│ Banner / Status (20% height) │
├───────────────────────────────┬──────────────┤
│ │ │
│ Main Work Area │ Monitor │
│ (80% width) │ (20%) │
│ │ │
│ Bottom-left LARGE │ htop or │
│ │ other tool │
│ │ │
└───────────────────────────────┴──────────────┘
3 panes in a locked layout:
- Top: Banner/status bar (20% height, full width)
- Bottom-left: Main working area (80% height, 80% width) - LARGE
- Bottom-right: System monitor (80% height, 20% width) - Small
- Accident-proof: Cannot resize/close/split panes with hotkeys
- Persistent panes: Panes remain visible even after processes exit
- Mouse disabled: No accidental layout changes from clicking/dragging
- Admin control: Ctrl+b prefix commands still work for intentional changes
- Auto-attach: Relaunching attaches to existing session if running
cd ~/Dev/ATMu
./launch-dashboard.shFrom Windows, run in WSL:
wsl bash -l -c "cd ~/Dev/ATMu && ./launch-dashboard.sh"tmux attach -t atmudashboardPress Ctrl+b then d
tmux kill-session -t atmudashboardOnce launched, verify the lock features:
| Action | Command | Expected Result |
|---|---|---|
| Resize panes | Alt+Arrow keys |
Nothing happens |
| Split panes | Ctrl+b then % or " |
Disabled |
| Close pane | Ctrl+b then x |
Disabled |
| Zoom pane | Ctrl+b then z |
Disabled |
| Exit process | Type exit in pane |
Pane shows [exited] but remains |
ATMu/
├── README.md # This file
├── INSTALL.md # Detailed installation guide
├── ADR.md # Architecture Decision Record
├── CLAUDE.md # Project guidance for Claude Code
├── @prd.md # Product Requirements Document
├── .tmux.conf.unmutable # Core immutability config
├── .tmuxinator.yml # Session layout definition
├── launch-dashboard.sh # Main launcher script
├── install.sh # Automated installer
├── test-dashboard.sh # Test suite
└── .claude/
└── pre-compact-checklist.md # ADR update checklist
After installation, these files are created in your home directory:
~/.tmux.conf.unmutable- Immutability settings~/.tmuxinator/atmudashboard.yml- Session layout (if using tmuxinator)
Edit ~/.tmuxinator/atmudashboard.yml:
panes:
- htop # Left pane
- tail -f /var/log # Top-right
- watch date # Bottom-rightEdit .tmuxinator.yml and change the layout string.
Launch without borders:
./launch-dashboard.sh --no-borders- INSTALL.md - Full installation guide with troubleshooting
- ADR.md - Architectural decisions and design rationale
- CLAUDE.md - Development workflow and project context
- @prd.md - Product requirements and scope
See ADR.md for detailed information:
- Configuration loading: Immutability config must be sourced during launch
- Terminal size: Pane dimensions depend on actual terminal size
- Test scripts: Have bash variable expansion issues when run via
wsl bash -c
Required:
- tmux (v3.0+)
- bash
- WSL (Windows only)
Optional:
- tmuxinator (Ruby gem for enhanced session management)
cd ~/Dev/ATMu
./uninstall.shPersonal project - use as needed.
This is a personal productivity tool. Feel free to fork and adapt for your needs.
For issues or questions:
- Check INSTALL.md troubleshooting section
- Review ADR.md known issues
- Check tmux configuration:
tmux show-options -g