SkillAgentSearch skills...

T Rec Rs

Blazingly fast terminal recorder that generates animated gif images for the web written in rust

Install / Use

npx skills add sassman/t-rec-rs

Installs into whichever agent you are using.

README

<div align="center"> <img src="https://github.com/sassman/t-rec-rs/blob/main/crates/t-rec/resources/logo.png?raw=true" width="250" height="250"> <h1><strong>t-rec: Terminal Recorder</strong></h1>

License: GPL v3 crates.io dependency status Build Status

Blazingly fast terminal recorder that generates animated gif images for the web written in rust.

</div>

Demo

demo

[!IMPORTANT] Windows support is in preview. The first Windows-capable release is shipped as a pre-release (v0.9.0-preview1) so it does not auto-install via cargo install t-rec or distro packages — you have to opt in. If you are on Windows, please try it and report what you find on the issue tracker. See Installation on Windows for the exact install command.

Features

  • Screenshotting your terminal with configurable framerate (4-15 fps)
  • Generates high quality small sized animated gif images or mp4 videos
  • built-in idle frames detection and optimization (for super fluid presentations)
  • Applies (can be disabled) border decor effects like drop shadow
  • Runs on Windows, MacOS, Linux and NetBSD
  • Uses native efficient APIs
  • Runs without any cloud service and entirely offline
  • No issues with terminal sizes larger than 80x24
  • No issues with fonts or colors
  • No issues with curses based programs
  • No issues with escape sequences
  • No record and replay - just one simple command to rule them all
  • Can record every arbitrary window you want (e.g. browser, ide)
  • Written in Rust 🦀

Installation on MacOS

with homebrew

brew install t-rec

with macports

sudo port selfupdate
sudo port install t-rec

with cargo

NOTE t-rec depends on imagemagick.

brew install imagemagick
cargo install -f t-rec

NOTE -f just makes sure the latest version is installed

Installation on Linux

with cargo

sudo apt-get install libx11-dev imagemagick
cargo install -f t-rec

as .deb

sudo apt-get install imagemagick
wget https://github.com/sassman/t-rec-rs/releases/download/v0.5.0/t-rec_0.5.0_amd64.deb
sudo dpkg -i t-rec_0.5.0_amd64.deb

as snap

Get it from the Snap Store

TL;DR:

sudo snap install t-rec --classic
/snap/bin/t-rec --version
t-rec 0.4.3

from AUR

t-rec can be installed from available AUR packages using an AUR helper. For example,

paru -S t-rec

If you prefer, you can clone the AUR packages and then compile them with makepkg. For example,

git clone https://aur.archlinux.org/t-rec.git
cd t-rec
makepkg -si

Installation on NetBSD

pkgin install t-rec

Or, if you prefer to build from source,

cd /usr/pkgsrc/multimedia/t-rec
make install

Installation on Windows

demo-windows

[!NOTE] Windows support ships as the v0.9.0-preview1 pre-release. Cargo and distro package managers do not pick up pre-releases by default, so the install command below pins the version explicitly. Once Windows support graduates to stable, the regular cargo install -f t-rec will work.

System requirements

t-rec uses ConPTY (CreatePseudoConsole) which is available from Windows 10 v1809 (build 17763) onwards. Earlier Windows versions are not supported.

Prerequisites

t-rec requires ImageMagick for GIF generation and decor effects, and optionally ffmpeg for MP4 video. Install them with winget:

winget install ImageMagick.ImageMagick
winget install ffmpeg

Make sure both binaries are on your PATH after install — restart your terminal if needed.

with cargo (pre-release)

cargo install -f t-rec --version 0.9.0-preview1

Pre-built binary (pre-release)

Grab the Windows zip attached to the v0.9.0-preview1 release, unpack it, and drop t-rec.exe somewhere on your PATH.

Shells

By default t-rec spawns cmd.exe. To record a different shell, pass it as an argument or set $env:SHELL:

t-rec powershell.exe
t-rec pwsh.exe
$env:SHELL = "pwsh.exe"; t-rec

| tested on those distros | |-------------------------| | ubuntu 20.10 on GNOME | | demo-ubuntu | | ubuntu 20.10 on i3wm | | demo-ubuntu-i3wm | | linux mint 20 on cinnamon | | demo-mint | | ArcoLinux 5.4 on Xfwm4 | | demo-arco |

