Skip to content

Commit d7a1ebc

Browse files
MagicalTuxclaude
andcommitted
docs: update README with Quick Launch, tab templates, Docker/SSH docs
- Document Quick Launch overlay and keyboard shortcut - Add Tab Templates section with config format and all options - Add Docker and SSH template sections with examples - Add cterm-headless to architecture diagram - Update roadmap with shipped features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 1ea0952 commit d7a1ebc

File tree

1 file changed

+134
-11
lines changed

1 file changed

+134
-11
lines changed

README.md

Lines changed: 134 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ A high-performance, customizable terminal emulator built in pure Rust. Features
1414
### User Interface
1515
- **Tabs**: Multiple terminal tabs with keyboard shortcuts
1616
- **Tab Customization**: Custom colors and names for tabs
17-
- **Sticky Tabs**: Persistent tab configurations for frequently-used commands (great for Claude sessions)
17+
- **Tab Templates**: Persistent tab configurations for frequently-used commands (great for Claude sessions)
18+
- **Quick Launch**: VS Code-style fuzzy search overlay to instantly open or switch to tabs (Cmd+G / Ctrl+Shift+G)
1819
- **Themes**: Built-in themes (Tokyo Night, Dracula, Nord, and more) plus custom TOML themes
1920
- **Keyboard Shortcuts**: Fully configurable shortcuts for all actions
2021
- **Zoom**: Adjustable font size with Ctrl+/Ctrl-
@@ -110,10 +111,10 @@ See [docs/configuration.md](docs/configuration.md) for detailed configuration op
110111
|--------|-------|---------------|
111112
| New Tab | Cmd+T | Ctrl+Shift+T |
112113
| Close Tab | Cmd+W | Ctrl+Shift+W |
113-
| Close Other Tabs |||
114114
| Next Tab | Cmd+Shift+] | Ctrl+Tab |
115115
| Previous Tab | Cmd+Shift+[ | Ctrl+Shift+Tab |
116116
| Switch to Tab 1-9 | Cmd+1-9 | Ctrl+1-9 |
117+
| Quick Launch | Cmd+G | Ctrl+Shift+G |
117118
| Copy | Cmd+C | Ctrl+Shift+C |
118119
| Copy as HTML | Cmd+Shift+C ||
119120
| Paste | Cmd+V | Ctrl+Shift+V |
@@ -124,6 +125,125 @@ See [docs/configuration.md](docs/configuration.md) for detailed configuration op
124125

125126
**Scrollback:** Use mouse wheel or trackpad to scroll through terminal history.
126127

128+
## Quick Launch
129+
130+
Press **Cmd+G** (macOS) or **Ctrl+Shift+G** (Linux/Windows) to open the Quick Launch overlay. It provides a fuzzy search over your tab templates, letting you instantly open a new tab or switch to an existing one.
131+
132+
- Type to filter templates by name
133+
- Use **Arrow keys** or **Tab**/**Shift+Tab** to navigate results
134+
- Press **Enter** to launch, **Escape** to dismiss
135+
136+
## Tab Templates
137+
138+
Tab templates are defined in `sticky_tabs.toml` in your [configuration directory](#configuration). Each template pre-configures a tab with a command, working directory, color, and other settings.
139+
140+
```toml
141+
[[tabs]]
142+
name = "Claude"
143+
command = "claude"
144+
color = "#7c3aed"
145+
unique = true
146+
keep_open = true
147+
148+
[[tabs]]
149+
name = "Project"
150+
working_directory = "~/projects/myapp"
151+
color = "#22c55e"
152+
153+
[[tabs]]
154+
name = "Dev Server"
155+
command = "npm"
156+
args = ["run", "dev"]
157+
working_directory = "~/projects/myapp"
158+
keep_open = true
159+
```
160+
161+
### Template options
162+
163+
| Field | Description |
164+
|-------|-------------|
165+
| `name` | Display name shown in Quick Launch and as the tab title |
166+
| `command` | Command to run (omit for default shell) |
167+
| `args` | Command arguments (array) |
168+
| `working_directory` | Initial working directory |
169+
| `color` | Tab color in hex (`#RRGGBB`) |
170+
| `theme` | Theme override for this tab |
171+
| `background_color` | Lock the background color (overrides theme, hex `#RRGGBB`) |
172+
| `keep_open` | Keep the tab open after the process exits |
173+
| `unique` | Singleton mode — only one instance of this tab can exist at a time |
174+
| `auto_start` | Automatically open this tab when cterm starts |
175+
| `env` | Extra environment variables (table) |
176+
| `docker` | Docker container config (see below) |
177+
| `ssh` | SSH remote config (see below) |
178+
179+
### Singleton tabs (`unique = true`)
180+
181+
When a template has `unique = true`, launching it via Quick Launch will **switch to the existing tab** if one is already open, instead of creating a duplicate. This is ideal for tools that should only run once, like AI assistants or long-running servers.
182+
183+
Combined with Quick Launch, this creates a "go to or open" workflow: press **Cmd+G**, type a few characters, hit **Enter**, and you're either switched to your running session or a new one is started — no need to hunt through tabs.
184+
185+
### Docker templates
186+
187+
Templates can launch shells inside Docker containers. Set the `docker` field with a mode (`exec`, `run`, or `devcontainer`):
188+
189+
```toml
190+
[[tabs]]
191+
name = "Dev Container"
192+
color = "#0db7ed"
193+
unique = true
194+
[tabs.docker]
195+
mode = "devcontainer"
196+
image = "ubuntu:24.04"
197+
project_dir = "~/projects/myapp"
198+
shell = "/bin/bash"
199+
mount_ssh = true
200+
```
201+
202+
| Field | Description |
203+
|-------|-------------|
204+
| `mode` | `exec` (attach to running container), `run` (start new), or `devcontainer` |
205+
| `container` | Container name/ID (exec mode) |
206+
| `image` | Image name with tag (run/devcontainer mode) |
207+
| `shell` | Shell to use inside the container |
208+
| `project_dir` | Project directory to mount (devcontainer mode) |
209+
| `docker_args` | Additional docker arguments (array) |
210+
| `auto_remove` | Remove container on exit (default: true) |
211+
| `mount_claude_config` | Mount Claude config into container (default: true) |
212+
| `mount_ssh` | Mount SSH keys into container (default: false) |
213+
| `mount_gitconfig` | Mount git config into container (default: true) |
214+
| `workdir` | Working directory inside container |
215+
216+
### SSH templates
217+
218+
Templates can open SSH connections with port forwarding, jump hosts, and more:
219+
220+
```toml
221+
[[tabs]]
222+
name = "Production"
223+
color = "#22c55e"
224+
unique = true
225+
[tabs.ssh]
226+
host = "prod.example.com"
227+
username = "deploy"
228+
identity_file = "~/.ssh/prod_key"
229+
```
230+
231+
| Field | Description |
232+
|-------|-------------|
233+
| `host` | Remote host (required) |
234+
| `port` | SSH port (default: 22) |
235+
| `username` | SSH username |
236+
| `identity_file` | Path to private key |
237+
| `remote_command` | Command to execute on the remote host |
238+
| `local_forwards` | Local port forwards (array, format: `"local:host:remote"`) |
239+
| `remote_forwards` | Remote port forwards (array) |
240+
| `dynamic_forward` | SOCKS proxy port |
241+
| `jump_host` | Bastion/jump host |
242+
| `agent_forward` | Forward SSH agent (default: false) |
243+
| `x11_forward` | Forward X11 (default: false) |
244+
| `options` | Extra SSH options as key-value pairs (table, passed as `-o`) |
245+
| `extra_args` | Additional raw SSH arguments (array) |
246+
127247
## Terminal Compatibility
128248

129249
### Supported DEC Private Modes (DECSET/DECRST)
@@ -218,13 +338,14 @@ cterm supports DECDLD (DEC Download) for custom character sets:
218338
```
219339
cterm/
220340
├── crates/
221-
│ ├── cterm-core/ # Core terminal emulation (parser, screen, PTY)
222-
│ ├── cterm-ui/ # UI abstraction traits
223-
│ ├── cterm-app/ # Application logic (config, sessions, upgrades, crash recovery)
224-
│ ├── cterm-cocoa/ # Native macOS UI using AppKit/CoreGraphics
225-
│ ├── cterm-gtk/ # GTK4 UI implementation (Linux)
226-
│ └── cterm-win32/ # Native Windows UI using Win32/Direct2D
227-
└── docs/ # Documentation
341+
│ ├── cterm-core/ # Core terminal emulation (parser, screen, PTY)
342+
│ ├── cterm-ui/ # UI abstraction traits
343+
│ ├── cterm-app/ # Application logic (config, sessions, upgrades, crash recovery)
344+
│ ├── cterm-cocoa/ # Native macOS UI using AppKit/CoreGraphics
345+
│ ├── cterm-gtk/ # GTK4 UI implementation (Linux)
346+
│ ├── cterm-win32/ # Native Windows UI using Win32/Direct2D
347+
│ └── cterm-headless/ # Headless terminal daemon (ctermd)
348+
└── docs/ # Documentation
228349
```
229350

230351
The modular architecture enables:
@@ -234,6 +355,7 @@ The modular architecture enables:
234355
- **cterm-cocoa**: Native macOS implementation using AppKit and CoreGraphics
235356
- **cterm-gtk**: GTK4-specific rendering and widgets (Linux)
236357
- **cterm-win32**: Native Windows implementation using Win32 and Direct2D
358+
- **cterm-headless**: Headless terminal daemon for remote access (ctermd)
237359

238360
## Built-in Themes
239361

@@ -255,11 +377,12 @@ Custom themes can be added as TOML files in the `themes/` configuration subdirec
255377
- [x] Windows native UI (Win32/Direct2D)
256378
- [x] Seamless upgrades (macOS/Linux/Windows)
257379
- [x] Copy as HTML with formatting
380+
- [x] Tab templates with Quick Launch
381+
- [x] Docker and SSH templates
382+
- [x] Auto-update with release notes
258383

259384
### Future
260385

261-
- Native SSH client
262-
- ctermd client (connect to headless terminal daemon)
263386
- Split panes
264387
- Plugin system
265388

0 commit comments

Comments
 (0)