[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3288":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":46,"readmeContent":47,"aiSummary":48,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":49,"discoverSource":50},3288,"terminalizer","faressoft\u002Fterminalizer","faressoft","🦄 Record your terminal and generate animated gif images or share a web player","https:\u002F\u002Fterminalizer.com",null,"JavaScript",16132,521,121,95,0,3,20,2,43.15,"MIT License",false,"master",true,[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"animated","bash","bash-profile","capture","colors","command-line","font","generate","gif","powershell","pty","record","render","repeat","shell","shot","terminal","theme","tty","zsh","2026-06-12 02:00:48","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.terminalizer.com\">\n    \u003Cimg src=\"\u002Fimg\u002Flogo.png?raw=true\" width=\"200\"\u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n# Terminalizer\n\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fterminalizer.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fterminalizer)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fterminalizer.svg)](https:\u002F\u002Fgithub.com\u002Ffaressoft\u002Fterminalizer\u002Fblob\u002Fmaster\u002FLICENSE)\n[![Gitter](https:\u002F\u002Fbadges.gitter.im\u002Fjoin_chat.svg)](https:\u002F\u002Fgitter.im\u002Fterminalizer\u002FLobby)\n[![Unicorn](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnyancat-approved-ff69b4.svg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=QH2-TGUlwu4)\n[![Tweet](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftwitter-share-76abec.svg)](https:\u002F\u002Fgoo.gl\u002FQJzJu1)\n\n> Record your terminal and generate animated gif images or share a web player link [www.terminalizer.com](https:\u002F\u002Fwww.terminalizer.com)\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Fdemo.gif?raw=true\"\u002F>\u003C\u002Fp>\n\nBuilt to be jusT cOol 👌🦄 !\n\n> If you think so, support me with a `star` and a `follow` 😘\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Ftrending.png?raw=true\"\u002F>\u003C\u002Fp>\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:\u002F\u002Fnodejs.org\u002Fen\u002Fdownload\u002F) first, then install the tool globally using this command:\n\n```bash\nyarn global add terminalizer\n```\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Finstall.gif?raw=true\"\u002F>\u003C\u002Fp>\n\n> 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:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode-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:\u002F\u002Fgifcompressor.com](https:\u002F\u002Fgifcompressor.com).\n\n# Usage\n\n> You can use the `--help` option to get more details about the commands and their options\n\n```bash\nterminalizer \u003Ccommand> [options]\n```\n\n## Init\n\n> Create a global config directory\n\n```bash\nterminalizer init\n```\n\n## Config\n\n> Generate a config file in the current directory\n\n```bash\nterminalizer config\n```\n\n## Record\n\n> Record your terminal and create a recording file\n\n```bash\nterminalizer record \u003CrecordingFile>\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> Play a recording file on your terminal\n\n```bash\nterminalizer play \u003CrecordingFile>\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> Render a recording file as an animated gif image\n\n```bash\nterminalizer render \u003CrecordingFile>\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 > 1) [number] [default: 1]\n```\n\n## Share\n\n> Upload a recording file and get a link for an online player\n\n```bash\nterminalizer share \u003CrecordingFile>\n```\n\n## Generate\n\n> Generate a web player for a recording file\n\n```bash\nterminalizer generate \u003CrecordingFile>\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> 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> 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 `~\u002Fconfig\u002Fterminalizer`. For Windows, it is located under the `AppData`.\n\n## Recording\n\n- `command`: Specify a command to be executed like `\u002Fbin\u002Fbash -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> You can use the value `transparent` too.\n\nThe default colors that are assigned to the terminal colors are:\n\n- background: ![#ffffff](https:\u002F\u002Fplacehold.it\u002F15\u002Fffffff\u002F000000?text=+) `transparent`\n- foreground: ![#afafaf](https:\u002F\u002Fplacehold.it\u002F15\u002Fafafaf\u002F000000?text=+) `#afafaf`\n- cursor: ![#c7c7c7](https:\u002F\u002Fplacehold.it\u002F15\u002Fc7c7c7\u002F000000?text=+) `#c7c7c7`\n- black: ![#232628](https:\u002F\u002Fplacehold.it\u002F15\u002F232628\u002F000000?text=+) `#232628`\n- red: ![#fc4384](https:\u002F\u002Fplacehold.it\u002F15\u002Ffc4384\u002F000000?text=+) `#fc4384`\n- green: ![#b3e33b](https:\u002F\u002Fplacehold.it\u002F15\u002Fb3e33b\u002F000000?text=+) `#b3e33b`\n- yellow: ![#ffa727](https:\u002F\u002Fplacehold.it\u002F15\u002Fffa727\u002F000000?text=+) `#ffa727`\n- blue: ![#75dff2](https:\u002F\u002Fplacehold.it\u002F15\u002F75dff2\u002F000000?text=+) `#75dff2`\n- magenta: ![#ae89fe](https:\u002F\u002Fplacehold.it\u002F15\u002Fae89fe\u002F000000?text=+) `#ae89fe`\n- cyan: ![#708387](https:\u002F\u002Fplacehold.it\u002F15\u002F708387\u002F000000?text=+) `#708387`\n- white: ![#d5d5d0](https:\u002F\u002Fplacehold.it\u002F15\u002Fd5d5d0\u002F000000?text=+) `#d5d5d0`\n- brightBlack: ![#626566](https:\u002F\u002Fplacehold.it\u002F15\u002F626566\u002F000000?text=+) `#626566`\n- brightRed: ![#ff7fac](https:\u002F\u002Fplacehold.it\u002F15\u002Fff7fac\u002F000000?text=+) `#ff7fac`\n- brightGreen: ![#c8ed71](https:\u002F\u002Fplacehold.it\u002F15\u002Fc8ed71\u002F000000?text=+) `#c8ed71`\n- brightYellow: ![#ebdf86](https:\u002F\u002Fplacehold.it\u002F15\u002Febdf86\u002F000000?text=+) `#ebdf86`\n- brightBlue: ![#75dff2](https:\u002F\u002Fplacehold.it\u002F15\u002F75dff2\u002F000000?text=+) `#75dff2`\n- brightMagenta: ![#ae89fe](https:\u002F\u002Fplacehold.it\u002F15\u002Fae89fe\u002F000000?text=+) `#ae89fe`\n- brightCyan: ![#b1c6ca](https:\u002F\u002Fplacehold.it\u002F15\u002Fb1c6ca\u002F000000?text=+) `#b1c6ca`\n- brightWhite: ![#f9f9f4](https:\u002F\u002Fplacehold.it\u002F15\u002Ff9f9f4\u002F000000?text=+) `#f9f9f4`\n\n## Watermark\n\nYou can add a watermark logo to your generated GIF images.\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Fwatermark.gif?raw=true\"\u002F>\u003C\u002Fp>\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\">\u003Cimg src=\"\u002Fimg\u002Fframes\u002Fnull.gif?raw=true\"\u002F>\u003C\u002Fp>\n\n> 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\">\u003Cimg src=\"\u002Fimg\u002Fframes\u002Fwindow.gif?raw=true\"\u002F>\u003C\u002Fp>\n\n```\nframeBox:\n  type: window\n  title: Terminalizer\n  style: []\n```\n\n### Floating Frame\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Fframes\u002Ffloating.gif?raw=true\"\u002F>\u003C\u002Fp>\n\n```\nframeBox:\n  type: floating\n  title: Terminalizer\n  style: []\n```\n\n### Solid Frame\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Fframes\u002Fsolid.gif?raw=true\"\u002F>\u003C\u002Fp>\n\n```\nframeBox:\n  type: solid\n  title: Terminalizer\n  style: []\n```\n\n### Solid Frame Without Title\n\n\u003Cp align=\"center\">\u003Cimg src=\"\u002Fimg\u002Fframes\u002Fsolid_without_title.gif?raw=true\"\u002F>\u003C\u002Fp>\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\">\u003Cimg src=\"\u002Fimg\u002Fframes\u002Fsolid_without_title_without_shadows.gif?raw=true\"\u002F>\u003C\u002Fp>\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> 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> 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> Error: EACCES: permission denied, access '\u002Fusr\u002Flocal\u002Flib'\n\nSolution:\n\n```bash\nsudo mkdir -p \u002Fusr\u002Flocal\u002Flib\u002Fnode_modules && sudo chown -R $(whoami):$(whoami) \u002Fusr\u002Flocal\u002Flib\u002Fnode_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","Terminalizer 是一个用于记录终端操作并生成动画 GIF 图像或分享网页播放器链接的工具。其核心功能包括高度可定制化、跨平台支持（Linux、Windows、MacOS）、自定义窗口框架、字体、颜色和样式等。用户可以调整帧延迟、跳过特定帧以优化输出，甚至在渲染前编辑帧内容。此外，它还提供了丰富的配置选项，如命令捕获设置、工作目录指定、GIF 质量控制等。适用于需要展示终端操作过程的教学材料制作、技术文档编写以及在线教程分享等多种场景。","2026-06-11 02:53:23","top_language"]