300

The terminal is very fast and convenient way to quickly access directories and files (faster than find and click on the directory).

One thing that it cannot show in text-mode is "pictures".

What is a best way to view pictures (like you see images thumbnail in Nautilus) when you are working in the terminal (e.g. command nautilus or any program - but should be fast and convenient)?

27 Answers 27

269

The way to "double-click" on a file from the command line is xdg-open.

If you're on Gnome (probably, if you're using Nautilus), you can use eog directly, or any other image program (feh is quite good).

feh <image-name>      

If you want to consult image-name file easilly.

| improve this answer | |
  • 1
    feh even works with multiple URLs! – Serge Stroobandt May 21 '16 at 15:16
  • 10
    @Searene Yeah! Long life to feh. But I observe that feh has no zoom or any other function whatsoever. eog, however, is also lightweight and, in addition, it can zoom, rotate and browse the images in a folder :). Just for the people to know before they make a choice. – loved.by.Jesus Jun 1 '16 at 13:19
  • 2
    although eog is preinstalled in my ubuntu os, I still prefer feh coz it can be closed by q while eog and xdg-open can be closed by esc. – Evan Hu Jun 30 '16 at 13:17
  • 7
    Actually, feh does have zoom, fullscreen, scroll etc. look at the man page – dalimama Sep 11 '16 at 6:31
  • 2
    @pikachuchameleon you'll need to set up an X11 environment and forwarding. Have a look at these instructions – Kevin Apr 2 '18 at 17:27
128

If you happen to have installed imagemagick, you can use its very handy display command-line tool.

display path/to/picture.png
| improve this answer | |
  • 3
    I personally prefer feh, but display is usually installed on web servers, where feh or other image browsers aren't installed. – pevik Dec 7 '14 at 19:34
  • 4
    display works great on Ubuntu 16.04 LTS Desktop and also on stock Raspbian. No installs required. TNX from 2017 – SDsolar Jul 22 '17 at 19:55
  • Great, works even with stream: curl https://example.com/image.jpg | display – Pavel Feb 16 '18 at 21:26
118

I usually run python -m SimpleHTTPServer 8080 from a folder containing the image and view it from the browser at localhost:8080/path/to/image.jpg. Works great to browse and look at different image and text files in that same directory.

Edit: This method also works for remote boxes. Just run the python server as above, and if the ports are open you can connect to myserver.com:8080/path/to/image.jpg. If the server does not expose ports, you can set up an ssh tunnel with ssh me@myserver.com -N -L localhost:8080:localhost:8080 and then view the images from your local browser at localhost:8080/path/to/image.jpg. Note this http interface is much faster than ssh -X.

| improve this answer | |
  • 14
    Clever! Works like a charm and there's no need to type /path/to/image.jpg. Just open localhost:8080 and click on the filenames. – Roger Dahl Mar 5 '15 at 4:49
  • 1
    Regarding the last paragraph, you can also add tunnels easily using PuTTY configuration! Then you can access it through a browser. Awesome! – ADTC Oct 30 '15 at 8:45
  • 22
    I needed python -m http.server with Python 3 – drstevok Sep 8 '16 at 21:34
  • x-www-browser /path/to/image or firefox /path/to/image – Gayan Weerakutti Jun 2 '17 at 9:08
  • awesome trick! exactly what i was looking for. – Neara Dec 2 '18 at 12:26
103

I have created a tool that uses various unicode block graphics characters to improve the resolution (compared to the canonical 2 pixel per characterapproach taken by other solutions posted here). It also automatically displays images in a thumbnail mode if multiple images are provided as input.

Installation:

git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install

Usage:

tiv <image(s)>

More details at the github project: https://github.com/stefanhaustein/TerminalImageViewer

Example screenshot:

Screenshot

| improve this answer | |
  • 14
    Not sure why the downvote, guess because of self-promotion? I think it's the best tool for the job though and the question is still relevant today. – Stefan Haustein Jul 9 '17 at 22:39
  • 1
    a snap will be easier for everybody: no ppa to setup for you, no ppa to add for the user -> snapcraft.io – Daniele Dellafiore Nov 2 '18 at 15:56
  • 1
    Does not compile on Ubuntu 16.04 with gcc – axolotl Mar 20 at 7:31
  • 2
    @MehdiLAMRANI please file an issue on github with os/compiler/platform details – Stefan Haustein Apr 21 at 8:06
  • 1
    The snap has bugs. It's still recommended to clone it from git. – Mark Jeronimus May 2 at 22:45
28

I guess feh would be the one you are looking for.

Although popping out a terminal-like window for picture display as mplayer does for video playing, Feh is still considered as a terminal-based picture viewer due to its command-intensive control style.

| improve this answer | |
23

If you're on OS X, iTerm 2 supports displaying inline images:

iTerm2 inline image

As you can imagine, this can be highly useful when you just want to display an image without going in and opening up Preview.app or having to open the Finder to the image and hitting spacebar on the image.

The feature is documented at iTerm2's feature page

