From using-cmux
Controls cmux terminal multiplexer: splits panes, launches/monitors sub-agents and collects results, sends commands/keys, reads screens, sends notifications. Activates when CMUX_* env vars are set.
npx claudepluginhub hummer98/using-cmux --plugin using-cmuxThis skill uses the workspace's default tool permissions.
cmux ã¯ã¿ãŒããã«ãã«ããã¬ã¯ãµããã€ã³åå²ãã³ãã³ãéä¿¡ãç»é¢èªã¿åãã CLI çµç±ã§æäœããã
Controls cmux macOS terminal app via CLI from Claude Code: manage windows/workspaces/panes/surfaces, open embedded browser splits, send notifications, update sidebar status/progress.
Controls cmux macOS terminal multiplexer: manages workspaces/panes/surfaces/panels, sends commands to terminals/browsers, automates browsers, notifications, sidebar metadata. Use on /cmux or cmux requests.
Manages terminal splits for parallel commands, automates headless Chromium browser like Playwright, displays status sidebars, and coordinates AI agent teams via CLI in Claude Code workflows.
Share bugs, ideas, or general feedback.
cmux ã¯ã¿ãŒããã«ãã«ããã¬ã¯ãµããã€ã³åå²ãã³ãã³ãéä¿¡ãç»é¢èªã¿åãã CLI çµç±ã§æäœããã
CMUX_SOCKET_PATH ç°å¢å€æ°ãååšããã° cmux å
ã§åäœããŠããã
cmux identify # èªåã®ã¯ãŒã¯ã¹ããŒã¹ã»ãµãŒãã§ã¹ã確èª
cmux list-workspaces # å
šã¯ãŒã¯ã¹ããŒã¹äžèЧ
cmux tree # ããããžãŒè¡šç€ºïŒéå±€æ§é ïŒ
ãªãœãŒã¹ã¯ççž® refs ã§åç
§ãã: window:1, workspace:2, pane:3, surface:4ã
--id-format uuids ã§ UUID 圢åŒã®åºåãå¯èœã
泚æ:
cmux-sendã§è€æ°è¡ãéãå Žåã¯cmux-send-key returnãå¿ é ã詳现ã¯ãsend ã®æ¹è¡ã«ãŒã«ããåç §ã
| æäœ | ã³ãã³ã |
|---|---|
| ãã€ã³åå² | cmux new-split right (left/up/down ãå¯) |
| æ°ã¯ãŒã¯ã¹ããŒã¹ | cmux new-workspace --cwd $(pwd) |
| ã³ãã³ãéä¿¡ | cmux-send --surface surface:N "command\n" |
| ããŒéä¿¡ | cmux-send-key --surface surface:N return / ctrl+c / ctrl+d |
| ç»é¢èªã¿åã | cmux-read --surface surface:N [--scrollback] |
| ãµãŒãã§ã¹/WS çµäº | cmux close-surface / cmux close-workspace |
| äžèŠ§è¡šç€º | cmux list-panes / cmux list-pane-surfaces |
ããã¯æãéèŠãªã«ãŒã«ã§ããã
\n ã§ OKcmux-send --surface surface:1 "echo hello\n"
æ«å°Ÿã® \n ã Enter ããŒãšããŠæ©èœããã
cmux-send-key return ãå¿
é \n ã¯æ¹è¡ãšããŠéä¿¡ãããªããåè¡ãåå¥ã«éããè¡éã§ cmux-send-key return ã䜿ãã
# â
æ£ããæ¹æ³
cmux-send --surface surface:1 "line 1"
cmux-send-key --surface surface:1 return
cmux-send --surface surface:1 "line 2"
cmux-send-key --surface surface:1 return
# â ééã â \n ã¯éäžæ¹è¡ã«ãªããªã
cmux-send --surface surface:1 "line 1\nline 2\n"
ã«ãŒã«: æ«å°Ÿã® \n 1åã ã㯠Enter ãšããŠæ©èœãããæååã®éäžã« \n ãå
¥ããŠãæ¹è¡ã«ã¯ãªããªãã
ããã»ã¹äžæïŒCtrl+CïŒãªã©ã®å¶åŸ¡ããŒã¯ cmux-send-key ã§éããcmux-send ã§ã¯éããªãã
# â
æ£ããæ¹æ³
cmux-send-key --surface surface:N ctrl+c
# â ééã â ãªãã©ã«ããã¹ããéãããã ã
cmux-send --surface surface:N "C-c"
cmux-send --surface surface:N "\x03"
cmux-send-key --surface surface:N "C-c" # â Unknown key ãšã©ãŒ
ããŒå㯠ctrl+c, ctrl+d, ctrl+z, return, tab, escape çãcmux send-key --help ã§ç¢ºèªå¯èœã
cmux-read / cmux-send / cmux-send-key ã©ãããŒã䜿ãã surface:N ãæž¡ããšèªåçã«æ£ããã¯ãŒã¯ã¹ããŒã¹ã解決ãããããå¥ workspace/window ã®ãµãŒãã§ã¹ã§ã --surface ã ãã§åãã
# â
æ£ããæ¹æ³ â surface ref ããèªå解決ïŒwindow ããŸããã§ã OKïŒ
cmux-read --surface surface:N
cmux-send --surface surface:N "command\n"
cmux-send-key --surface surface:N return
# â ééã â çã® cmux ã³ãã³ãã¯å¥ workspace/window ã®ãµãŒãã§ã¹ã§å€±æ
cmux read-screen --surface surface:S # â "Surface is not a terminal" ãšã©ãŒ
cmux send --surface surface:S "..." # â åäž
çç±: çã® cmux read-screen / cmux send / cmux send-key ã® --surface 㯠caller ãšåäžã¯ãŒã¯ã¹ããŒã¹å
ã®ãµãŒãã§ã¹ã®ã¿æå¹ãã©ãããŒã¯å
éšã§ cmux tree --all --json ãã workspace ã解決ã --workspace çµç±ã§åŒã³çŽããããcross-window ã§ãåäœããã--workspace 圢åŒã¯ãã®ãŸãŸééããã®ã§ãnew-workspace ãããŒïŒåŸè¿°ïŒã§ãçµ±äžããŠäœ¿ããã
奿èã§ã®å®è¡ãå¿
èŠãªããæ¢åã® surface ãåå©çšãã cmux new-split ã§æ°èŠäœæãããæ¢åãã€ã³ã®ç¶æ
ïŒå®è¡äžããã»ã¹ãæªä¿åã®äœæ¥ïŒãç Žå£ãããªã¹ã¯ããããããåå©çšã¯å±éºã
ããªã¬ãŒ: ãŠãŒã¶ãŒããå¥ surface ã§ããæ°ãã surface ã§ããå¥ãã€ã³ã§ããsplit ã§ããšæç€ºããå Žåã¯ãå¿
ã new-split ã§æ°èŠäœæãããçŸåšã® surface ã§ãã®ãŸãŸå®è¡ããŠã¯ãããªãã
SURF=$(cmux new-split right | awk '{print $2}')
cmux-send --surface $SURF "command\n"
# äžèŠã«ãªã£ããéãã
cmux close-surface --surface $SURF
ãµããšãŒãžã§ã³ããèµ·åããã¿ã¹ã¯ãå§ä»»ããçµæãååããäžé£ã®æé ã
| æ¹åŒ | å©ç¹ | 泚æ |
|---|---|---|
åäžã¯ãŒã¯ã¹ããŒã¹ (new-split) | PTY é å»¶åæååé¡ãåé¿ | ã¬ã€ã¢ãŠãã厩ããã cmux-grid ã§ä¿®åŸ© |
å¥ã¯ãŒã¯ã¹ããŒã¹ (new-workspace) | close-workspace ã§äžæ¬çµäºãrename-workspace ã§èå¥ãããã | PTY é å»¶åæååé¡ã®åœ±é¿ããïŒåŸè¿°ïŒ |
SURF=$(cmux new-split right | awk '{print $2}')
cmux rename-tab --surface $SURF "Researcher-1"
WS=$(cmux new-workspace --cwd $(pwd) | awk '{print $2}')
cmux rename-workspace --workspace $WS "Researcher-1"
泚æ: PTY é å»¶åæååé¡ïŒåŸè¿°ïŒã«ãããã¯ãŒã¯ã¹ããŒã¹ã GUI äžã§äžåºŠè¡šç€ºããå¿ èŠãããå Žåãããã
cmux-send --workspace $WS "claude --dangerously-skip-permissions\n"
--dangerously-skip-permissionsã¯ä¿¡é Œã§ããã¿ã¹ã¯ã«ã®ã¿äœ¿ãããšã
èµ·åçŽåŸã« Trust 確èªããã³ããã衚瀺ãããå Žåããããcmux-read ã§ããŒãªã³ã°ãã"trust" ã "Yes, I trust" ãæ€åºãããæ¿èª:
screen=$(cmux-read --workspace $WS)
# "trust" æ€åº â æ¿èª
cmux-send-key --workspace $WS return
⯠ããã³ããã衚瀺ããããŸã§ cmux-read --workspace $WS ã§ããŒãªã³ã°ã
# åäžè¡
cmux-send --workspace $WS "æç€ºããã¹ã\n"
cmux set-status $WS "調æ»äž" --icon hammer # ã¹ããŒã¿ã¹ãèšå®
# è€æ°è¡ïŒcmux-send-key return ã§æ¹è¡ïŒ
cmux-send --workspace $WS "1è¡ç®ã®æç€º"
cmux-send-key --workspace $WS return
cmux-send --workspace $WS "2è¡ç®ã®æç€º"
cmux-send-key --workspace $WS return
⯠ããã³ããã®å衚瀺ã cmux-read --workspace $WS ã§ããŒãªã³ã°ããŠæ€åºã
cmux clear-status $WS # ã¹ããŒã¿ã¹ãã¯ãªã¢
result=$(cmux-read --workspace $WS --scrollback) # å
šåºåååŸ
# ã¯ãªãŒã³ã¢ãã: Claude çµäº â ãã€ã³éã
cmux-send --workspace $WS "/exit\n"
sleep 2
cmux close-workspace --workspace $WS # ã¯ãŒã¯ã¹ããŒã¹ããšéãã
éèŠ:
/exitã ãã§ã¯ Claude ããã»ã¹ãçµäºããã ãã§ãã€ã³ïŒsurfaceïŒã¯æ®ããå¿ ãclose-workspaceïŒãŸãã¯close-surfaceïŒã§ãã€ã³ãéããããšãsleep 2ã¯/exitã®åŠçå®äºãåŸ ã€ããã
cmux new-workspace ã§äœæããã¯ãŒã¯ã¹ããŒã¹ã®ã¿ãŒããã« PTY ã¯ãGUI äžã§äžåºŠè¡šç€ºããããŸã§èµ·åããªãã
select-workspace API ã ãã§ã¯äžååã§ãGUI æç»ïŒSwiftUI ã¬ã³ããªã³ã°ïŒãå¿
èŠã
cmux-send --surface surface:N â OK ãè¿ããã³ãã³ãã¯å®è¡ãããªãïŒãã¥ãŒã«çãŸãïŒcmux-read --surface surface:N â Surface is not a terminal ãšã©ãŒsurface.send_text â queued: true ã ãæªé
ä¿¡surface.read_text â Terminal surface not foundmacOS ã¢ã¯ã»ã·ããªãã£èš±å¯ãå¿ èŠïŒã·ã¹ãã èšå® â ãã©ã€ãã·ãŒãšã»ãã¥ãªã㣠â ã¢ã¯ã»ã·ããªãã£ïŒã
# ã¯ãŒã¯ã¹ããŒã¹äœæåŸã« GUI 衚瀺ã匷å¶ãã
WS=$(cmux new-workspace --cwd $(pwd) | awk '{print $2}')
# ã¯ãŒã¯ã¹ããŒã¹ã®ã€ã³ããã¯ã¹ãååŸ
WS_INDEX=$(cmux tree --json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for w in data['windows']:
for ws in w['workspaces']:
if ws['ref'] == '$WS':
print(ws['index'] + 1)")
# AppleScript ã§ã¡ãã¥ãŒã¯ãªã㯠â PTY åæå
osascript -e "
tell application \"System Events\"
tell process \"cmux\"
click menu item \"ã¯ãŒã¯ã¹ããŒã¹ $WS_INDEX\" of menu 1 of menu bar item \"衚瀺\" of menu bar 1
end tell
end tell"
sleep 2
# å
ã®ã¯ãŒã¯ã¹ããŒã¹ã«æ»ã
ORIG_INDEX=1 # å
ã®ã¯ãŒã¯ã¹ããŒã¹ã® index+1
osascript -e "
tell application \"System Events\"
tell process \"cmux\"
click menu item \"ã¯ãŒã¯ã¹ããŒã¹ $ORIG_INDEX\" of menu 1 of menu bar item \"衚瀺\" of menu bar 1
end tell
end tell"
ãœã±ãã API surface.send_text / surface.read_text ã¯ãã¿ãŒã²ãã surface ã® PTY ãæªåæåã®å Žåãcaller ã® surface ã«ãµã€ã¬ã³ãã«ãã©ãŒã«ããã¯ããããšããããã¬ã¹ãã³ã¹ã® surface_ref ã確èªããŠæå³ãã surface ã«éä¿¡ããããå¿
ãæ€èšŒããããšã
| åé¡ | å¯ŸåŠ |
|---|---|
| åºåã空 / å€ã | cmux refresh-surfaces ããŠããåèªã¿åã |
| é·ãåºåãåãã | --scrollback ã远å |
| ç¹å®è¡æ°ã ãæ¬²ãã | --lines N ã§è¡æ°æå® |
| surface ãèŠã€ãããªã | cmux list-pane-surfaces ã§ refs ãåç¢ºèª |
Surface is not a terminal | çã® cmux read-screen ã䜿ã£ãŠãã â cmux-read ã©ãããŒã«çœ®ãæããããŸã㯠PTY é
å»¶åæååé¡ïŒäžèšã¯ãŒã¯ã¢ã©ãŠã³ãåç
§ïŒ |
cmux-read ã®çµæãããããå Žå㯠cmux refresh-surfaces â åèªã¿åãã®é ã§è©Šãã
dev server ããã«ããªã©é·æéããã»ã¹ã¯å°çšãã€ã³ã«åé¢ããcmux-read ã§å®æçã«ç£èŠããã
cmux new-split right # â surface:N
cmux-send --surface surface:N "npm run dev\n"
# ããŒãªã³ã°ã§ "ready" çã®ããŒã¯ãŒããæ€åº
screen=$(cmux-read --surface surface:N)
# ã¢ããªå
éç¥ïŒãã€ã³ãã€ã©ã€ãããµã€ãããŒãããžãCmd+Shift+U ã§ç§»åïŒ
cmux notify --title "å®äº" --body "ãã«ããæåããŸãã"
# macOS éç¥ã»ã³ã¿ãŒïŒãµãŠã³ãä»ããå¥ã¢ããªäœ¿çšäžã§ã衚瀺ïŒ
osascript -e 'display notification "ãã«ãå®äº" with title "Claude" sound name "Glass"'
䜿ãåã: cmux å
ã§æ³šæãåŒã â cmux notifyããŠãŒã¶ãŒãå¥ã¢ããªã«ãã â osascriptã
cmux set-status mykey "äœæ¥äž" --icon hammer --color "#0099ff" # ãµã€ãããŒã«è¡šç€º
cmux clear-status mykey
cmux set-progress 0.5 --label "ãã«ãäž..." # ããã°ã¬ã¹ããŒïŒ0.0ã1.0ïŒ
cmux clear-progress
BSURF=$(cmux browser open https://example.com | awk '{print $2}') # ãã©ãŠã¶ãéã
cmux browser $BSURF goto https://google.com # ç§»å
cmux browser $BSURF back / forward / reload # æ»ãã»é²ãã»ãªããŒã
cmux browser $BSURF url # çŸåšã® URL ãååŸ
cmux browser $BSURF focus-webview # ãã©ãŠã¶ã«ãã©ãŒã«ã¹
cmux browser $BSURF snapshot --interactive # [ref=eN] ããŒã«ãŒä»ãã§ååŸïŒæäœåã«å¿
é ïŒ
åºåäŸïŒeN ã CSS ã»ã¬ã¯ã¿ãšããŠæ©èœããïŒ:
heading "Welcome" [ref=e1]
button "Submit" [ref=e2]
textbox [ref=e3]
| ãªãã·ã§ã³ | 説æ |
|---|---|
--interactive / -i | [ref=eN] ããŒã«ãŒãä»äž |
--compact | ã³ã³ãã¯ã衚瀺 |
--max-depth N | DOM 深床å¶é |
--selector css | ç¹å®èŠçŽ ã®ã¿ |
--cursor | ã«ãŒãœã«äœçœ®æ å ±ãå«ã |
åå: screenshot ã¯èŠèŠã¬ã€ã¢ãŠãã®ãã°èª¿æ»ã§ãã䜿ããªãã PNG ã¯ããŒã¯ã³ãå€§éæ¶è²»ãããå€ã»ç¶æ
ã»ããã¹ãã»æ§é ã®ç¢ºèªã¯ãã¹ãŠããã¹ãããŒã¹ã®ã³ãã³ãã§è¡ãã
| 確èªãããããš | 䜿ãã³ãã³ã |
|---|---|
| å ¥åãã£ãŒã«ãã®å€ | get value eN |
| èŠçŽ ã®ããã¹ãå 容 | get text eN |
| èŠçŽ ã®å±æ§ïŒhref, src çïŒ | get attr eN <name> |
| ãã§ãã¯ããã¯ã¹ã®ç¶æ | is checked eN |
| è¡šç€ºã»æå¹ç¶æ | is visible eN / is enabled eN |
| ããŒãžäžã®èŠçŽ ãæ¢ããŠæäœãã | snapshot --interactive |
| DOM æ§é ã»éå±€ã確èªãã | snapshot |
| èŠèŠã¬ã€ã¢ãŠãã®ãã°èª¿æ» | screenshotïŒæçµææ®µïŒ |
å€æåºæº: ãç®ã§ç¢ºèªãããããšæã£ãŠãããã®æ
å ±ã DOM ããåãããªã snapshot / get ç³»ã䜿ããscreenshot ãéžã¶åã«ããã㯠get value / get text / snapshot ã§åããªããïŒããå¿
ãèªåããããã©ãŒã éä¿¡åã®å€ç¢ºèªãå
¥åçµæã®æ€èšŒãèŠçŽ ã®ååšç¢ºèªã¯ãã¹ãŠ DOM ããåããã
ã»ã¬ã¯ã¿ã«ã¯ CSS ã»ã¬ã¯ã¿ãŸãã¯ã¹ãããã·ã§ããã® refïŒe2 çïŒã䜿ãã--snapshot-after ã§æäœåŸã«èªåã§ã¹ãããã·ã§ãããååŸã§ããã
cmux browser $BSURF click e2 # ã¯ãªãã¯
cmux browser $BSURF dblclick e5 # ããã«ã¯ãªãã¯
cmux browser $BSURF hover e3 # ãããŒ
cmux browser $BSURF focus e3 # ãã©ãŒã«ã¹
cmux browser $BSURF scroll-into-view e4 # ãã¥ãŒã«ã¹ã¯ããŒã«
cmux browser $BSURF check e8 / uncheck e8 # ãã§ãã¯ã»è§£é€
cmux browser $BSURF fill e3 "hello" # å
¥åïŒæ¢åãã¯ãªã¢ããŠå
¥åïŒ
cmux browser $BSURF type e3 "world" # 远èšå
¥å
cmux browser $BSURF select e7 "option-val" # ããããããŠã³éžæ
cmux browser $BSURF press Enter # ããŒæŒäžïŒReturn, Tab, Escape çïŒ
# find: ARIA ããŒã« / ããã¹ã / ã©ãã« / ãã¬ãŒã¹ãã«ã㌠/ alt / title / testid / first / last / nth
cmux browser $BSURF find role button
cmux browser $BSURF find text "Submit"
cmux browser $BSURF find nth 3 --selector "li"
# is: èŠçŽ ã®ç¶æ
確èª
cmux browser $BSURF is visible e3 # 衚瀺ãããŠããã
cmux browser $BSURF is enabled e3 # æå¹ã
cmux browser $BSURF is checked e8 # ãã§ãã¯æžã¿ã
cmux browser $BSURF get url / title # URLã»ã¿ã€ãã«
cmux browser $BSURF get text e3 # ããã¹ã
cmux browser $BSURF get html e3 # HTML
cmux browser $BSURF get value e3 # å
¥åå€
cmux browser $BSURF get attr e3 href # 屿§
cmux browser $BSURF get count "button" # èŠçŽ æ°
cmux browser $BSURF get box e3 # ããŠã³ãã£ã³ã°ããã¯ã¹
cmux browser $BSURF wait --selector "#loaded" --timeout-ms 10000
cmux browser $BSURF wait --text "Success"
cmux browser $BSURF wait --url-contains "/dashboard"
cmux browser $BSURF wait --load-state complete # ãŸã㯠interactive
cmux browser $BSURF wait --function "document.readyState === 'complete'"
cmux browser $BSURF eval 'document.querySelector("h1").innerText'
cmux browser $BSURF addinitscript 'window.myFlag = true' # ããŒãžèªã¿èŸŒã¿åã«æ³šå
¥
cmux browser $BSURF addstyle 'body { background: red }' # CSS 泚å
¥
cmux browser $BSURF frame selector "#iframe1" # iframe ã«åãæ¿ã
cmux browser $BSURF frame main # ã¡ã€ã³ãã¬ãŒã ã«æ»ã
cmux browser $BSURF dialog accept # confirm/alert ã OK
cmux browser $BSURF dialog dismiss # ãã£ã³ã»ã«
cmux browser $BSURF dialog accept "å
¥åããã¹ã" # prompt ã«å
¥å
cmux browser $BSURF scroll --dy 500 # äžã« 500px
cmux browser $BSURF scroll --selector "#list" --dy 200 # èŠçŽ å
ã¹ã¯ããŒã«
cmux browser $BSURF screenshot --out ~/Desktop/cap.png # â ïž ããŒã¯ã³å€§æ¶è²»ãsnapshot / get ç³»ã§ä»£æ¿ã§ããªããå¿
ãæ€èš
cmux browser $BSURF highlight e3 # èŠçŽ ããã€ã©ã€ã
cmux browser $BSURF console list # ã³ã³ãœãŒã«ã¡ãã»ãŒãž
cmux browser $BSURF errors list # JavaScript ãšã©ãŒ
cmux browser $BSURF cookies get / set / clear
cmux browser $BSURF storage local get --key "user"
cmux browser $BSURF storage session set --key "token" --value "xyz"
cmux browser $BSURF state save ~/.browser-state/session.json # èªèšŒç¶æ
ãä¿å
cmux browser $BSURF state load ~/.browser-state/session.json # 埩å
cmux browser $BSURF tab list / new / switch 2 / close 2 # ã¿ã管ç
not_supported ãšã©ãŒïŒä»¥äžã®ã³ãã³ã㯠cmux browser --help ã«è¡šç€ºãããããçŸåšã® WKWebView ã§ã¯åäœããªã:
| ã³ãã³ã | ãšã©ãŒ |
|---|---|
viewport <w> <h> | browser.viewport.set is not supported on WKWebView |
geo <lat> <lon> | browser.geolocation.set is not supported on WKWebView |
offline true/false | browser.offline.set is not supported on WKWebView |
trace start/stop | browser.trace.start is not supported on WKWebView |
network route/unroute | browser.network.route is not supported on WKWebView |
screencast start/stop | browser.screencast.start is not supported on WKWebView |
input mouse/keyboard/touch | browser.input_mouse is not supported on WKWebView |
| ãã¹ | æ£ããæ¹æ³ |
|---|---|
| ã¹ãããã·ã§ãããªãã§ ref ã䜿ã | æäœåã« snapshot --interactive ã§ ref ãååŸ |
| ããã²ãŒã·ã§ã³åŸã«å€ã ref ã䜿ã | é·ç§»åŸã¯åã¹ãããã·ã§ããïŒref 㯠DOM 倿Žã§ç¡å¹åïŒ |
dialog ãç¡èŠããŠãã³ã°ãã | ã¯ãªãã¯ååŸã« dialog accept/dismiss ãä»èŸŒã |
| iframe å ã®èŠçŽ ãèŠã€ãããªã | frame selector ã§åãæ¿ããŠããæäœãã |
ãã©ãŒã å€ã DOM ç¶æ
ã screenshot ã§ç¢ºèªãã | get value / get attr / get text / is checked / snapshot ã§ååŸãããscreenshot ã¯èŠèŠã¬ã€ã¢ãŠãã®ãã°èª¿æ»éå® |
| 倿° | 説æ |
|---|---|
CMUX_SOCKET_PATH | cmux ãœã±ããã®ãã¹ãååšããã° cmux å ã§åäœäž |
CMUX_WORKSPACE_ID | çŸåšã®ã¯ãŒã¯ã¹ããŒã¹ ID |
CMUX_SURFACE_ID | çŸåšã®ãµãŒãã§ã¹ ID |
| ãã¹ | æ£ããæ¹æ³ |
|---|---|
cmux-send "line1\nline2\n" ã§è€æ°è¡ãéã | åè¡ãåå¥ã« cmux-send ããè¡éã§ cmux-send-key return ã䜿ã |
| UUID ã§ãµãŒãã§ã¹ãæå®ãã | ççž® refs ã䜿ã: surface:1, pane:2 |
| åäžã¯ãŒã¯ã¹ããŒã¹ã®ã¬ã€ã¢ãŠã厩ããæŸçœ® | cmux-grid ã§æŽåããããå¥ã¯ãŒã¯ã¹ããŒã¹ã«é
眮ãã |
cmux-read ã®çµæã空ã§è«Šãã | refresh-surfaces ãå®è¡ããŠãããªãã©ã€ |
| Trust ããã³ãããèŠéããŠãã³ã°ãã | èµ·ååŸã« cmux-read ã§ããŒãªã³ã°ããŠæ€åºãã |
cmux read-screen / cmux send / cmux send-key ãçŽæ¥åŒã¶ | cmux-read / cmux-send / cmux-send-key ã©ãããŒã䜿ãïŒsurfaceâworkspace èªåè§£æ±ºïŒ |
cmux-send "C-c" ã cmux-send "\x03" ã§ Ctrl+C ãéã | cmux-send-key ctrl+c ã䜿ãïŒå¶åŸ¡ããŒã®éä¿¡ åç
§ïŒ |
| ãå¥ surface ã§ããšèšãããã®ã«çŸåšã® surface ã§å®è¡ãã | cmux new-split ã§æ°èŠ surface ãäœã£ãŠããããã§å®è¡ãã |
| æ¢å surface ãåå©çšãã | å®è¡äžããã»ã¹ãç¶æ
ãç Žå£ãããªã¹ã¯ããããããåå new-split ã§æ°èŠäœæãã |
| ã¯ãŒã¯ã¹ããŒã¹ã«ååãä»ããªã | rename-workspace ã§çšéã瀺ãååãä»ãã |
/exit ã ãã§ã¯ãªãŒã³ã¢ããå®äºãšæã | /exit â sleep 2 â close-workspace / close-surface ã§ãã€ã³ãéãã |
| ã³ãã³ã | 説æ |
|---|---|
identify / tree | ç°å¢æ å ± / ããããžãŒè¡šç€º |
list-workspaces / list-panes / list-pane-surfaces | äžèŠ§è¡šç€º |
new-workspace / new-split <dir> | ã¯ãŒã¯ã¹ããŒã¹ã»ãã€ã³äœæ |
cmux-send / cmux-send-key / cmux-read | å ¥åºåæäœïŒsurfaceâworkspace èªå解決ã©ãããŒïŒ |
refresh-surfaces | ç»é¢ãããã¡åŒ·å¶æŽæ° |
close-surface / close-workspace | ãªãœãŒã¹çµäº |
select-workspace / rename-workspace / rename-tab | éžæã»ååå€æŽ |
cmux-grid / cmux-grid 2x3 | ãã€ã³ãã°ãªããã¬ã€ã¢ãŠãã«æŽå |
notify / set-status / set-progress | éç¥ã»ã¹ããŒã¿ã¹ã»é²æ |
wait-for | ã·ã°ãã«åŸ æ© |