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.
PIC also provides a library for you to use in your own tools!
load
/clear
)--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 protocolPrerequisites
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 ...
Prerequisites
Command line instructions
# Build and install
cargo install pic
# Use freely again
pic Images/YourFavouriteImage.png --cols 13 ...
Prerequisites
Command line instructions
# Add the dependency in your project directory
cargo add pic
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(s) to preview
Options:
-p, --protocol <PROTOCOL> Previewing protocol to use [possible values: kitty, sixel, iterm, blocks]
-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
--spacing <SPACING> Spacing between images if more than one file is provided
-u, --upscale Upscale image if needed
-n, --no-newline Don't print newline after preview
-s, --static Only show first frame of GIFs
-l, --loop Loop GIFs infinitely
--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
use pic
fn main() {
// Choose images to preview
let path1 = std::path::PathBuf::from("Picture/MyFavImage.png");
let mut options = pic::options::Options::new(vec![path1]);
// Set your options
options.set_position(Some(10), None);
options.set_size(Some(50), Some(50));
options.upscale();
// Preview
if let Err(err) = pic::previewer::preview(&mut std::io::stdout(), &mut options) {
eprintln!("{err}");
};
}
Sixel
protocol may require libsixel to be installediTerm
protocol always loop GIFs, except if --static
is specifiedHelp would be greatly appreciated