There are plenty of GUI applications available to view images in Linux. But I haven't used any CLI applications yet which displays pictures in the Terminal itself. To my luck, I found 3 CLI image viewers to display images in Terminal itself. These applications could be useful for those who wants to use CLI alternatives for GUI apps and who live in Terminal mostly.
1. Display Images In the Terminal Using FIM
FIM stands for Fbi IMproved. For those who don't know, Fbi is a linux framebuffer imageviewer. It uses the system’s framebuffer to display images directly from the command line. By default, it displays bmp, gif, jpeg, PhotoCD, png, ppm, tiff, and xwd from the Terminal itself. For other formats, it will try to use ImageMagick's convert. The FIM utility draw my attention, because it is very lightweight compared to most GUI picture viewer applications.
FIM is based on Fbi and it is a highly customizable and scriptable image viewer targeted at the users who are comfortable with software like the Vim text editor or the Mutt mail user agent. It displays the images in full screen and the images can be controlled (such as resize, flip, zoom) using keyboard shortcuts. Unlike fbi, the FIM utility is universal. It can open many file formats and it can display pictures in the following video modes:
- Graphically, with the Linux framebuffer device.
- Graphically, under X/Xorg, using the SDL library.
- Graphically, under X/Xorg, using the Imlib2 library.
- Rendered as ASCII Art in any textual console, using the AAlib library.
FIM is completely free and open source.
The FIM image viewer is available in the default repositories of DEB-based systems such as Ubuntu, Linux Mint. So, you can install fbi using command:
$ sudo apt-get install fim
If it is not available in the default repositories of your Linux distribution, you can download, compile and install from source as described in the section titled "Download and build instructions" in official documentation page.
Once installed, you can display an image with "auto zoom" option using command:
$ fim -a dog.jpg
Here is the sample output from my Ubuntu box.
As you can see in the above screenshot, FIM didn't use any external GUI picture viewers. Instead, it uses our system's framebuffer to display the image.
If you have multiple .jpg files in the current directory, you could use wildcard to open all of them as shown below.
$ fim -a *.jpg
To open all images in a directory, for example Pictures, run:
$ fim Pictures/
We can also open the images recursively in a folder and its sub-folder and then sorting the list like below.
$ fim -R Pictures/ --sort
To render the image in ASCII format, you can use -t flag.
$ fim -t dog.jpg
To quit Fim, press ESC or q.
You can use various keyboard shortcuts to manage the images. For example, to load next image and previous images, press PgUp/PgDown keys. Ton Zoom in or out, use +/- keys. Here is the common keys used to control images in FIM.
- PageUp/Down : Prev/Next image
- +/- : Zoom in/out
- a : Autoscale
- w : Fit to width
- h : Fit to height
- j/k : Pan down/up
- f/m : flip/mirror
- r/R : Rotate (Clock wise and ant-clock wise)
- ESC/q : Quit
For complete details, refer man pages.
$ man fim
2. Display Images In the Terminal Using Viu
Viu is yet another command line application to view images from the Terminal. It is free, open source CLI image viewer written using Rust programming language. Using Viu we can;
- Display popular type of image, including .jpg, .png, igif etc.
- Display images in custom dimensions.
- Display images directly from the image hosting platforms, for example giphy.
Since Viu is written in Rust, we can install it using Cargo package manager. After installing Rust in your Linux box, run the following command to install Viu.
$ cargo install viu
$ yay -S viu
Viu is also available as per-compiled binary. Download the latest binary from the releases page. As of writing this, the latest version was 0.2.1.
After downloading the Viu binary file, make it executable:
$ chmod +x viu
And, move it to your path, for example /usr/local/bin.
$ sudo mv viu /usr/local/bin/
Viu usage is trivial. Just type viu followed by the image path and hit ENTER key.
$ viu image.jpg
You can even display custom dimension image using -h (Height) or -w (Width) flags like below.
$ viu image.jpg -w 40
To display multiple images one after another in a folder, use wildcard characters like below.
$ viu Desktop/pic\ *
Like I already mentioned, Viu is capable of displaying different format images. For example, the following command will display the gif image using Viu:
$ viu animated.gif
To exit, just press CTRL+C.
It is also possible to display the image hosting sites, for example Giphy, in Terminal like below.
$ curl -s https://media.giphy.com/media/6pUBXVTai18Iw/giphy.gif | viu -w 40
For more details about Viu, refer the help section by typing the command:
$ viu --help
3. Display Images In the Terminal Using Lsix
Unlike the previous two image viewers, Lsix will only display thumbnails in Terminal. It is like ‘ls’ command in Unix-like systems, but for images only. Lsix is a simple BASH script to view thumbnail images in Terminal using Sixel graphics. For more details about this script, please click the following link.
And, that's all for now. If you use/know any other CLI image viewers, please mention them in the comment section below. I will check and update the guide.
More good stuffs to come. Stay tuned!