{"id":13397958,"url":"https://github.com/faressoft/terminalizer","last_synced_at":"2025-05-12T13:17:19.017Z","repository":{"id":37611949,"uuid":"141910081","full_name":"faressoft/terminalizer","owner":"faressoft","description":"🦄 Record your terminal and generate animated gif images or share a web player","archived":false,"fork":false,"pushed_at":"2024-08-29T00:40:13.000Z","size":4118,"stargazers_count":15630,"open_issues_count":108,"forks_count":509,"subscribers_count":122,"default_branch":"master","last_synced_at":"2025-05-12T13:16:48.969Z","etag":null,"topics":["animated","bash","bash-profile","capture","colors","command-line","font","generate","gif","powershell","pty","record","render","repeat","shell","shot","terminal","theme","tty","zsh"],"latest_commit_sha":null,"homepage":"https://terminalizer.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faressoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-22T16:00:15.000Z","updated_at":"2025-05-09T21:24:04.000Z","dependencies_parsed_at":"2023-02-02T19:03:16.720Z","dependency_job_id":"42caf34c-affb-4a26-bb5c-872b1a866d75","html_url":"https://github.com/faressoft/terminalizer","commit_stats":{"total_commits":171,"total_committers":6,"mean_commits":28.5,"dds":"0.14035087719298245","last_synced_commit":"dc65dbebf124419b200394e6f1fffea0d6090a9c"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faressoft%2Fterminalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faressoft%2Fterminalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faressoft%2Fterminalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faressoft%2Fterminalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faressoft","download_url":"https://codeload.github.com/faressoft/terminalizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745196,"owners_count":21957319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animated","bash","bash-profile","capture","colors","command-line","font","generate","gif","powershell","pty","record","render","repeat","shell","shot","terminal","theme","tty","zsh"],"created_at":"2024-07-30T18:01:57.634Z","updated_at":"2025-05-12T13:17:18.968Z","avatar_url":"https://github.com/faressoft.png","language":"JavaScript","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.terminalizer.com\"\u003e\n    \u003cimg src=\"/img/logo.png?raw=true\" width=\"200\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Terminalizer\n\n[![npm](https://img.shields.io/npm/v/terminalizer.svg)](https://www.npmjs.com/package/terminalizer)\n[![npm](https://img.shields.io/npm/l/terminalizer.svg)](https://github.com/faressoft/terminalizer/blob/master/LICENSE)\n[![Gitter](https://badges.gitter.im/join_chat.svg)](https://gitter.im/terminalizer/Lobby)\n[![Unicorn](https://img.shields.io/badge/nyancat-approved-ff69b4.svg)](https://www.youtube.com/watch?v=QH2-TGUlwu4)\n[![Tweet](https://img.shields.io/badge/twitter-share-76abec.svg)](https://goo.gl/QJzJu1)\n\n\u003e Record your terminal and generate animated gif images or share a web player link [www.terminalizer.com](https://www.terminalizer.com)\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/demo.gif?raw=true\"/\u003e\u003c/p\u003e\n\nBuilt to be jusT cOol 👌🦄 !\n\n\u003e If you think so, support me with a `star` and a `follow` 😘\n\n---\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/trending.png?raw=true\"/\u003e\u003c/p\u003e\n\n---\n\n# Table of Contents\n\n- [Terminalizer](#terminalizer)\n- [Table of Contents](#table-of-contents)\n- [Features](#features)\n- [What's Next](#whats-next)\n- [Installation](#installation)\n- [Getting Started](#getting-started)\n  - [Compression](#compression)\n- [Usage](#usage)\n  - [Init](#init)\n  - [Config](#config)\n  - [Record](#record)\n  - [Play](#play)\n  - [Render](#render)\n  - [Share](#share)\n  - [Generate](#generate)\n- [Configurations](#configurations)\n  - [Recording](#recording)\n  - [Delays](#delays)\n  - [GIF](#gif)\n  - [Terminal](#terminal)\n  - [Theme](#theme)\n  - [Watermark](#watermark)\n  - [Frame Box](#frame-box)\n    - [Null Frame](#null-frame)\n    - [Window Frame](#window-frame)\n    - [Floating Frame](#floating-frame)\n    - [Solid Frame](#solid-frame)\n    - [Solid Frame Without Title](#solid-frame-without-title)\n    - [Styling Hint](#styling-hint)\n- [FAQ](#faq)\n  - [How to support ZSH](#how-to-support-zsh)\n- [Issues](#issues)\n- [License](#license)\n\n# Features\n\n- Highly customizable.\n- Cross platform (Linux, Windows, MacOS).\n- Custom `window frames`.\n- Custom `font`.\n- Custom `colors`.\n- Custom `styles` with `CSS`.\n- Watermark.\n- Edit frames and adjust delays before rendering.\n- Skipping frames by a step value to reduce the number of rendered frames.\n- Render images with texts on them instead of capturing your screen for better quality.\n- The ability to configure:\n  - The command to capture (bash, powershell.exe, yourOwnCommand, etc)\n  - The current working directory.\n  - Explicit values for the number of cols and rows.\n  - GIF quality and repeating.\n  - Frames delays.\n  - The max idle time between frames.\n  - Cursor style.\n  - Font.\n  - Font size.\n  - Line height.\n  - Letter spacing.\n  - Theme.\n\n# What's Next\n\n- The `Generate` command to generate a web player for a recording file.\n- Support `apt-get`, `yum`, `brew` installation.\n\n# Installation\n\nYou need to install [Node.js](https://nodejs.org/en/download/) first, then install the tool globally using this command:\n\n```bash\nyarn global add terminalizer\n```\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/install.gif?raw=true\"/\u003e\u003c/p\u003e\n\n\u003e Still facing an issue? Check the [Issues](#issues) section or open a new issue.\n\nThe installation should be very smooth with Node.js v4-v16. 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](https://github.com/nodejs/node-gyp#installation).\n\n# Getting Started\n\nStart recording your terminal using the `record` command.\n\n```bash\nterminalizer record demo\n```\n\nA 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.\n\n```bash\nterminalizer play demo\n```\n\nNow let's render our recording as an animated gif.\n\n```bash\nterminalizer render demo\n```\n\n## Compression\n\nGIF compression is not implemented yet. For now we recommend [https://gifcompressor.com](https://gifcompressor.com).\n\n# Usage\n\n\u003e You can use the `--help` option to get more details about the commands and their options\n\n```bash\nterminalizer \u003ccommand\u003e [options]\n```\n\n## Init\n\n\u003e Create a global config directory\n\n```bash\nterminalizer init\n```\n\n## Config\n\n\u003e Generate a config file in the current directory\n\n```bash\nterminalizer config\n```\n\n## Record\n\n\u003e Record your terminal and create a recording file\n\n```bash\nterminalizer record \u003crecordingFile\u003e\n```\n\nOptions\n\n```\n-c, --config        Overwrite the default configurations                                  [string]\n-d, --command       The command to be executed                            [string] [default: null]\n-k, --skip-sharing  Skip sharing and showing the sharing prompt message [boolean] [default: false]\n```\n\nExamples\n\n```\nterminalizer record foo                      Start recording and create a recording file called foo.yml\nterminalizer record foo --config config.yml  Start recording with your own configurations\n```\n\n## Play\n\n\u003e Play a recording file on your terminal\n\n```bash\nterminalizer play \u003crecordingFile\u003e\n```\n\nOptions\n\n```\n-r, --real-timing   Use the actual delays between frames as recorded        [boolean] [default: false]\n-s, --speed-factor  Speed factor, multiply the frames delays by this factor [number] [default: 1]\n```\n\n## Render\n\n\u003e Render a recording file as an animated gif image\n\n```bash\nterminalizer render \u003crecordingFile\u003e\n```\n\nOptions\n\n```\n-o, --output   A name for the output file                                      [string]\n-q, --quality  The quality of the rendered image (1 - 100)                     [number]\n-s, --step     To reduce the number of rendered frames (step \u003e 1) [number] [default: 1]\n```\n\n## Share\n\n\u003e Upload a recording file and get a link for an online player\n\n```bash\nterminalizer share \u003crecordingFile\u003e\n```\n\n## Generate\n\n\u003e Generate a web player for a recording file\n\n```bash\nterminalizer generate \u003crecordingFile\u003e\n```\n\n# Configurations\n\nThe default `config.yml` file is stored under the root directory of the project. Execute the below command to copy it to your current directory.\n\n\u003e Use any editor to edit the copied `config.yml`, then use the `-c` option to override the default one.\n\n```bash\nterminalizer config\n```\n\n\u003e RECOMMENDED, use the `init` command to create a global config file to be used instead of the default one.\n\n```bash\nterminalizer init\n```\n\nFor Linux and MacOS, the created directory is located under the home directory `~/config/terminalizer`. For Windows, it is located under the `AppData`.\n\n## Recording\n\n- `command`: Specify a command to be executed like `/bin/bash -l`, `ls`, or any other command. The default is `bash` for `Linux` or `powershell.exe` for `Windows`.\n- `cwd`: Specify the current working directory path. The default is the current working directory path.\n- `env`: Export additional ENV variables, to be read by your scripts when starting the recording.\n- `cols`: Explicitly set the number of columns or use `auto` to take the current number of columns of your shell.\n- `rows`: Explicitly set the number of rows or use `auto` to take the current number of rows of your shell.\n\n## Delays\n\n- `frameDelay`: The delay between frames in ms. If the value is `auto` use the actual recording delays.\n- `maxIdleTime`: Maximum delay between frames in ms. Ignored if the `frameDelay` isn't set to `auto`. Set to `auto` to prevent limiting the max idle time.\n\n## GIF\n\n- `quality`: The quality of the generated GIF image (1 - 100).\n- `repeat`: Amount of times to repeat GIF:\n  - If value is `-1`, play once.\n  - If value is `0`, loop indefinitely.\n  - If value is a positive number, loop `n` times.\n\n## Terminal\n\n- `cursorStyle`: Cursor style can be one of `block`, `underline`, or `bar`.\n- `fontFamily`: You can use any font that is installed on your machine like `Monaco` or `Lucida Console` (CSS-like list).\n- `fontSize`: The size of the font in pixels.\n- `lineHeight`: The height of lines in pixels.\n- `letterSpacing`: The spacing between letters in pixels.\n\n## Theme\n\nYou can set the colors of your terminal using one of the CSS formats:\n\n- Hex: `#FFFFFF`.\n- RGB: `rgb(255, 255, 255)`.\n- HSL: `hsl(0, 0%, 100%)`.\n- Name: `white`, `red`, `blue`.\n\n\u003e You can use the value `transparent` too.\n\nThe default colors that are assigned to the terminal colors are:\n\n- background: ![#ffffff](https://placehold.it/15/ffffff/000000?text=+) `transparent`\n- foreground: ![#afafaf](https://placehold.it/15/afafaf/000000?text=+) `#afafaf`\n- cursor: ![#c7c7c7](https://placehold.it/15/c7c7c7/000000?text=+) `#c7c7c7`\n- black: ![#232628](https://placehold.it/15/232628/000000?text=+) `#232628`\n- red: ![#fc4384](https://placehold.it/15/fc4384/000000?text=+) `#fc4384`\n- green: ![#b3e33b](https://placehold.it/15/b3e33b/000000?text=+) `#b3e33b`\n- yellow: ![#ffa727](https://placehold.it/15/ffa727/000000?text=+) `#ffa727`\n- blue: ![#75dff2](https://placehold.it/15/75dff2/000000?text=+) `#75dff2`\n- magenta: ![#ae89fe](https://placehold.it/15/ae89fe/000000?text=+) `#ae89fe`\n- cyan: ![#708387](https://placehold.it/15/708387/000000?text=+) `#708387`\n- white: ![#d5d5d0](https://placehold.it/15/d5d5d0/000000?text=+) `#d5d5d0`\n- brightBlack: ![#626566](https://placehold.it/15/626566/000000?text=+) `#626566`\n- brightRed: ![#ff7fac](https://placehold.it/15/ff7fac/000000?text=+) `#ff7fac`\n- brightGreen: ![#c8ed71](https://placehold.it/15/c8ed71/000000?text=+) `#c8ed71`\n- brightYellow: ![#ebdf86](https://placehold.it/15/ebdf86/000000?text=+) `#ebdf86`\n- brightBlue: ![#75dff2](https://placehold.it/15/75dff2/000000?text=+) `#75dff2`\n- brightMagenta: ![#ae89fe](https://placehold.it/15/ae89fe/000000?text=+) `#ae89fe`\n- brightCyan: ![#b1c6ca](https://placehold.it/15/b1c6ca/000000?text=+) `#b1c6ca`\n- brightWhite: ![#f9f9f4](https://placehold.it/15/f9f9f4/000000?text=+) `#f9f9f4`\n\n## Watermark\n\nYou can add a watermark logo to your generated GIF images.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/watermark.gif?raw=true\"/\u003e\u003c/p\u003e\n\n```\nwatermark:\n  imagePath: AbsolutePathOrURL\n  style:\n    position: absolute\n    right: 15px\n    bottom: 15px\n    width: 100px\n    opacity: 0.9\n```\n\n- `watermark.imagePath`: An absolute path for the image on your machine or a URL.\n- `watermark.style`: Apply CSS styles (camelCase) to the watermark image, like resizing it.\n\n## Frame Box\n\nTerminalizer comes with predefined frames that you can use to make your GIF images look cool.\n\n- `frameBox.type`: Can be `null`, `window`, `floating`, or `solid`.\n- `frameBox.title`: To display a title for the frame or `null`.\n- `frameBox.style`: To apply custom CSS styles or to override the current ones.\n\n### Null Frame\n\nNo frame, just your recording.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/frames/null.gif?raw=true\"/\u003e\u003c/p\u003e\n\n\u003e Don't forget to add a `backgroundColor` under `style`.\n\n```\nframeBox:\n  type: null\n  title: null\n  style:\n    backgroundColor: black\n```\n\n### Window Frame\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/frames/window.gif?raw=true\"/\u003e\u003c/p\u003e\n\n```\nframeBox:\n  type: window\n  title: Terminalizer\n  style: []\n```\n\n### Floating Frame\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/frames/floating.gif?raw=true\"/\u003e\u003c/p\u003e\n\n```\nframeBox:\n  type: floating\n  title: Terminalizer\n  style: []\n```\n\n### Solid Frame\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/frames/solid.gif?raw=true\"/\u003e\u003c/p\u003e\n\n```\nframeBox:\n  type: solid\n  title: Terminalizer\n  style: []\n```\n\n### Solid Frame Without Title\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/frames/solid_without_title.gif?raw=true\"/\u003e\u003c/p\u003e\n\n```\nframeBox:\n  type: solid\n  title: null\n  style: []\n```\n\n### Styling Hint\n\nYou can disable the default shadows and margins.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/img/frames/solid_without_title_without_shadows.gif?raw=true\"/\u003e\u003c/p\u003e\n\n```\nframeBox:\n  type: solid\n  title: null\n  style:\n    boxShadow: none\n    margin: 0px\n```\n\n# FAQ\n\n### How to support ZSH\n\nThe default command that gets recorded for Linux is `bash -l`. You need to change the default command to `zsh`.\n\n- Generate a config file in the current directory\n\n```bash\nterminalizer config\n```\n\n- Open the generated config file in your preferred editor.\n- Change the `command` to `zsh`:\n\n```\ncommand: zsh\n```\n\n- You may need to change the font, check the font that is used in your terminal:\n\n```\nfontFamily: \"Meslo for Powerline, Meslo LG M for Powerline\"\n```\n\n- Use the `-c` option to override the config file:\n\n```bash\nterminalizer record demo -c config.yml\n```\n\n# Issues\n\n\u003e error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory\n\nSolution:\n\n```bash\nsudo yum install libXScrnSaver\n```\n\n\u003e error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory\n\nSolution:\n\n```bash\nsudo apt-get install libgconf-2-4\n```\n\n\u003e Error: EACCES: permission denied, access '/usr/local/lib'\n\nSolution:\n\n```bash\nsudo mkdir -p /usr/local/lib/node_modules \u0026\u0026 sudo chown -R $(whoami):$(whoami) /usr/local/lib/node_modules\n\n# then use the install command in the \"Installation\" section above\nyarn global add terminalizer\n```\n\n# License\n\nThis project is under the MIT license.\n","funding_links":[],"categories":["JavaScript","HarmonyOS","Uncategorized","Creating GIFs","Screencast","终端","bash","Tools","zsh","Command-line \u0026 Terminal Utilities","General Tools","截图","GIF creation","\u003ca name=\"screen-recorder\"\u003e\u003c/a\u003eScreen recorder","工具","NodeJS","编程"],"sub_categories":["Windows Manager","Uncategorized","网络服务_其他","Node","React Components","Multimedia","调试","Gists","命令行工具"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaressoft%2Fterminalizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaressoft%2Fterminalizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaressoft%2Fterminalizer/lists"}