| improve this answer | |
  • 1
    It's really laggy in my experience. – Ilia Sidorenko Mar 11 '18 at 2:22
  • 4
    Works fine for me. No issues with lag. MBP/OSX 10.12.6 – Heinrich Hartmann Sep 21 '18 at 19:00
22

If you're in pure terminal with framebuffer activated, I'd recommend fbi. It's always in my after-install to do list.

Otherwise, eog is the default picture opener in Gnome, as Kevin mentioned. Also, Shotwell seems to open pretty fast for me... I'm pretty sure there are hundreds. :-)

| improve this answer | |
  • Thanks for this one - it's news to me. As an aside, googling lands me at fim's (self-styled framebuffer image viewer improved ) manpage only a few search results in. Dont know yet the difference. – mikeserv Mar 23 '14 at 6:42
16

No dependencies, one C file, one header file: imcat

Works on linux, macos, windows. Automatically scales to terminal width, with quality down-sampling.

enter image description here

Remark: seriously? Down-voted? Next time, maybe explain in comment why.

| improve this answer | |
  • 2
    any idea why I can't find this with apt-get? – Sridhar Sarnobat Sep 3 '19 at 20:41
  • Because it is a repository on github. clone the repository on your PC and type 'make' in the folder, that you have downloaded – Dave Nov 14 at 22:37
15

Surprised that the Terminology terminal emulator is not among the answers. As easy as tyls and then clicking on an image:

enter image description here

or someting like tycat image.png, for example:

enter image description here

Plus a lot more. An old video, almost 3 years ago, demonstrating Terminology 0.3: https://www.youtube.com/watch?v=ibPziLRGvkg#action=share.

| improve this answer | |
10

w3m's imgdisplay library is able to display images directly. It only works on some terminal emulators such as Xterm and URxvt.

ranger is a file browser that makes use of the library to display previews. Add this to ranger's configuration file to enable the feature:

set preview_images true
| improve this answer | |
8

From the terminal? Why not in the terminal: cacaview might be the fastest. By default it's fastest if the terminal has no graphics.

In Debian: sudo apt-get install caca-utils

| improve this answer | |
7

Actually, there is a way to show a PNG file in a terminal in text-mode, using picture-tube:

screenshot

You can look at the project on GitHub.

The image is of course an approximation of the actual image, given the fact that the smallest pixel is a character - try to have a look at the result in a text editor, you will see a huge number of color codes.

You can install the tool like this (assuming you have already installed node/npm): npm install -g picture-tube

| improve this answer | |
6

Another great terminal-based picture viewer is fim, which is a improved fbi with a vim-like control system.

| improve this answer | |
  • Good solution, but didn't show a way to do it. – Goddard May 18 '19 at 22:27
  • 3
    I tried this. It opens a separate X window over SSH in case anyone's wondering. What would be ideal for me is an inline terminal display that works over SSH but I don't think there is a good one. – Sridhar Sarnobat Sep 3 '19 at 20:51
6

The kitty terminal can display inside the terminal with the icat "kitten"

E.g.

kitty +kitten icat /path/to/image

Example:

enter image description here

The kitty documentation suggests creating an alias, e.g.

alias icat="kitty +kitten icat"

So that then you can simply do:

icat /path/to/image

| improve this answer | |
5

This is a 4 year-old-question but I found that people still look at it. So, today I would like to answer my own question specifically only for iTerm2.

At first time I asked this question. The term of "fastest" I was thinking of viewing image as fast as cat command displaying text. So, today I found the answer on iTerm2, which are the two handy commands name imgcat and imgls.

To use them, the first let's install iterm2-nigthly:

$ brew cask install iterm2-nightly

then visit the website:

https://github.com/olivere/iterm2-imagetools

and install imgcat and imgls commands:

$ go install github.com/olivere/iterm2-imagetools/cmd/imgcat
$ go install github.com/olivere/iterm2-imagetools/cmd/imgls

So, I really love them and also hope this will be useful for you all!

| improve this answer | |
  • This is very useful, so thanks for answering this 4 years later. Works like a charm, but might want to include the install go step (brew install go) for those that don't have it yet. – jamescampbell Aug 1 '16 at 3:17
  • @jamescampbell, you don't need to install go to get the imgcat and imgls scripts. They're provided to you by iTerm's developer himself here: iterm2.com/documentation-images.html, and these are bash scripts. – akshay Nov 23 '16 at 17:48
  • 3
    what is the closest option to imgcat on Linux? I'm trying to switch atm – rien333 Jul 18 '18 at 19:24
5

There is a tool here called catimg that works really well:

https://github.com/posva/catimg

Also has deb packages on https://launchpad.net/ubuntu/+source/catimg

| improve this answer | |
4

I just use the Chrome webrowser, which supports jpg, svg, png, ico, animated gif... basically everything I'm likely to need:

google-chrome ./myphoto.jpg

If you prefer Firefox:

firefox ./myphoto.jpg
| improve this answer | |
3

