{"id":51015721,"url":"https://github.com/lusingander/lpx","last_synced_at":"2026-06-21T10:02:15.542Z","repository":{"id":350128811,"uuid":"1191426203","full_name":"lusingander/lpx","owner":"lusingander","description":"Terminal Animated GIF Viewer 📽️","archived":false,"fork":false,"pushed_at":"2026-04-29T01:11:45.000Z","size":6992,"stargazers_count":24,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-29T02:34:09.606Z","etag":null,"topics":["animated-gif","cli","gif","gif-animation","gif-viewer","image-viewer","ratatui","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/lusingander.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-25T08:27:07.000Z","updated_at":"2026-04-29T01:11:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lusingander/lpx","commit_stats":null,"previous_names":["lusingander/lpx"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lusingander/lpx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Flpx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Flpx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Flpx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Flpx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lusingander","download_url":"https://codeload.github.com/lusingander/lpx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Flpx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34605335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-gif","cli","gif","gif-animation","gif-viewer","image-viewer","ratatui","terminal","tui"],"created_at":"2026-06-21T10:02:14.868Z","updated_at":"2026-06-21T10:02:15.521Z","avatar_url":"https://github.com/lusingander.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LPX\n\n[![Crate Status](https://img.shields.io/crates/v/lpx.svg)](https://crates.io/crates/lpx)\n\nTerminal Animated GIF Viewer 📽️\n\n\u003cimg src=\"img/demo.gif\" width=\"600\"\u003e\n\n(Check out the [Screenshots](#screenshots) for more demos of how it works!)\n\n## About\n\nLPX is a tool for displaying GIF animations directly in the terminal.\n\nIt features the following capabilities:\n\n- Image rendering using image display protocols (iTerm2, kitty)\n- Interactive controls such as play, pause, and frame-by-frame stepping\n- Loop playback of a selected range\n- Flexible display modes, including full-screen and inline viewing\n\n## Requirements\n\n\u003e [!WARNING]\n\u003e This tool requires a terminal emulator that supports following image protocols.\n\u003e It will not work in environments without these protocols, and there is no text-based fallback.\n\n### Supported terminal emulators\n\nThe following image protocols are supported:\n\n- [Inline Images Protocol (iTerm2)](https://iterm2.com/documentation-images.html)\n- [Terminal graphics protocol (kitty)](https://sw.kovidgoyal.net/kitty/graphics-protocol/)\n\nConfirmed working terminal emulators are listed below. Other emulators supporting these protocols may also work, though they have not been explicitly tested.\n\n#### Inline Images Protocol (iTerm2)\n\n- [iTerm2](https://iterm2.com)\n- [WezTerm](https://wezfurlong.org/wezterm/)\n- [VSCode integrated terminal](https://code.visualstudio.com/docs/terminal/basics) \\*1 \\*2\n\n\\*1 Requires the [`terminal.integrated.enableImages` setting](https://code.visualstudio.com/docs/terminal/advanced#_image-support) to be enabled.\n\n\\*2 Any terminal emulator using [xterm.js](https://xtermjs.org) (like the VSCode terminal) may work if the [image display feature is enabled](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image).\n\n#### Terminal graphics protocol (kitty)\n\n- [kitty](https://sw.kovidgoyal.net/kitty/)\n- [Ghostty](https://ghostty.org)\n\n### Unsupported environments\n\n- Sixel graphics is not supported.\n- Terminal multiplexers (screen, tmux, Zellij, etc.) are not supported.\n- Windows is not supported.\n\n## Installation\n\n### [Cargo](https://crates.io/crates/lpx)\n\n```\n$ cargo install --locked lpx\n```\n\n### [Homebrew](https://github.com/lusingander/homebrew-tap/blob/master/lpx.rb)\n\n```\n$ brew install lusingander/tap/lpx\n```\n\n### [AUR](https://aur.archlinux.org/packages/lpx)\n\n```\n$ paru -S lpx\n```\n\n### Downloading binary\n\nYou can download pre-compiled binaries from [releases](https://github.com/lusingander/lpx/releases).\n\n## Usage\n\nAfter installation, run the following command:\n\n```\n$ lpx path/to/your/image.gif\n```\n\n### Options\n\n```\nLPX - Terminal Animated GIF Viewer 📽️\n\nUsage: lpx [OPTIONS] \u003cFILE\u003e\n\nArguments:\n  \u003cFILE\u003e  Path to the image file\n\nOptions:\n  -p, --protocol \u003cTYPE\u003e    Select the graphics protocol [default: auto] [possible values: auto, iterm, kitty]\n  -n, --frame-step \u003cN\u003e     Number of frames to skip per step action [default: 10]\n  -w, --max-width \u003cWIDTH\u003e  Limit the maximum width of the UI\n  -i, --inline \u003cHEIGHT\u003e    Enable inline mode with the specified height in rows\n  -h, --help               Print help\n  -V, --version            Print version\n```\n\n### Keybindings\n\n| Key                                   | Description                                      |\n| ------------------------------------- | ------------------------------------------------ |\n| \u003ckbd\u003eq\u003c/kbd\u003e \u003ckbd\u003eEsc\u003c/kbd\u003e \u003ckbd\u003eCtrl-C\u003c/kbd\u003e | Quit application                                 |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e                      | Play / Pause                                     |\n| \u003ckbd\u003eh\u003c/kbd\u003e / \u003ckbd\u003el\u003c/kbd\u003e or \u003ckbd\u003e←\u003c/kbd\u003e / \u003ckbd\u003e→\u003c/kbd\u003e | Move to previous / next frame                    |\n| \u003ckbd\u003eH\u003c/kbd\u003e / \u003ckbd\u003eL\u003c/kbd\u003e or \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003e←\u003c/kbd\u003e / \u003ckbd\u003e→\u003c/kbd\u003e | Move backward / forward by frame step count      |\n| \u003ckbd\u003e0\u003c/kbd\u003e - \u003ckbd\u003e9\u003c/kbd\u003e           | Jump to percentage (0% to 90%)                   |\n| \u003ckbd\u003ej\u003c/kbd\u003e / \u003ckbd\u003ek\u003c/kbd\u003e or \u003ckbd\u003e↓\u003c/kbd\u003e / \u003ckbd\u003e↑\u003c/kbd\u003e | Decrease / Increase playback speed               |\n| \u003ckbd\u003e[\u003c/kbd\u003e / \u003ckbd\u003e]\u003c/kbd\u003e           | Set loop start / end point                       |\n| \u003ckbd\u003eC\u003c/kbd\u003e                          | Clear loop range                                 |\n| \u003ckbd\u003ed\u003c/kbd\u003e                          | Toggle detailed information display              |\n\n## Screenshots\n\n### Show detailed information\n\n\u003cimg src=\"img/detail.gif\" width=\"500\"\u003e\n\n### Loop a specific range\n\n\u003cimg src=\"img/loop.gif\" width=\"500\"\u003e\n\n### Change playback speed\n\n\u003cimg src=\"img/speed.gif\" width=\"500\"\u003e\n\n### Inline mode\n\n\u003cimg src=\"img/inline.gif\" width=\"500\"\u003e\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Flpx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flusingander%2Flpx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Flpx/lists"}