Мои студенты недавно интересовались, как и чем я делаю запись экрана с терминала. Поделюсь и с вами.

Начнём с того, что я не записываю терминал в реальном времени. Сначала я создаю сценарий, который в автоматическом режиме будет печатать нужные мне команды. А на выходе получается полноценный GIF-файл.

Софтина называется VHS. Позволяет через код записать GIF-файл.

VHS написана на модном Golang. Для начала устанавливаем. Есть под все операционки, в документации найди свой дистрибутив и накопипасти в терминал.

Я ничего не устанавливал, а пользуюсь Docker-версией, мне так удобнее: все зависимости упакованы в контейнер. Но если от Докера тебя выворачивает, можешь всегда собрать всё это из исходников.

Создаём файл сценария bashdays.tape:

vim bashdays.tape

И пишем код:

Output bashdays.gif
Require echo

Set Shell "bash"
Set FontSize 32
Set Width 1920
Set Height 1080

Type "echo 'Hello this is BashDays'" Sleep 500ms Enter
Type "apt install -y nginx" Sleep 500ms Enter

Sleep 5s

Думаю, тут всё интуитивно понятно: откроется оболочка Bash, настроятся шрифты, высота, длиннота и сообщение, которое будет напечатано. Либо команда, которая будет выполнена. Настроек там дофига, но, как обычно, 90% никем не используются.

После того как сценарий готов, запускаем:

docker run --rm -v $PWD:/vhs ghcr.io/charmbracelet/vhs bashdays.tape

Наблюдаем за процессом создания и на выходе получаем файл bashdays.gif, в котором будет вывод строки через echo и процесс установки Nginx.

Получившийся GIF-файл можно, не отходя от кассы, сразу зашарить на какой-то расшаренный сервер.

Вот такой командой:

docker run --rm -v $PWD:/vhs ghcr.io/charmbracelet/vhs publish bashdays.gif

По итогу получишь прямую ссылку вида: https://vhs.charm.sh/vhs-62gl16v.gif.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Ну а дальше уже втыкай свои гифки в корпоративные wiki или куда там ты их втыкаешь. Короче, штука ОФИГИТЕЛЬНАЯ. Всем рекомендую!

Страница проекта на GitHub

Всех с пятницей, хороших предстоящих выходных и береги себя!