adrianleb/dsh-tmux-cc ↗★ 0

dsh-tmux-cc

A persistent tmux control-mode cockpit for DeepSeek Harness Web. 适合需要在DSH Web界面中直接管理、操作和调整tmux会话的终端重度用户。

Package
dsh-tmux-cc
Compatibility
Unverified
Cordis peer range
^4.0.1
Version
0.7.1
License
MIT
Last updated
Sep 29, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:adrianleb/dsh-tmux-cc

Usage

  1. Open the tmux dock.
  2. Choose a live tmux session from the dropdown. The plug button detaches or reattaches.
  3. Click a pane to focus it and type normally.
  4. With focus inside a pane, use the safe prefix and macOS shortcuts below.
  5. Drag a pane's title onto another pane to swap their positions (desktop or mobile). Drag the dividers between panes to resize with a mouse or finger in either direction. The outer dock edge is resizable on desktop only; use the tabs to switch tmux windows.

The plugin refuses to kill the final pane in a session.

Sessions & clients

Open Sessions & clients from the dock toolbar (the grid/plus icon). It works even when the dock is detached or no sessions exist.

  • Create session: enter a unique name and optionally an existing absolute directory on the DSH host. The new session starts the host's default shell; leave Attach after creating unchecked to keep it detached. Names may contain spaces or Unicode, but not dots, colons, semicolons, or control characters (maximum 200 characters). Names that would shadow a configured recipe ID for a different session are reserved.
  • Sessions: see window/client counts, attach, or rename a session inline. Attaching switches the shared dock for every browser viewer. Rename does not restart processes.
  • Attached clients: see native client names, session, PID, terminal/TTY, size, flags, and connection time across the configured tmux server—not other tmux sockets. Browser tabs share one control client and are not separate entries.
  • Filter by session, select individual clients or Select all, then choose Detach selected and confirm the listed targets. Changing the filter clears selection. The host checks each client's name, PID, and creation time so a stale selection cannot silently target a replacement client.
  • This dock (shared) is listed but cannot be bulk-detached. Use the dock's existing Detach button to disconnect its shared control client. Detaching never kills sessions or their running processes; there is deliberately no kill-session or kill-server button.

The manager refreshes every five seconds while visible and idle; Refresh reloads immediately. Errors stay visible without clearing form input. If a connection drops or a request times out, refresh before retrying: the operation may already have completed and mutations are never automatically replayed. Done or Escape closes the manager.

Configuration

Add options to the plugin entry in your DSH Web profile:

- id: tmux-cc
  name: dsh-tmux-cc
  config:
    # Optional composition default. Settings → tmux can store a user override.
    sizePolicy: auto # auto | mirror

    # Optional. Defaults to $DSH_TMUX_BIN, then `tmux` from PATH.
    tmuxBin: /usr/local/bin/tmux

    # Optional named session recipes.
    layouts:
      - id: project
        label: Project cockpit
        session: project
        launch: /home/me/.local/bin/start-project-tmux
        launchArgs: ["--ensure-only"]

sizePolicy supplies the deployment default; a value saved through Settings is layered above it. auto permits takeover only when no external sizing client exists, while mirror always keeps this plugin out of tmux window sizing.

When a recipe's session does not exist, selecting it runs launch with launchArgs and then attaches. If launchArgs is omitted, it defaults to ["--ensure-only"]. Launcher configuration is trusted administrator input and runs with the DSH operating-system user's privileges. Host executable paths are never sent to the browser.