Что такое Freeze и зачем это нужно
Команда Charm, известная своими инструментами для терминала (Bubbletea, Lip Gloss), выпустила Freeze — утилиту с открытым исходным кодом, предназначенную для генерации высококачественных изображений (PNG, SVG, WebP) фрагментов кода и вывода терминала. Инструмент решает проблему «некрасивых» скриншотов в статьях и презентациях, предлагая автоматическое определение языка, поддержку тем и стилизацию под macOS.
Ключевые возможности и метрики
Freeze выделяется не только рендерингом статического кода, но и возможностью захвата ANSI-вывода команд. Утилита поддерживает интерактивный TUI (Text User Interface) для визуальной настройки параметров перед сохранением. Основные технические характеристики:
- Форматы вывода: SVG, PNG, WebP.
- Автоопределение: Язык программирования определяется по имени файла или содержимому.
- Шрифты: По умолчанию используется JetBrains Mono (14px, 1.2em), но можно задать любой шрифт, включая встраивание файлов TTF/WOFF/WOFF2.
- Стилизация: Настройка радиуса углов, теней, отступов, номеров строк и оконных контролов.
Примеры использования
Утилита работает через CLI и поддерживает флаги для тонкой настройки. Ниже приведена таблица основных параметров конфигурации:
| Параметр | Описание | Пример команды |
|---|---|---|
--theme |
Тема подсветки синтаксиса | freeze code.hs --theme dracula |
--font.size |
Размер шрифта (по умолч. 14) | freeze code.go --font.size 16 |
--border.radius |
Радиус скругления углов | freeze code.py --border.radius 8 |
--execute |
Запуск команды и захват вывода | freeze --execute eza -lah |
--lines |
Диапазон строк для захвата | freeze code.rs --lines 2,3 |
Работа с TUI и конфигурацией
Особенность Freeze — возможность захвата скриншотов из терминальных интерфейсов (TUI). Для этого используется связка с tmux: команда tmux capture-pane -pet 1 передает снимок панели в stdin Freeze. Это позволяет делать красивые скриншоты сложных интерактивных приложений.
Все настройки можно сохранить в JSON-файл конфигурации (по умолчанию ~/.config/freeze/user.json), который создается автоматически при использовании интерактивного режима freeze --interactive. Также доступны встроенные профили base (простой скриншот) и full (стиль macOS).
Установка и доступность
Инструмент распространяется под лицензией MIT. Доступен для Linux, macOS и Windows. Установить можно через популярные менеджеры пакетов:
- Homebrew:
brew install charmbracelet/tap/freeze - Nix:
nix-env -iA nixpkgs.charm-freeze - Go:
go install github.com/charmbracelet/freeze@latest
Бинарные файлы также доступны для скачивания напрямую с GitHub Releases.
Источник: Github ↗
