feat(workmux): ctrl+shift+s sidebar toggle, palette shortcut label, docs

This commit is contained in:
root committed 2026-11-10 11:34:05 -05:00
1 parent 4b88781fd0
commit 901aedd59f
4 files changed
+4 -3

No files matched your search

+1 -1
View File
@@ -495,7 +495,7 @@ With no arguments it prints palette items as JSON, grouped by category:
| Agents | Every agent `workmux status --all --json` tracks in this tmux server: waiting (yellow), done (green), working (blue), then idle, most recent first. Title `<repo>/<handle>`, description status, time since the change, and the pane title | `switch-client` to the agent's pane | | Agents | Every agent `workmux status --all --json` tracks in this tmux server: waiting (yellow), done (green), working (blue), then idle, most recent first. Title `<repo>/<handle>`, description status, time since the change, and the pane title | `switch-client` to the agent's pane |
| Worktrees: `<repo>` | The active pane's repo's worktrees (`workmux list --json`, main checkout left out): branch, open/closed, dirty, path. Open ones are green | `workmux open` (starts the session if closed) | | Worktrees: `<repo>` | The active pane's repo's worktrees (`workmux list --json`, main checkout left out): branch, open/closed, dirty, path. Open ones are green | `workmux open` (starts the session if closed) |
| New | **New worktree from a prompt**, when the pane is in a repo | `--prompt` in a popup: `gum write` for the task, then `workmux add -A -p TASK` (omp names the branch, see [workmux](../tools/workmux.md#branch-names)) | | New | **New worktree from a prompt**, when the pane is in a repo | `--prompt` in a popup: `gum write` for the task, then `workmux add -A -p TASK` (omp names the branch, see [workmux](../tools/workmux.md#branch-names)) |
| Workmux | **Dashboard** (90% popup), **Sidebar** (toggle), **Last done** (`workmux last-done`) | | | Workmux | **Dashboard** (90% popup), **Sidebar** (toggle; also tmux `prefix S`, Ghostty <kbd>ctrl+shift+s</kbd>), **Last done** (`workmux last-done`) | |
| Close | One per open worktree | `workmux close`: ends the session, keeps worktree and branch | | Close | One per open worktree | `workmux close`: ends the session, keeps worktree and branch |
| Merge | One per worktree | `workmux merge` in a popup | | Merge | One per worktree | `workmux merge` in a popup |
| Remove | One per worktree | `workmux remove` in a popup (asks before deleting unmerged commits) | | Remove | One per worktree | `workmux remove` in a popup (asks before deleting unmerged commits) |
+1 -1
View File
@@ -83,7 +83,7 @@ Closing a window only detaches its session; the shells keep running in the tmux
| `ctrl+shift+/` | `prefix ?` | Keybinding help popup | | `ctrl+shift+/` | `prefix ?` | Keybinding help popup |
| `ctrl+shift+alt+,` | `prefix q` | Reload tmux config | | `ctrl+shift+alt+,` | `prefix q` | Reload tmux config |
| `ctrl+shift+n` | `prefix C` | New session | | `ctrl+shift+n` | `prefix C` | New session |
| `ctrl+shift+s` | `prefix s` | Session/window tree | | `ctrl+shift+s` | `prefix S` | Toggle the [workmux](../tools/workmux.md) agent sidebar (all sessions); the session/window tree stays on `prefix s` |
| `ctrl+shift+q` | `prefix d` | Detach (closes the Ghostty window; the session lives on) | | `ctrl+shift+q` | `prefix d` | Detach (closes the Ghostty window; the session lives on) |
## Themes ## Themes
+1
View File
@@ -44,6 +44,7 @@ These settings are what [yazi](../tools/yazi.md) needs inside tmux. `allow-passt
| `prefix o` | Sessions palette ([`tmux-sessions`](../shell/scripts.md#tmux-sessions)): fuzzy-find the other sessions, every window of every session, zoxide's and `~/.config`'s directories, and Rename/Kill items per session. Typed text that is not a session starts one by that name in its zoxide match | | `prefix o` | Sessions palette ([`tmux-sessions`](../shell/scripts.md#tmux-sessions)): fuzzy-find the other sessions, every window of every session, zoxide's and `~/.config`'s directories, and Rename/Kill items per session. Typed text that is not a session starts one by that name in its zoxide match |
| `prefix t` | Project Tasks palette ([`pj-palette`](../shell/scripts.md#pj-palette)): install/dev/sync/make/compose quick actions plus every `pj` task. One-off tasks run in a full-width bottom split (25% of the window); dev servers and `docker compose up` run in a background `<session>:<tool-and-command>` session shown in a popup (`q` hides, `ctrl-c` asks `y/n` then stops), listed under Running to reopen | | `prefix t` | Project Tasks palette ([`pj-palette`](../shell/scripts.md#pj-palette)): install/dev/sync/make/compose quick actions plus every `pj` task. One-off tasks run in a full-width bottom split (25% of the window); dev servers and `docker compose up` run in a background `<session>:<tool-and-command>` session shown in a popup (`q` hides, `ctrl-c` asks `y/n` then stops), listed under Running to reopen |
| `prefix w` | Workmux palette ([`workmux-palette`](../shell/scripts.md#workmux-palette)), Ghostty `ctrl+shift+a`: tracked agents by status, the repo's worktrees with Close/Merge/Remove, new worktree from the typed branch or a prompt, dashboard, sidebar, last-done. Replaces tmux's `choose-tree`, which the Sessions palette covers. See [workmux](../tools/workmux.md) | | `prefix w` | Workmux palette ([`workmux-palette`](../shell/scripts.md#workmux-palette)), Ghostty `ctrl+shift+a`: tracked agents by status, the repo's worktrees with Close/Merge/Remove, new worktree from the typed branch or a prompt, dashboard, sidebar, last-done. Replaces tmux's `choose-tree`, which the Sessions palette covers. See [workmux](../tools/workmux.md) |
| `prefix S` | Toggle workmux's live agent sidebar in every session (`workmux sidebar`), Ghostty `ctrl+shift+s`. tmux's session tree stays on `prefix s` |
| `prefix y` / `prefix e` | Yazi / Neovim in a new window in the pane cwd (Ghostty `ctrl+shift+f` / `ctrl+shift+e`) | | `prefix y` / `prefix e` | Yazi / Neovim in a new window in the pane cwd (Ghostty `ctrl+shift+f` / `ctrl+shift+e`) |
| `prefix g` | Lazygit in a 90% popup in the pane cwd (Ghostty `ctrl+shift+g`) | | `prefix g` | Lazygit in a 90% popup in the pane cwd (Ghostty `ctrl+shift+g`) |
| `prefix a` | omp in a background session `<session>:omp` (pane cwd), shown in a popup docked bottom-right (35% × 60%) and listed in the [omp palette](../shell/scripts.md#pj-palette) and under Running in the tasks palette. In the popup, `ctrl-c` hides it and `ctrl-q` quits omp. Inside any background-task popup, `prefix a` hides it too, so `prefix a` toggles omp (no Ghostty chord; `ctrl+shift+a` is the Workmux palette) | | `prefix a` | omp in a background session `<session>:omp` (pane cwd), shown in a popup docked bottom-right (35% × 60%) and listed in the [omp palette](../shell/scripts.md#pj-palette) and under Running in the tasks palette. In the popup, `ctrl-c` hides it and `ctrl-q` quits omp. Inside any background-task popup, `prefix a` hides it too, so `prefix a` toggles omp (no Ghostty chord; `ctrl+shift+a` is the Workmux palette) |
+1 -1
View File
@@ -110,7 +110,7 @@ workmux status --all --json 2>/dev/null | jq --arg self "$self" --arg home "$HOM
{category: "Workmux", icon: "\uf0e4", title: "Dashboard", description: "agents and worktrees TUI in a popup", {category: "Workmux", icon: "\uf0e4", title: "Dashboard", description: "agents and worktrees TUI in a popup",
aliases: ["dash"], action: {tmux: "display-popup -E -w 90% -h 90% workmux dashboard"}}, aliases: ["dash"], action: {tmux: "display-popup -E -w 90% -h 90% workmux dashboard"}},
{category: "Workmux", icon: "\uf0db", title: "Sidebar", description: "toggle the agent status sidebar", {category: "Workmux", icon: "\uf0db", title: "Sidebar", description: "toggle the agent status sidebar",
aliases: ["side"], action: {tmux: "run-shell -b \("workmux sidebar" | @sh)"}}, shortcut: "Ctrl+Shift+S", aliases: ["side"], action: {tmux: "run-shell -b \("workmux sidebar" | @sh)"}},
{category: "Workmux", icon: "\uf0e2", title: "Last done", description: "jump to the agent that last finished or is waiting", {category: "Workmux", icon: "\uf0e2", title: "Last done", description: "jump to the agent that last finished or is waiting",
aliases: ["ld"], action: {tmux: "run-shell -b \("workmux last-done" | @sh)"}}, aliases: ["ld"], action: {tmux: "run-shell -b \("workmux last-done" | @sh)"}},
($trees[] | select(.is_open) ($trees[] | select(.is_open)