PIC (Preview Image in CLI) is a lightweight Rust tool to preview images in your terminal!
With support for various image protocols (Kitty
, Sixel
, iTerm
) it works in several terminals, and can still use Unicode blocks in case your terminal isn't supported.
- Choose your favourite protocols
- Kitty graphics with multiple actions available (
load
/clear
) - Sixel which works in a lot of terminals
- iTerm which displays GIFs incredibly well
- Unicode blocks with truecolor/ansi256 support otherwise
- Kitty graphics with multiple actions available (
- Customization
--x
and--y
options to choose where to display your image--cols
and--rows
options to choose the size of your image (always tries preserving ratio)--upscale
option to preview image at full wanted size if needed--static
and--loop
options to interact with GIFs--protocol
option to choose a protocol--load
--display
and--clear
options to interact with Kitty protocol
Prerequisites
Command line instructions
# Clone the repository
git clone https://github.com/emsquid/pic
# Build and install
cargo install --path pic
# Use freely
pic Images/YourFavouriteImage.png --cols 13 ...
Blocks & Top quality previewing
Wide choice of options
Really nice GIFs in iTerm
And also nice in Blocks
Preview Image in CLI.
Usage: pic [OPTIONS] <PATH>
Arguments:
<PATH> Image to preview
Options:
-x, --x <X> x position (0 is left)
-y, --y <Y> y position (0 is top)
-c, --cols <COLS> Number of cols to fit the preview in
-r, --rows <ROWS> Number of rows to fit the preview in
-u, --upscale Upscale image if needed
-s, --static Only show first frame of GIFs
-l, --loop Loop GIFs infinitely
-p, --protocol <PROTOCOL> Previewing protocol to use [possible values: kitty, sixel, iterm, blocks]
--load <ID> Load image with the given id (kitty only)
--display <ID> Display image with the given id (kitty only)
--clear <ID> Clear image with the given id (0 for all) (kitty only)
-h, --help Print help
-V, --version Print version
Sixel
protocol may require libsixel to be installediTerm
protocol always loop GIFs, except if--static
is specified
Help would be greatly appreciated
- Documentation
- Write a greater README
- Make releases/packages (publish on crates.io)
- Protocols support
- Preview GIFs with Kitty protocol
- Preview GIFs with Unicode blocks
- Work on handling transparency/GIFs with Sixel protocol (GIFs work but don't render well)
- Improve protocol support checking (need to test in various terminal)
- Miscellaneous
- Implement caching somehow
- Show cooler error messages
- Write tests (I guess I need to do that...)