scr
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCapture terminal screenshots by running commands through ttyd + headless Chrome, executing scripted keypresses, saving PNG sequences.
通过ttyd + 无头Chrome运行命令、执行脚本化按键操作、保存PNG序列来捕获终端截图。
Syntax
语法
scr [flags] <command> [script]scr [flags] <command> [script]Flags
标志参数
| Flag | Default | Purpose |
|---|---|---|
| | Output directory |
| | Screenshot interval |
| | Timeout |
| | ttyd port |
| | Verbose |
| 标志 | 默认值 | 用途 |
|---|---|---|
| | 输出目录 |
| | 截图间隔 |
| | 超时时间 |
| | ttyd 端口 |
| | 详细日志模式 |
Script Actions
脚本操作
| Action | Syntax | Behavior |
|---|---|---|
| Type | | Type text (50ms/char default); supports spaces + ASCII punctuation |
| Type speed | | Type with custom per-char delay |
| Sleep | | Pause for duration (ms or s) |
| Key | | Press key once |
| Key repeat | | Press key N times |
| Key delay | | Delay before keypress |
| Ctrl combo | | Send control character |
| 操作 | 语法格式 | 行为说明 |
|---|---|---|
| 输入文本 | | 输入文本(默认50ms/字符);支持空格和ASCII标点符号 |
| 自定义输入速度 | | 按自定义的单字符延迟输入文本 |
| 暂停 | | 暂停指定时长(支持ms或s单位) |
| 按键 | | 按下指定按键一次 |
| 重复按键 | | 按下指定按键N次 |
| 延迟按键 | | 延迟指定时长后按下按键 |
| Ctrl组合键 | | 发送控制字符 |
Supported Keys
支持的按键
EnterTabEscapeSpaceBackspaceDeleteUpDownLeftRightHomeEndPageUpPageDownEnterTabEscapeSpaceBackspaceDeleteUpDownLeftRightHomeEndPageUpPageDownCommon Patterns
常见使用场景
Static capture (no interaction)
静态捕获(无交互)
bash
scr "ls -la"
scr "git status"
scr "cat README.md"bash
scr "ls -la"
scr "git status"
scr "cat README.md"Type and execute
输入并执行命令
bash
scr bash "Type 'echo hello' Enter"
scr bash "Type \"echo 'hello / ?'\" Enter"
scr bash "Type 'npm test' Enter Sleep 5s"bash
scr bash "Type 'echo hello' Enter"
scr bash "Type \"echo 'hello / ?'\" Enter"
scr bash "Type 'npm test' Enter Sleep 5s"Menu navigation (fzf, gum, etc.)
菜单导航(fzf、gum等工具)
bash
scr "seq 1 20 | fzf" "Down 5 Enter"
scr "gum choose A B C" "Down Down Enter"bash
scr "seq 1 20 | fzf" "Down 5 Enter"
scr "gum choose A B C" "Down Down Enter"Editors
编辑器操作
bash
scr vim "Type 'i' Type 'Hello' Escape Type ':wq' Enter"
scr nano "Type 'Hello' Ctrl+X Type 'y' Enter"bash
scr vim "Type 'i' Type 'Hello' Escape Type ':wq' Enter"
scr nano "Type 'Hello' Ctrl+X Type 'y' Enter"REPLs
交互式解释器(REPL)
bash
scr python3 "Type 'print(1+1)' Enter Sleep 500ms Ctrl+D"
scr node "Type '2+2' Enter Sleep 300ms Type '.exit' Enter"bash
scr python3 "Type 'print(1+1)' Enter Sleep 500ms Ctrl+D"
scr node "Type '2+2' Enter Sleep 300ms Type '.exit' Enter"Long-running processes
长时间运行的进程
bash
scr htop "Sleep 3s Ctrl+C"
scr -t 120s "npm run build" "Sleep 60s"bash
scr htop "Sleep 3s Ctrl+C"
scr -t 120s "npm run build" "Sleep 60s"Custom output
自定义输出设置
bash
scr -o ./docs/images "git log --oneline"
scr -i 200ms bash "Type 'ls' Enter"bash
scr -o ./docs/images "git log --oneline"
scr -i 200ms bash "Type 'ls' Enter"Error Handling
错误处理
Parse errors include position:
Error: parse script: position 23: expected quoted string after TypeUnknown key:
Error: unknown key 'Foo' at position 15; valid keys: Enter, Tab, ...解析错误会包含位置信息:
Error: parse script: position 23: expected quoted string after Type未知按键错误:
Error: unknown key 'Foo' at position 15; valid keys: Enter, Tab, ...Prerequisites
前置要求
Requires in PATH. If installed via Homebrew, is installed automatically as a dependency; otherwise install separately.
ttydttydttydChrome/Chromium must be available (chromedp auto-detects).
系统PATH中需要包含。如果通过Homebrew安装,会作为依赖自动安装;否则需要单独安装。
ttydttydttyd必须安装Chrome/Chromium(chromedp会自动检测)。
Output
输出结果
Screenshots saved as , , etc.
screenshot_001.pngscreenshot_002.pngCapture sequence:
- Initial terminal state
- Periodic snapshots (per )
--interval - Final state after script completes
截图将保存为、等格式。
screenshot_001.pngscreenshot_002.png捕获序列:
- 初始终端状态
- 按指定间隔定期截图
- 脚本完成后的最终状态