用途:从命令行对 cmux 窗口截图或录屏,用于 pull request、bug 报告,或查看应用当前实际外观。
主要能力:cmux shot 写出窗口的 png 或 jpeg;cmux record 写出 mp4 或 gif。两者只捕获 cmux 自己的窗口,走同一条免权限路径,在 release 构建和 CI 中均可用,不涉及也从不请求屏幕录制权限。shot 输出 <width>x<height> <bytes> <path>,record 输出 <id> <state> <frames> <path>,两者都支持 --json 返回完整响应。
用法示例:cmux shot --label settings-sheet;cmux shot --jpg --max-width 1200 --out ~/before.jpg;cmux record start --gif --max-seconds 8 --label sidebar-drag;cmux record note "dragging the workspace";cmux record stop。--region x,y,w,h 在两个命令中含义相同,均为相对窗口左上角的窗口点坐标,便于从片段定位到静帧。
选择建议:静止对象(sheet、菜单、布局、标签、颜色)用截图;随时间变化的对象(拖拽、动画、重排、视图稳定过程、应停止的加载指示)用录屏。
限制与注意:录制会在 --max-seconds 自动停止(默认 15,最大 120);同一时间只允许一个录制,第二个 record start 会以 conflict 拒绝,可用 cmux record list 和 cmux record status 查看状态,--json 中含有效帧率。cmux record note 从该时刻起把文字画入片段,--no-captions 可关闭。片段只含 cmux,其他应用不会出现在画面中。帧按捕获时间计时,采样落后时播放速度仍与实际一致,可查看 fps_effective。gif 适合粘贴到 PR,--gif 默认 8 fps 与半尺寸;mp4 更清晰但需点击播放,scripts/pr-media.py 可上传并在途中把 mp4 转为 gif。两个命令都不会在新文件关闭前替换目录或销毁已有文件;--out 指向非文件路径会被拒绝,扩展名与格式不匹配也会被拒绝(如 --out clip.gif 需配合 --gif)。CI dogfood 场景通过 record 步骤与 note 录制,而非直接调用 CLI,详见 cmux-testing/references/dogfood-scenarios.md;完整参数、响应结构、错误码、窗口选择与限制见 references/commands.md。