Blazingly fast terminal recorder that generates animated gif images for the web written in rust.
- Screenshotting your terminal with 4 frames per second (every 250ms)
- Generates high quality small sized animated gif images
- Build-In idle frames detection and optimization (for super fluid presentations)
- Applies (can be disabled) border decor effects like drop shadow
- Runs on MacOS and Linux
- 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
- Hidden feature: Record every window you want
- Written in Rust 🦀
brew install t-rec
NOTE t-rec
depends on imagemagick
.
brew install imagemagick
cargo install -f t-rec
NOTE -f
just makes sure the latest version is installed
sudo apt-get install libx11-dev imagemagick
cargo install -f t-rec
tested on those distros |
---|
ubuntu 20.10 on GNOME |
ubuntu 20.10 on i3wm |
mint 20 on cinnamon |
t-rec
or with specifying a different program to launch
t-rec /bin/sh
t-rec --help
t-rec 0.4.0
Sven Assmann <sven.assmann.it@gmail.com>
Blazingly fast terminal recorder that generates animated gif images for the web written in rust.
USAGE:
t-rec [FLAGS] [OPTIONS] [shell or program to launch]
FLAGS:
-h, --help Prints help information
-l, --ls-win If you want to see a list of windows available for recording by their id, you can set env var
'WINDOWID' to record this specific window only.
-n, --natural If you want a very natural typing experience and disable the idle detection and sampling
optimization.
-V, --version Prints version information
-v, --verbose Enable verbose insights for the curious.
OPTIONS:
-b, --bg <bg> Background color when decors are used [default: white] [possible values: white, black,
transparent]
-d, --decor <decor> Decorates the animation with certain, mostly border effects. [default: shadow] [possible
values: shadow, none]
ARGS:
<shell or program to launch> If you want to start a different program than $SHELL you can pass it here. For
example '/bin/sh'
If you are not happy with the idle detection and optimization, you can disable it with the -n
or --natural
parameter.
By doing so, you would get the very natural timeline of typing and recording as you do it.
In this case there will be no optimizations performed.
In order to disable the drop shadow border decor you have to pass -p none
as an argument. If your only want to change
the color of the background you can use -b black
for example to have a black background.
Hidden Gems
You can record not only the terminal but also every other window. There 2 ways to do so:
- abuse the env var
TERM_PROGRAM
like this:
- for example lets record a window 'Google Chrome'
- make sure chrome is running and visible on screen
TERM_PROGRAM="google chrome" t-rec
Frame cache dir: "/var/folders/m8/084p1v0x4770rpwpkrgl5b6h0000gn/T/trec-74728.rUxBx3ohGiQ2"
Recording window: "Google Chrome 2"
Press Ctrl+D to end recording
- use the env var
WINDOWID
like this:
- for example let's record a
VSCode
window - figure out the window id program, and make it
- make sure the window is visible on screen
- set the variable and run
t-rec
t-rec --ls-win | grep -i code
Code | 27600
# set the WINDOWID variable and run t-rec
WINDOWID=27600 t-rec
Frame cache dir: "/var/folders/m8/084p1v0x4770rpwpkrgl5b6h0000gn/T/trec-77862.BMYiHNRWqv9Y"
Press Ctrl+D to end recording
To contribute to t-rec you can either checkout existing issues labeled with good first issue
or open a new issue and describe your problem.
Also every PR is welcome. Support for Linux and Windows needs to be done.
- t-rec on producthunt.com
- t-rec on hacker news
- t-rec on reddit
- GNU GPL v3 license
- Copyright 2020 - 2021 © Sven Assmann.