๐Ÿ“ฆ feliblo / gifferno

Blazingly fast GIFs in your terminal. ๐Ÿฆ€๐Ÿ”ฅ

โ˜… 2 stars โ‘‚ 0 forks ๐Ÿ‘ 2 watching
๐Ÿ“ฅ Clone https://github.com/feliblo/gifferno.git
HTTPS git clone https://github.com/feliblo/gifferno.git
SSH git clone git@github.com:feliblo/gifferno.git
CLI gh repo clone feliblo/gifferno
Felix Blom Felix Blom ๐Ÿ˜Ž [vibe] Vibecode the README.md d5ae7bd 5 months ago ๐Ÿ“ History
๐Ÿ“‚ main View all commits โ†’
๐Ÿ“ src
๐Ÿ“„ .gitignore
๐Ÿ“„ Cargo.lock
๐Ÿ“„ Cargo.toml
๐Ÿ“„ README.md
๐Ÿ“„ README.md

๐Ÿ”ฅ gifferno

Blazingly fast GIFs in your terminal. ๐Ÿฆ€๐Ÿ”ฅ

Transform any GIF into beautiful art that plays directly in your terminal. Built with Rust for maximum performance and terminal aesthetics.

โœจ Features

  • ๐ŸŽจ Customizable characters - Use any character to render your GIFs
  • ๐Ÿ’พ Save & manage - Store your favorite GIFs locally with custom names
  • ๐Ÿ” Interactive picker - Browse and select
  • ๐Ÿš€ Blazingly fast - Written in Rust for optimal performance
  • ๐Ÿ“ฑ Cross-platform - Works on macOS, Linux, and Windows

๐Ÿš€ Installation

From Source (Recommended)

In alpha still, releases with easier build strategies will come.

git clone https://github.com/username/gifferno.git
cd gifferno
cargo build --release
cargo install --path .

Using Cargo

cargo install gifferno

๐Ÿ“– Usage

๐Ÿ› ๏ธ Commands Reference

CommandDescriptionArguments
runPlay a GIF directly from file path--file-path, --print-character
saveSave a GIF to local database--file-path, --name
getRetrieve and play a saved GIF--name, --print-character
pickInteractive GIF selectorNone
deleteRemove a saved GIF--name
clearClear entire GIF databaseNone

Argument Details

  • --file-path / -f: Path to the GIF file
  • --name / -n: Custom name for saving/retrieving GIFs
  • --print-character / -p: Character used for rendering (default: #)

Running

# Run a GIF directly from file
gifferno run --file-path ./my-gif.gif

# Use custom characters for rendering
gifferno run --file-path ./nyan-cat.gif --print-character "?"

Managing Your GIF Collection

# Save a GIF with a memorable name
gifferno save --file-path ./epic-fail.gif --name "fail"

# Retrieve and play a saved GIF
gifferno get --name "fail"

# Play with custom characters
gifferno get --name "fail" --print-character ""

# Browse your collection interactively
gifferno pick

# Remove a specific GIF
gifferno delete --name "fail"

# Clear your entire collection (be careful!)
gifferno clear

Example Commands

# Basic usage
gifferno run -f ./dance.gif

# Custom character rendering
gifferno run -f ./fire.gif -p "^"

# Save for later
gifferno save -f ./cat.gif -n "grumpy-cat"

# Quick access to saved GIFs
gifferno get -n "grumpy-cat" -p "~"

# Interactive mode
gifferno pick

๐Ÿ› Issues & Bug Reports

Found a bug? We'd love to hear about it! Please:

  • Check existing issues first
  • Provide detailed reproduction steps
  • Include your system information
  • Add relevant error messages or logs
Create an Issue

๐Ÿค Contributing

Getting Started

  • Fork the repository
  • Create a feature branch
git checkout -b feature/amazing-feature
  • Make your changes
  • Write tests for your code
  • Ensure tests pass
cargo test
  • Format your code
cargo fmt
  • Run clippy
cargo clippy
  • Commit your changes
  • Use gitmoji or howmoji conventional commit messages.
# Choose one
   gitmoji -c 
   howmoji -c
  • Push to your branch
git push origin feature/amazing-feature
  • Open a Pull Request
  • Please make sure your pull request is rebased on the latest version of the application.

Development Workflow

  • Create issues for bugs and feature requests
  • Use gitmoji or howmoji conventional commit messages.
  • Ensure all tests pass before submitting PR
  • Update documentation for new features
  • Follow Rust best practices and idioms

Code Standards

  • Run cargo fmt before committing
  • Ensure cargo clippy passes without warnings
  • Add tests for new functionality
  • Update README if adding new commands or features

๐Ÿงช Testing

# Run all tests
cargo test

# Run tests with output
cargo test -- --nocapture

# Run specific test
cargo test test_name

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Built with Rust ๐Ÿฆ€
  • CLI powered by clap

Made with โค๏ธ and lots of ๐Ÿ”ฅ by the gifferno community

Star โญ this repo if you find it useful!