pxl is a pretty cool option which hasn't been mentioned yet. Similar to picture-tube which was previously posted in that it shows the image directly in the terminal although it supports more image formats.

| improve this answer | |
2

In linux you can install gnome-open.

# In Debian flavors

sudo apt-get install gnome-open

Then create an alias:

alias open='gnome-open'

Then you can:

open file.pdf
open file.jpg
etc
| improve this answer | |
  • This was installed by default in my Ubuntu install. – starbeamrainbowlabs Mar 12 '16 at 11:02
2

The Ranger file manager enabling the image-preview in settings. Ranger file manager with image preview

| improve this answer | |
1

I just found this page, and it is still very relevant today. OP didn't really specify if they want X or fb viewer.

I use a small utility called pho: http://www.shallowsky.com/software/pho/

Needs X, so call from command line in a terminal window. Views many picture formats, gif and jpg for sure... some others as well.

Can do wildcard globbing from command line: eg. "$ pho img00??.jpg" will view all files that match in order. Space goes forward through list and backspace goes back. Its quick loading individual images -- hold down space and you fly through them.

Very fast if you want to look through a bunch of pictures, flag ones of interest, rotate, delete unwanted... I keep coming back to it.

From the web page above:

pho (pronounced like the first syllable in "photo") is a lightweight program for viewing large numbers of images quickly, rotating or deleting some, and making notes about what to do with each image -- for instance, for going through hundreds of images after uploading them from a digital camera.

| improve this answer | |
1

Even tough there are great answers given, my issue was to view images in terminal itself, without openning any graphical application, so i wrote my own little script. I only needed to identify the image and did not need al the details of it and did not want to download any relatively big packet, if anyone needs they can also use it: https://github.com/Deniz97/terminal-image-viewer

| improve this answer | |
0

I have a shell alias for macOS called preview that can (1) display an image inline (-i or --inline option), either from stdin or specified filepath(s), and (2) just open an image in Apple's Preview app (without any option), the latter also either from stdin or filepath(s), e.g.:

cat image.jpg | preview

preview -i image.png

Inline display only works with the iTerm imgcat alias, so you need iTerm installed, running, and frontmost. But preview checks if all that is true.

Online here: https://github.com/JayBrown/Tools/blob/master/Aliases/preview

| improve this answer | |
0

What is a best way to view pictures (like you see images thumbnail in Nautilus) when you are working in the terminal [...] ?

This part of the question about previewing multiple images at once has not yet been addressed properly. Most image viewers (with the exception of TerminalImageViewer) will not show multiple thumbnails when called with multiple image files. They might display them in a slideshow, which is not always practical (e.g. when browsing through icons).

As a solution, I use a usual file manager in "thumbnail" mode to display all images that I copied to a temporary directory. For example, to display all icons from the KDE icon theme "Breeze" where the filename matches *search*:

tmpdir=$(mktemp -d -t image-previews-XXXXX)

find /usr/share/icons/breeze -name "*search*" -exec \
    bash -c '
        tmpdir=$1; 
        file=$2; 
        newfile=${file/\/usr\/share\/icons\/breeze\//}; 
        newfile=${newfile//\//-}; 
        cp $file $tmpdir/$newfile
    ' _ $tmpdir {} \; 

pcmanfm-qt $tmpdir

Discussion

This finds and copies all Breeze icons matching *search* to a temporary directory, replacing the path relative to the Breeze installation directory with a filename that has - instead of the directory separator /. This way, the files are all in one directory for previewing, and won't overwrite each other.

Then this starts a file manager (here pcmanfm-qt) to show the files in the temporary directory. After it starts, it has to be manually set to thumbnail view for best results. Unlike other image viewers, file managers usually can render SVGs into preview thumbnails.

The find command uses a technique with positional parameters in a subshell to allow executing multiple commands in find including variable evaluation, as documented here.

| improve this answer | |
0

img2sixel

Fast, convenient, and easy to use.

To use:

$ img2sixel <image_name>

To install (ubuntu 18.04):

$ sudo apt install libsixel-bin

Example (scaled down to 400 pixels wide with -w 400):

enter image description here

There's a list of terminal requirements in the link, but it's worked with any terminal I've tried it on. I won't bother listing all the supported terminals, but here are some:

DEC VT series, VT240/VT241/VT330/VT340/VT282/VT284/VT286/VT382

DECterm(dxterm)

Kermit

ZSTEM 340

WRQ Reflection

RLogin

mlterm

Works on each of X, WIN32 GDI, framebuffer, Android, Cocoa version.

XTerm (compiled with --enable-sixel-graphics option)

yaft

Mintty (>= 2.6.0)

| improve this answer | |
0

You can also use chafa (on GitHub). It has a gallery with plenty of examples, showing different options. It even supports animated GIFs.

chafa animated GIF screenshot

| improve this answer | |
-2

If using gnome it is as simple as typing

$ gnome-open /path/to/photo

and it opens the image using the default image viewer that you have in your machine.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.