发现 
命令行工具开发者工具
Freeze:代码与终端截图工具
用命令行把代码片段和终端输出生成为 PNG、SVG、WebP 图片,适合写文档和做分享的开发者。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v0.2.2
- 平台
- Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。
详细介绍
项目简介
Freeze 是一个用 Go 编写的命令行工具,用于把代码文件或终端输出渲染成精美的图片。它支持输出 PNG、SVG 和 WebP 格式,并提供了丰富的自定义选项,可以做出带窗口按钮、圆角、阴影、主题配色的「macOS 风格」截图效果。工具还自带一个交互式 TUI,方便不熟悉参数的用户调好样式后直接出图。
主要功能
- 代码转图片:直接处理源码文件,按文件名或内容自动识别语言并做语法高亮,也可用
--language手动指定。 - 捕获终端输出:通过
--execute执行命令并捕获其 ANSI 输出,生成终端截图。 - 多种输出格式:支持
.svg、.png、.webp,还可以一次性用out.{svg,png,webp}生成全部格式。 - 交互式模式:
freeze --interactive提供可视化调节界面,配置会写入$XDG_CONFIG/freeze/user.json,之后用freeze --config user复用。 - 外观自定义:主题、字体(字族、字号、行高、连字、嵌入字体文件)、背景色、边框宽度与颜色、圆角、内外边距、阴影、窗口控制按钮、窗口高度、行号显示与行范围截取等。
- 配置文件:所有
--flag选项都能映射到 JSON 配置文件,内置base、full、user三套预设。 - TUI 截图:配合
tmux capture-pane可以捕获运行中的终端界面程序。
安装与使用
安装方式(任选其一):
# macOS 或 Linux
brew install charmbracelet/tap/freeze
# Arch Linux
yay -S freeze
# Nix
nix-env -iA nixpkgs.charm-freeze
# 通过 Go 安装
go install github.com/charmbracelet/freeze@latest
也可以从 Releases 下载 Debian、RPM 包,或 Linux、macOS、Windows 的二进制文件。
基本用法:
# 代码文件转图片
freeze artichoke.hs -o artichoke.png
# 捕获终端命令输出
freeze --execute "eza -lah"
# 指定语言
cat artichoke.hs | freeze --language haskell
常用自定义示例:
freeze artichoke.hs --theme dracula
freeze main.go --output out.{svg,png,webp}
freeze artichoke.hs \
--font.family "SF Mono" \
--font.size 16 \
--line-height 1.4
freeze artichoke.hs --show-line-numbers --lines 2,3
freeze artichoke.hs --border.radius 8 --window
freeze artichoke.hs --border.width 1 --border.color "#515151" --border.radius 8
freeze main.go --padding 20,60,20,40
freeze main.go --margin 20,40
freeze artichoke.hs --shadow.blur 20 --shadow.x 0 --shadow.y 10
使用配置文件:
freeze -c base main.go
freeze -c full main.go
freeze -c user main.go # 相当于 ~/.config/freeze/user.json
freeze -c ./custom.json main.go
配置示例:
{
"window": false,
"border": {
"radius": 0,
"width": 0,
"color": "#515151"
},
"shadow": false,
"padding": [20, 40, 20, 20],
"margin": "0",
"font": {
"family": "JetBrains Mono",
"size": 14
},
"line_height": 1.2
}
截取 TUI 界面:
hx # 在另一个 tmux 面板中
Tmux capture-pane -pet 1 | freeze -c full
注意事项
- 输出文件不给
--output时默认写为out.svg;若输出被管道接管则写入 stdout。 - 字体默认使用
JetBrains Mono、字号 14、行高 1.2;--font.file可嵌入 TTF、WOFF、WOFF2 字体文件(会打包进 SVG)。 --padding与--margin支持传 1 个、2 个或 4 个值,分别对应全边、垂直/水平、上右下左。- 完整的参数列表可以用
freeze --help查看。 - 项目采用 MIT 许可证。
本作品整理自 GitHub 开源项目 charmbracelet/freeze,原作者 @charmbracelet,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v0.2.2当前版本
修复了 `--version` 参数的问题,并调整了 CI 中的 entitlements 配置。
评论