Содержание
TLDR
# Устанавливаемnpm install -g terminalizer
# Сохраняем глобальный конфигterminalizer init
# Начинаем запись с названием testterminalizer record -k test
# Рендерим полученную запись в файл test.gifterminalizer render test -o test.gif
Зачем оно надо
Это скорее утилита для баловства, ведь всегда можно просто сделать запись области экрана и конвертнуть это дело в GIF, но можно все это делать прямо в терминале.
Помимо прочего, можно загрузить на их сайт запись и переслать кому-лиюо ссылку.
Установка и первый запуск
Для установки потребуется, чтобы на тачке был установлен npm. Устанавливаем для всех пользователей:
npm install -g terminalizer
Для того же Mac brew не поможет, но для Arch-а можно воспользоваться версиями из AUR.
# если Вы используете yayyay -S nodejs-terminalizer
Все, все готово к работе, можно запускать:
terminalizer record -k test
В текущем окне будет запущена новая сессия, можете в ней потыкать, подключиться по ssh - как пожелаете, в конце просто жмем exit
, чтобы прервать текущую запись. По итогу в текущей директории будет сохранен предварительный файл, который можно срендерить в gif-ку (в нашем случае, мы записывали test
, значит и появиться файл test.yaml
):
terminalizer render test -o test.gif
Вы великолепны! В текущей папке у Вас появился файл test.gif
с записью терминала!
Главная проблема в том, что Вы увидите свой старый еще ненастроенный терминал, забудьте о starship.rs, Oh-My-Posh или других украшениях. Если Вы хотите использовать полную мощь terminalizer, то его необходимо настроить.
Настройка
По умолчанию terminalizer берет конфиг из текущей директории, или же, если его нет, то из ~/.config/terminalizer
папки.
Сгенерировать дефолтный конфиг можно командой
terminalizer init
В терминале Вы увидите что-то вроде
The global config directory is created at/Users/bob/.config/terminalizer
В таком случае, каждый запуск terminalizer
будет идти с данным конфигом, но при этом каждый раз, когда вы делаете какую-то запись, генерируется YAML файл, в котором содержится как полный конфиг, так и записанные кадры, так что тестируя свои параметры, удобнее править полученный файл, а не менять параметры глобального конфига и каждый раз заново прогонять запись.
command
Первым делом необходимо заменить команду запуска на Вашу оболочку
# Specify a command to be executed# like `/bin/bash -l`, `ls`, or any other commands# the default is bash for Linux# or powershell.exe for Windowscommand: zsh
В моем случае, я заменил null
на zsh
env
Следующий параметр, на который следует обратить внимание - это env
:
# Export additional ENV variablesenv: recording: true
По умолчанию при запуске terminalizer в оболочке выставляется переменная окружения recording=true
, это удобно, к примеру, для того, чтобы не запускать определенные команды. Так в каждом моем терминале вызывается утилита pfetch.
Чтобы не засорять вывод, в ~/.zshrc
у меня прописана проверка на наличие переменной recording
, чтобы не показывать вывод pfetch в terminalizer:
if [ -z "$recording" ]; then pfetchfi
В целом, остальные параметры неплохо описаны в документации: будь то добавление вотермарки или же настройка полей. Главное - не забудьте указать шрифты, которые стоят у Вас в терминале.
Проблемы
Так как мы имеем дело с чисто JS-ной утилитой, то при её установке (а иногда и при работе) могут вылезать проблемы.
EACCESS
При установке можем словить нечто подобное:
npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR! path /usr/local/lib/node_modulesnpm ERR! errno -13npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules'npm ERR! [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules'] {npm ERR! errno: -13,npm ERR! code: 'EACCES',npm ERR! syscall: 'mkdir',npm ERR! path: '/usr/local/lib/node_modules'npm ERR! }npm ERR!npm ERR! The operation was rejected by your operating system.npm ERR! It is likely you do not have the permissions to access this file as the current usernpm ERR!npm ERR! If you believe this might be a permissions issue, please double-check thenpm ERR! permissions of the file and its containing directories, or try runningnpm ERR! the command again as root/Administrator.
npm ERR! A complete log of this run can be found in:npm ERR! /home/zhurik/.npm/_logs/2025-03-14T09_48_06_223Z-debug-0.log
Проблема нередкая, и в целом решение лежит в доке.
Но если лень ковырять или переустанавливать node и npm, то можно просто указать npm-у папку, в которую ставить глобальные пакеты:
mkdir -p ~/.npm-global/lib
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' | tee -a ~/.profile
source .profile
Вуаля, все установится и будет работать