{"id":51011654,"url":"https://github.com/dohwi/tmux-manager","last_synced_at":"2026-06-21T03:30:42.341Z","repository":{"id":361609728,"uuid":"1255103728","full_name":"dohwi/tmux-manager","owner":"dohwi","description":"TUI tool for tmux session management — browse, create, switch, kill sessions. Define pane layouts in YAML and restore workspaces on reboot.","archived":false,"fork":false,"pushed_at":"2026-06-17T16:29:49.000Z","size":476,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-17T16:56:27.251Z","etag":null,"topics":["bubbletea","cli","go","tmux","tui","yaml"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dohwi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-31T12:10:20.000Z","updated_at":"2026-06-17T16:30:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dohwi/tmux-manager","commit_stats":null,"previous_names":["dohwi/tmux-manager"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/dohwi/tmux-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dohwi%2Ftmux-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dohwi%2Ftmux-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dohwi%2Ftmux-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dohwi%2Ftmux-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dohwi","download_url":"https://codeload.github.com/dohwi/tmux-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dohwi%2Ftmux-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34593128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bubbletea","cli","go","tmux","tui","yaml"],"created_at":"2026-06-21T03:30:41.595Z","updated_at":"2026-06-21T03:30:42.335Z","avatar_url":"https://github.com/dohwi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# tmux-manager\n\n**TUI session manager for tmux — define workspaces in YAML, restore on reboot.**\n\n[![CI](https://github.com/dohwi/tmux-manager/actions/workflows/ci.yml/badge.svg)](https://github.com/dohwi/tmux-manager/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/release/dohwi/tmux-manager.svg)](https://github.com/dohwi/tmux-manager/releases)\n[![Go Report Card](https://goreportcard.com/badge/github.com/dohwi/tmux-manager)](https://goreportcard.com/report/github.com/dohwi/tmux-manager)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n\u003c/div\u003e\n\n---\n\n## ✨ Features\n\n- 🎯 **Keyboard-driven TUI** — browse, create, and kill sessions in seconds\n- 📄 **YAML workspaces** — define sessions, windows, and pane layouts as code\n- 🔄 **Auto-restore** — `tm restore` brings your workspace back after reboot\n- 🏷️ **cfg tag** — visually distinguish YAML-managed sessions from manual ones\n- 🎨 **Catppuccin Mocha theme** — soft pastel status bar, easy on the eyes\n- ⚡ **One-command install** — Go, tmux, shell integration, all set up automatically\n\n---\n\n## 📸 Screenshot\n\n![TUI Screenshot](docs/tui-screenshot.png)\n\n---\n\n## 🚀 Quick Start\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/dohwi/tmux-manager/main/install.sh | bash\n```\n\nThat's it. This command:\n\n1. Installs Go (if missing)\n2. Builds `tmux-manager` from the latest release\n3. Runs `tm setup` — installs tmux (if missing), configures shell integration, status bar, and auto-restore\n\nAfter installation, just run `tm` in a new terminal.\n\n---\n\n## 📦 Commands\n\n```bash\ntm                    # Launch TUI\ntm restore            # Restore sessions from YAML\ntm restore --dry-run  # Preview what would be restored\ntm setup              # Install symlink and shell integration\ntm setup --uninstall  # Remove all integration\ntm update             # Update to the latest release\ntm update --check     # Check for updates without installing\ntm version            # Print version\n```\n\n### ⌨️ Keybindings\n\n| Key | Action |\n|:---:|:-------|\n| `↑` `↓` `j` `k` | Navigate sessions |\n| `Enter` | Attach to session |\n| `Ctrl+N` | Create new session |\n| `Ctrl+R` | Rename session |\n| `Ctrl+D` | Delete session |\n| `Ctrl+C` | Quit |\n\n---\n\n## ⚙️ Configuration\n\nWorkspace definitions go in `~/.config/tmux-manager/sessions/*.yaml`.\n\n### Single pane\n\n```yaml\nsessions:\n  monitoring:\n    windows:\n      - panes:\n          - command: htop\n```\n\n### Side-by-side\n\n```yaml\nsessions:\n  dev:\n    windows:\n      - panes:\n          - command: nvim\n            directory: ~/projects/myapp\n          - command: lazygit\n            direction: right\n            directory: ~/projects/myapp\n```\n\n```\n┌────────────┬──────────┐\n│    nvim    │ lazygit  │\n└────────────┴──────────┘\n```\n\n### Complex layout\n\n```yaml\nsessions:\n  dev:\n    windows:\n      - panes:\n          - command: nvim\n            directory: ~/projects/myapp\n          - command: lazygit\n            direction: right\n            directory: ~/projects/myapp\n          - command: npm run dev\n            direction: down\n            directory: ~/projects/myapp\n```\n\n```\n┌────────────┬──────────┐\n│            │ lazygit  │\n│    nvim    ├──────────┤\n│            │ npm run  │\n│            │   dev    │\n└────────────┴──────────┘\n```\n\n### Multi-window\n\n```yaml\nsessions:\n  myapp:\n    windows:\n      - name: code\n        panes:\n          - command: nvim\n            directory: ~/projects/myapp\n          - command: lazygit\n            direction: right\n            directory: ~/projects/myapp\n      - name: infra\n        panes:\n          - command: docker-compose up\n            directory: ~/projects/myapp\n          - command: docker logs -f\n            direction: down\n            directory: ~/projects/myapp\n```\n\n### Multiple sessions\n\n```yaml\nsessions:\n  dev:\n    windows:\n      - panes:\n          - command: nvim\n            directory: ~/projects/myapp\n          - command: lazygit\n            direction: right\n\n  db:\n    windows:\n      - panes:\n          - command: psql myapp\n            directory: ~/projects/myapp\n```\n\n### Field Reference\n\n| Field | Required | Description |\n|:------|:--------:|:------------|\n| `sessions` | ✅ | Map of session names to window definitions |\n| `sessions[].windows` | | Window list (default: one empty window) |\n| `sessions[].windows[].name` | | Window tab name |\n| `sessions[].windows[].panes` | | Pane layout within the window |\n| `panes[].command` | | Command to run in the pane |\n| `panes[].directory` | | Working directory (`~/` supported) |\n| `panes[].name` | | Pane title |\n| `panes[].direction` | | Split direction: `right` or `down` (omit for first pane) |\n\n---\n\n## 🏷️ cfg Tag\n\nYAML-managed sessions appear with a `cfg` label in the TUI, so you can tell them apart from manually created ones.\n\n```\n○  good-giraffe-drawing\n   detached\n\n○  myapp-dev\n   1 windows   cfg\n\n◉  tmux-manager\n   attached   cfg\n```\n\n---\n\n## 🔄 Auto-Restore\n\n`tm setup` adds this to `~/.profile`:\n\n```bash\ntm restore 2\u003e/dev/null\n```\n\nAfter a reboot, SSH login automatically restores your YAML-defined sessions. Existing sessions are skipped (idempotent).\n\n---\n\n## 🛠️ What `tm setup` Configures\n\n| Path | Purpose |\n|------|---------|\n| `~/.local/bin/tm` | Symlink to the binary |\n| `~/.zshrc` | `nocorrect tm` alias |\n| `~/.profile` | `tm restore` for auto-restore on login |\n| `~/.config/tmux-manager/` | Config directory |\n| `~/.config/tmux-manager/sessions/` | YAML workspace definitions |\n| `~/.config/tmux-manager/tmux.conf` | Catppuccin Mocha status bar + keybindings |\n| `~/.tmux.conf` | Sources tmux-manager config |\n\n---\n\n## 📋 Requirements\n\n- **tmux** ≥ 3.2 (auto-installed by `tm setup`)\n- **Go** ≥ 1.24 (auto-installed by install script)\n- **Linux** or **macOS**\n\n---\n\n## 🤝 Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. Issues and pull requests welcome.\n\n## 📄 License\n\n[MIT](LICENSE) © 2024–2026 dohwi","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdohwi%2Ftmux-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdohwi%2Ftmux-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdohwi%2Ftmux-manager/lists"}