Record your terminal and generate animated gif images
Built to be jusT cOol ππ¦ !
If you think so, support me with a
starand afollowπ
Built while listening to Nyan Cat π
- Features
- What's Next
- Installation
- Getting Started
- Compression
- Usage
- Configurations
- FAQ
- Issues
- License
- Highly customizable.
- Cross platform (Linux, Windows, MacOS).
- Custom
window frames. - Custom
font. - Custom
colors. - Custom
styleswithCSS. - Watermark.
- Edit frames and adjust delays before rendering.
- Skipping frames by a step value to reduce the number of rendered frames.
- Render images with texts on them instead of capturing your screen for better quality.
- The ability to configure:
- The command to capture (bash, powershell.exe, yourOwnCommand, etc)
- The current working directory.
- Explicit values for the number of cols and rows.
- GIF quality and repeating.
- Frames delays.
- The max idle time between frames.
- Cursor style.
- Font.
- Font size.
- Line height.
- Letter spacing.
- Theme.
- Terminalizer on Cloud terminalizer.com.
- Global configurations at the home directory.
- The
sharecommand to upload a recording file and get a link for an online player. - The
Generatecommand to generate a web player for a recording file. - Support
apt-get,yum,brewinstallation.
You need to install Node.js first, then install the tool globally using this command:
npm install -g terminalizerStill facing an issue? Check the Issues section or open a new issue.
The installation should be very smooth with Node.js v10 or lower. For newer versions, if the installation is failed, you may need to install the development tools to build the C++ add-ons. Check node-gyp.
Start recording your terminal using the record command.
terminalizer record demoA file called demo.yml will be created in the current directory. You can open it using any editor to edit the configurations and the recorded frames. You can replay your recording using the play command.
terminalizer play demoNow let's render our recording as an animated gif.
terminalizer render demoGIF compression is not implemented yet. For now we recommend https://gifcompressor.com.
You can use the
--helpoption to get more details about the commands and their options
terminalizer <command> [options]Generate a config file in the current directory
terminalizer configRecord your terminal and create a recording file
terminalizer record <recordingFile>Options
-c, --config Overwrite the default configurations [string]
-d, --command The command to be executed [string] [default: null]
Examples
terminalizer record foo Start recording and create a recording file called foo.yml
terminalizer record foo --config config.yml Start recording with your own configurations
Play a recording file on your terminal
terminalizer play <recordingFile>Options
-r, --real-timing Use the actual delays between frames as recorded [boolean] [default: false]
-s, --speed-factor Speed factor, multiply the frames delays by this factor [number] [default: 1]
Render a recording file as an animated gif image
terminalizer render <recordingFile>Options
-o, --output A name for the output file [string]
-q, --quality The quality of the rendered image (1 - 100) [number]
-s, --step To reduce the number of rendered frames (step > 1) [number] [default: 1]
Upload a recording file and get a link for an online player
terminalizer share <recordingFile>Generate a web player for a recording file
terminalizer generate <recordingFile>The default config.yml file is stored in the root directory of the project. Execute the below command to copy it to your current directory.
Use any editor to edit the copied
config.yml, then use the-coption to override the default one.
terminalizer configcommand: Specify a command to be executed like/bin/bash -l,ls, or any other command. The default isbashforLinuxorpowershell.exeforWindows.cwd: Specify the current working directory path. The default is the current working directory path.env: Export additional ENV variables, to be read by your scripts when starting the recording.cols: Explicitly set the number of columns or useautoto take the current number of columns of your shell.rows: Explicitly set the number of rows or useautoto take the current number of rows of your shell.
frameDelay: The delay between frames in ms. If the value isautouse the actual recording delays.maxIdleTime: Maximum delay between frames in ms. Ignored if theframeDelayisn't set toauto. Set toautoto prevent limiting the max idle time.
quality: The quality of the generated GIF image (1 - 100).repeat: Amount of times to repeat GIF:- If value is
-1, play once. - If value is
0, loop indefinitely. - If value is a positive number, loop
ntimes.
- If value is
cursorStyle: Cursor style can be one ofblock,underline, orbar.fontFamily: You can use any font that is installed on your machine likeMonacoorLucida Console(CSS-like list).fontSize: The size of the font in pixels.lineHeight: The height of lines in pixels.letterSpacing: The spacing between letters in pixels.
You can set the colors of your terminal using one of the CSS formats:
- Hex:
#FFFFFF. - RGB:
rgb(255, 255, 255). - HSL:
hsl(0, 0%, 100%). - Name:
white,red,blue.
You can use the value
transparenttoo.
The default colors that are assigned to the terminal colors are:
- background:
transparent - foreground:
#afafaf - cursor:
#c7c7c7 - black:
#232628 - red:
#fc4384 - green:
#b3e33b - yellow:
#ffa727 - blue:
#75dff2 - magenta:
#ae89fe - cyan:
#708387 - white:
#d5d5d0 - brightBlack:
#626566 - brightRed:
#ff7fac - brightGreen:
#c8ed71 - brightYellow:
#ebdf86 - brightBlue:
#75dff2 - brightMagenta:
#ae89fe - brightCyan:
#b1c6ca - brightWhite:
#f9f9f4
You can add a watermark logo to your generated GIF images.
watermark:
imagePath: AbsolutePathOrURL
style:
position: absolute
right: 15px
bottom: 15px
width: 100px
opacity: 0.9
watermark.imagePath: An absolute path for the image on your machine or a URL.watermark.style: Apply CSS styles (camelCase) to the watermark image, like resizing it.
Terminalizer comes with predefined frames that you can use to make your GIF images look cool.
frameBox.type: Can benull,window,floating, orsolid.frameBox.title: To display a title for the frame ornull.frameBox.style: To apply custom CSS styles or to override the current ones.
No frame, just your recording.
Don't forget to add a
backgroundColorunderstyle.
frameBox:
type: null
title: null
style:
backgroundColor: black
frameBox:
type: window
title: Terminalizer
style: []
frameBox:
type: floating
title: Terminalizer
style: []
frameBox:
type: solid
title: Terminalizer
style: []
frameBox:
type: solid
title: null
style: []
You can disable the default shadows and margins.
frameBox:
type: solid
title: null
style:
boxShadow: none
margin: 0px
The default command that gets recorded for Linux is bash -l. You need to change the default command to zsh.
- Generate a config file in the current directory
terminalizer config- Open the generated config file in your preferred editor.
- Change the
commandtozsh:
command: zsh
- You may need to change the font, check the font that is used in your terminal:
fontFamily: "Meslo for Powerline, Meslo LG M for Powerline"
- Use the
-coption to override the config file:
terminalizer record demo -c config.ymlerror while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
Solution:
sudo yum install libXScrnSavererror while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory
Solution:
sudo apt-get install libgconf-2-4This project is under the MIT license.