When I am on the console (the tty, the virtual terminal, which you reach with Ctrl+Alt+F1-6, not a terminal emulator), what options do I have to view images, tiff, whatever that's not text?
Many images are coloured, hence you may use libcaca’s ASCII image viewer (
cacaview) and image to text converter (
To browse images, use the ASCII image browser:
Convert images to text-based coloured files:
img2txt -W 150 penguins_mating.png > penguins_mating.txt
View movies and videos in text console:
mplayer -vo caca https://upload.wikimedia.org/wikipedia/commons/4/41/Big_Buck_Bunny_medium.ogv
Mostly you don’t need the option
-vo cacaif you view your video in a text-only environment (terminal with ssh-connection, virtual terminal etc.). By default you’ll get the noncolored text-output (i.e.
-vo aa), but color may be better.
For Fedora and Ubuntu the package
caca-utils has to be installed.
Read here for more information.
This answer is limited to native linux consoles that are frame-buffer enabled. This option will give you full resolution real images and real video (not ascii-art) without
As of 2018, debian offers a package
fim which includes an image viewer
fim and a document viewer
fimgs, the default resolution is 96x96, which you'll probably find inadequate. I find that calling it with option
-r 256x256 is sufficient. These two programs are meant to be 'modernized' versions of other programs also available in debian,
fbgs. A particular disappointment with the older program
fbgs is that it renders slowly and will render an entire pdf file before displaying even a single page, so if you have a many-paged document, you'll be waiting a long long time.
There are several programs not specific to framebuffer operation that have fine framebuffer support. The
w3m web browser will display images when support package
w3m-img is installed. The
feh image viewer works in a frame buffer console, as does
vlc for video.
All this is all very well and good, but in order to use any of these options you will first need to set things up.
The good news is that pretty much all modern linux distributions ship kernels with the framebuffer available. What isn't commonly done is configuring that frame buffer to be actually used. For that, if you are using the
grub bootloader, you will need to make sure the following exists in your file
/etc/default/grub (your specific resolution number may be different):
And you will need to make sure the following line is commented out:
After that, you will need to update grub by running
update-grub and will need to reboot for the changes to take effect.
You also may need to add your user to the
video permissions group:
usermod -a -G video <user_name>
Some programs may require special capability access. According to my notes, that is the case with
fbi, but I see on my system it is not the case for
fim. Go figure. In any event the command for that is:
setcap 'cap_sys_tty_config+ep' /usr/bin/fbi
A program that I can not recommend, and have only had trouble with, is
fbterm. It kept messing with my color schemes for
less and other programs, and I recall that it wouldn't play nicely will
An important note about using
vlc in a framebuffer console: I found that sometimes, in a way I wasn't able to reliably reproduce,
vlc would freeze and not release the framebuffer, short of "alt-sysrq"-ing the machine to reboot. Sometimes, this happened when attempting to switch to another virtual consoles; sometimes when experimenting with what
vlc keystroke commands would work. You have been warned.
There is a library today today named SVGAlib. It directly handles the video card, with user-space drivers (imported mainly from X).
It has no drivers to most current video cards, but
- it has VESA output driver (i.e. essentially it can handle the output with the BIOS drivers)
- it has fbdev drivers (it handles
/dev/fb0as a video card, thus essentially it uses the kernel drivers).
There are many softwares using SVGALib, for example mplayer (for video output), and answering your question, the xzgv image viewer.
Although you will have to compile them from source, because Linux distribution developers all think since roughly a decade, that X (with continuous nice, never-fulfilled promises like kgi, ggi, and today wayland) are the future.
ffmpeg can show any image format fullscreen :
ffmpeg -i image.ext -s $(< /sys/class/graphics/fb0/virtual_size tr , x) \ -vcodec rawvideo -f image2 -pix_fmt bgra -y /dev/fb0 &>/dev/null && read
mplayer has a framebuffer driver (2 versions, in case one doesn't work). Use
mplayer -vo fbdev [or fbdev2] <filename>
fim work. Whatever else these two can't handle, you can probably convert to images on the fly (
imagemagick works like magic), so you have everything covered.
You can use the library from AA-Project
- xine-console [video]
- xaos [fractals/mandelbrod]
- vlc [video]
- aview [photos]
- ... a.m.o
First off you must make sure the framebuffer is enabled, there is absolutely no way to view images in text mode. Once you have the framebuffer enabled, you can use the program
fbi to view images.
Linux frame buffer image viewer
This is an image viewer for Linux frame buffer devices. It has built-in support for a number of common image file formats. For unknown files, it tries to use convert from the ImageMagick package as an external converter. It also includes fbgs, a Postscript and PDF viewer.
None. You need some kind of display server to display images. Xserver, mir, wayland or similar provide the interfaces for images. getty is designed to emulate text terminals and doesn't have the ability to display images.