Usage

t-rec

or with specifying a different program to launch

t-rec /bin/sh

Full Options

Blazingly fast terminal recorder that generates animated gif images for the web written in rust.

Usage: 

Arguments:
  [PROGRAM]  Shell or program to launch. Defaults to $SHELL

Options:
  -v, --verbose
          Enable verbose insights for the curious
  -q, --quiet
          Quiet mode, suppresses the banner: 'Press Ctrl+D to end recording'
  -m, --video
          Generates additionally to the gif a mp4 video of the recording
  -M, --video-only
          Generates only a mp4 video and not gif
  -d, --decor <DECOR>
          Decorates the animation with certain, mostly border effects [default: none] [possible values: shadow, none]
  -p, --wallpaper <WALLPAPER>
          Wallpaper background. Use 'ventura' for built-in, or provide a path to a custom image (PNG, JPEG, TGA)
      --wallpaper-padding <WALLPAPER_PADDING>
          Padding in pixels around the recording when using --wallpaper [default: 60]
  -b, --bg <BG>
          Background color when decors are used [default: transparent] [possible values: white, black, transparent]
  -n, --natural
          If you want a very natural typing experience and disable the idle detection and sampling optimization
  -l, --ls-win
          If you want to see a list of windows available for recording by their id [aliases: --ls]
  -w, --win-id <WIN_ID>
          Window Id (see --ls-win) that should be captured, instead of the current terminal
  -e, --end-pause <END_PAUSE>
          Pause time at the end of the animation (e.g., "2s", "500ms")
  -s, --start-pause <START_PAUSE>
          Pause time at the start of the animation (e.g., "1s", "200ms")
  -i, --idle-pause <IDLE_PAUSE>
          Max idle time before optimization kicks in. Can enhance readability [default: 3s]
  -o, --output <OUTPUT>
          Output file without extension [default: t-rec]
  -f, --fps <FPS>
          Capture framerate, 4-15 fps. Higher = smoother but larger files [default: 4]
      --profile <PROFILE>
          Use a named profile from the config file
      --init-config
          Create a starter config file at `~/.config/t-rec/config.toml` (linux) or `~/Library/Application Support/t-rec/config.toml` (macOS)
      --list-profiles
          List available profiles from the config file
  -h, --help
          Print help
  -V, --version
          Print version

Configuration File

You can save your preferred settings in a config file to avoid typing them every time.

Quick start:

# Create a starter config file
t-rec --init-config

# List available profiles
t-rec --list-profiles

# Use a profile
t-rec --profile demo

Config file locations (searched in order):

  1. ./t-rec.toml (project-local)
  2. ~/.config/t-rec/config.toml (Linux)
  3. ~/Library/Application Support/t-rec/config.toml (macOS)
  4. %APPDATA%\t-rec\config.toml (Windows)

Example config file:

# Default settings applied to all recordings
[default]
wallpaper = "ventura"
wallpaper-padding = 80

# Named profiles for different use cases
[profiles.demo]
wallpaper = "ventura"
wallpaper-padding = 120
start-pause = "10s"
idle-pause = "5s"

[profiles.quick]
quiet = true
idle-pause = "1s"

# Custom wallpaper with $HOME expansion
[profiles.custom]
wallpaper = "$HOME/Pictures/my-wallpaper.png"
wallpaper-padding = 80

Using profiles:

# Use default settings from config
t-rec

# Use a specific profile
t-rec --profile demo

# Override a profile setting
t-rec --profile demo --wallpaper-padding 150

# List available profiles
t-rec --list-profiles

Available config options:

| Option | Type | Description | |--------|------|-------------| | verbose | bool | Enable verbose output | | quiet | bool | Suppress the Ctrl+D banner | | video | bool | Also generate mp4 video | | video-only | bool | Only generate mp4, no gif | | decor | string | Border decoration (shadow, none) | | wallpaper | string | Wallpaper preset or file path (supports $HOME) | | wallpaper-padding | number | Padding around recording (1-500) | | bg | string | Background color (white, black, transparent) | | natural | bool | Disable idle detection

Related Skills

View on GitHub
GitHub Stars1.2k
CategoryDevelopment
Updated10d ago
Forks35

Languages

Rust

Security Score

100/100

Audited on Jul 29, 2026

No findings