feh(1)

NAME
feh - image viewer and cataloguer

SYNOPSIS
feh [options] file(s)

DESCRIPTION
feh is an image viewer using the imlib2 library to open and manipulate images. feh has a large number of operational modes. The default mode is an image slideshow, showing one image at a time from those specified on the commandline. Keys and mouse control may be used to move through them. Other modes can be specified on the commandline, and are described below.

feh can also recurse through a directory structure to form a filelist for processing, and will convert directory names on the commandline into a list of their contents automatically.

Filelists can be sorted in a number of ways. The default is the order the files were specified on the commandline, or the order they were read from the disk. You can specify sorting modes such as randomize or you can sort by filename, image name, width, height, pixels, etc. Filelists can also be saved to or loaded from files.

MODES
Montage mode forms a montage from the filelist. The resultant image can be viewed or saved, and it's size can be limited by height, width or both.

Collage mode is very similar to montage mode, except the images are distributed randomly and may overlap eachother

Index mode forms an index print from the filelist. Image thumbnails are shown along with the filename, filesize and pixel size, printed using a truetype font of your choice. The resultant image can be viewed or saved, and it's size can be limited by height, width or both.

Thumbnail mode is like index mode, but the mini-images are clickable, and launch the clicked image in a browser window.

Multiwindow mode shows images in multiple windows, instead of as a slideshow in one window. Don't use with a large filelist ;)

Fullscreen mode shows image in fullscreen view, can be combined with a slide-change delay to show an automated presentation.

List mode doesn't display images. Outputs an 'ls'-style listing of the files in the filelist, including image info such as size, pixels, type, etc. Customlist mode will display whatever image info you want, in the format you choose.

feh can also list either all the loadable files in a filelist or all the unloadable files. Useful for preening a directory.

feh also has the ability to load files over http or ftp, simply specify the url on the commandline.

feh can read options from the commandline, or from a config file. The syntax is the same in each case. See CONFIG FILE SYNTAX for details about using themes defined in a config file. These methods may be used in conjunction.

OPTIONS

-h, --help
    display help output and exit

-v, --version
    output version information and exit

-V, --verbose
    output useful information, progress bars, etc

-q, --quiet
    Don't report non-fatal errors for failed loads. Verbose and quiet modes are not mutually exclusive, the first controls informational messages, the second only errors.

-T, --theme THEME
    Load options from config file with name THEME - see CONFIG FILE SYNTAX for more info.

--rcfile FILE
    Use FILE to parse themes and options from, instead of the default ~/.fehrc, /etc/fehrc files.

-r, --recursive
    Recursively expand any directories in FILE to the content of those directories, all the way down to the bottom level. (Take it easy)

-z, --randomize
    When viewing multiple files in a slideshow, randomise the file list before displaying.

-f, --filelist FILE
    This option is similar to the playlists used by music software. If FILE exists, it will be read for a list of files to load, in the order they appear. The format is a list of image filenames, absolute or relative to the current directory, one filename per line.
    If FILE doesn't exist, it will be created from the internal filelist at the end of a viewing session. This is best used to store the results of complex sorts (-Spixels for example) for later viewing. Any changes to the internal filelist (such as deleting a file or it being pruned for being unloadable) will be saved to FILE when feh exits. You can add files to filelists by specifying them on the commandline when also specifying the list.

-p, --preload
    Preload images. This doesn't mean hold them in RAM, it means run through them and eliminate unloadable images first. Otherwise they will be removed as you flick through. This also analyses the images to get data for use in sorting, such as pixel size, type etc. A preload run will be automatically performed if you specify one of these sort modes.

-F, --full-screen
    Make the window fullscreen

-g, --geometry STRING
    Limit (and don't change) the window size. Takes an X-style geometry string like 640x480. Note that larger images will be zoomed out to fit but you can see them at 1:1 by clicking the zoom button.

-Z, --auto-zoom
    Zoom picture to screen size in fullscreen (affected by --stretch and --ignore-aspect).

--zoom PERCENT
    Zooms images by a PERCENT, when in full screen mode or when window geometry is fixed. If combined with --auto-zoom, zooming will be limited to the the size.

-w, --multiwindow
    Disable slideshow mode. With this setting, instead of opening multiple files in slideshow mode, multiple windows will be opened, one per file.

-x, --borderless
    Create borderless windows

-d, --draw-filename
    Draw the filename at the top-left of the image

-D, --slideshow-delay NUM
    For slideshow mode, specifies time delay (seconds, can be a decimal) between automatically changing slides. Great for presentations.

-R, --reload NUM
    Use this option to tell feh to reload an image after NUM seconds. Useful for viewing webcams via http, or even on your local machine.

-k, --keep-http
    When viewing files using HTTP, feh normally deletes the local copies after viewing, or, if caching, on exit. This option prevents this so that you get to keep the local copies. They will be in /tmp with "feh" in the name.

-Q, --builtin
    Use builtin http client to grab remote files instead of wget, useful if you don't have wget installed.

--caption-path PATH
    Path to directory containing image captions. This turns on caption viewing, and if captions are found in PATH, which is relative to the directory of each image, they are overlayed on the displayed image. e.g with caption path "captions", and viewing image images/foo.jpg, caption will be looked for as "images/captions/foo.jpg.txt"

-l, --list
    Don't display images. Analyse them and display an 'ls'-style listing. Useful in scripts hunt out images of a certain size/resolution/type etc.

-L, --customlist FORMAT
    Use FORMAT as the format specifier for list output. FORMAT is a printf-like string containing image info specifiers. See FORMAT SPECIFIERS.

-U, --loadable
    Don't display images. Just print out their names if imlib2 can successfully load them.

-u, --unloadable
    Don't display images. Just print out their name if imlib2 can NOT successfully load them.

-S, --sort SORT_TYPE
    The file list may be sorted according to image parameters. Allowed sort types are: name, filename, width, height, pixels, size, format. For sort modes other than name or filename, a preload run will be necessary, causing a delay proportional to the number of images in the list

-n, --reverse
    Reverse the sort order. Use this to invert the order of the filelist. Eg to sort in reverse width order, use -nSwidth

-A, --action ACTION
    Specify a string as an action to perform on the image. In slideshow or multiwindow modes, the action will be run when the enter key is pressed, in list mode, the action will be run for each file listed. The action will be executed by /bin/sh. Use format specifiers to refer to image info. See FORMAT SPECIFIERS for examples
    Eg. feh -A "mv %f ~/images/%n" *
    In slideshow mode, the next image will be shown after running the action, in multiwindow mode, the window will be closed.

-m, --montage
    Enable montage mode. Montage mode creates a new image consisting of a grid of thumbnails of the images in the filelist. When montage mode is selected, certain other options become available. See MONTAGE MODE OPTIONS

-c, --collage
    Enable collage mode. Collage mode is very similar to montage mode, except the images are distributed randomly.

-i, --index
    Enable Index mode. Index mode is similar to montage mode, and accepts the same options. It creates an index print of thumbails, printing the image name beneath each thumbnail. Index mode enables certain other options, see INDEX MODE OPTIONS

-I, --fullindex
    Same as Index mode, but you also get image size and dimensions printed below each thumbnail.

-t, --thumbnails
    Same as Index mode, but the thumbnails are clickable image launchers.

--bg-tile FILE

--bg-center FILE

--bg-scale FILE

--bg-seamless FILE
    Set your desktop background to FILE. Feh can use enlightenment IPC if you are running it, or will fall back to X methods. Feh stores the commandline necessary to restore the background you chose in ~/.fehbg. So to have feh-set backgrounds restored when you restart X, add the line "eval `cat $HOME/.fehbg`" to your X startup script (e.g. ~/.xsession). Note that you only need to do this for non E window managers.

-M, --menu-font FONT
    Use FONT for the font in menus.

--menu-style FILE
    Use FILE as the style descriptor for menu text.

--menu-bg BG
    Use BG for the background image in menus.

--menu-border INT
    Specify number of pixels that define the menu background's border. Borders are not stretched when images are scaled.

-N, --no-menus
    Don't load or show any menus.

-1, --next-button B
    Use button B to advance to the next image in slideshow mode (defaults to 1, usually the left button).

-2, --zoom-button B
    Use button B to zoom the current image in any mode (defaults to 2, usually the middle button).

-3, --pan-button B
    Use button B to pan the current image in any mode (defaults to 3, usually the right button).

--no-pan-ctrl-mask
    Don't require CTRL+Button for panning in any mode -- just use the button (default=off).

-4, --menu-button B
    Use CTRL+Button B to activate the menu in any mode. Set to 0 to use any button. This option is disabled if the -N or --no-menus option is set (defaults to 3, usually the right button).

-5, --no-menu-ctrl-mask
    Don't require CTRL+Button for menu activation in any mode -- just use the button (default=off).

-6, --rotate-button B
    Use CTRL+Button B to rotate the current image in any mode (default=2).

-7, --no-rotate-ctrl-mask
    Don't require CTRL+Button for rotation in any mode -- just use the button (default=off).

-8, --blur-button B
    Use CTRL+Button B to blur the current image in any mode (default=1).

-9, --no-blur-ctrl-mask
    Don't require CTRL+Button for blurring in any mode -- just use the button (default=off). --xinerama Enable/disable Xinerama support. Has no effect unless you have an Xinerama compiled in. --screen-clip Enable/disable window clipping based on screen size. WARNING: With this disabled, windows could become very large, making them unmanageable in certain window managers.

FORMAT SPECIFIERS
%f image path/filename
%n image name
%s image size (bytes)
%p image pixel size
%w image width
%h image height
%t image format
%P prints feh
%v prints the version
%m prints the mode (slideshow, multiwindow...)
%l prints the total number of files in the filelist
%u prints the current file number
\n newline
Eg. feh -A "mv %f ~/images/%n" *

MONTAGE MODE OPTIONS

-X, --ignore-aspect
    By default, the montage thumbnails will retain their aspect ratios, while fitting in --thumb-width and --thumb-height. This option will force them to be the size set by --thumb-width and --thumb-height This will prevent any whitespace in the final montage

-s, --stretch
    Normally, if an image is smaller than the specified thumbnail size, it will not be enlarged. If this option is set, the image will be scaled up to fit the thumnail size. (Aspect ratio will be maintained unless --ignore-aspect is specified)

-y, --thumb-width NUM
    Set thumbnail width in pixels

-E, --thumb-height NUM
    Set thumbnail height in pixels Thumbnails default to 20x20 pixels

-W, --limit-width NUM
    Limit the width of the montage in pixels

-H, --limit-height NUM
    Limit the height of the montage in pixels These options can be used together (to define the image size exactly), or separately. If only one is specified, theother is calculated from the number of files specified and the size of the thumbnails. The default is to limit width to 800 pixels and calculate the height as necessary

-b, --bg FILE|trans
    Use FILE as a background for your montage. With this option specified, the size of the montage will default to the size of FILE if no size restrictions are specified. Alternatively, if FILE is 'trans', the background will be made transparent.

-a, --alpha NUM
    When drawing thumbnails onto the background, apply them with a transparency level of NUM (0-255).

-o FILE
    Save the created montage to FILE

-O FILE
    Just save the created montage to FILE without displaying it (use in scripts)

INDEX MODE OPTIONS

-e, --font FONT
    Use FONT to print the information under each thumbnail. FONT should be a truetype font, resident in the current directory, or in feh's font directory, and should be defined in the form fontname/size(points). (No extension). eg. --font myfont/12

--fontpath PATH
    Specify PATH as an extra directory in which to search for fonts, can use multiple times to add multiple paths, e.g --fontpath /path/a --fontpath /path/b.

--title-font FONT
    Use FONT to print a title on the index, if no font is specified, a title will not be printed

CONFIG FILE SYNTAX
The feh config file allows the naming of option groups, or themes. If $HOME/.fehrc exists, or if not, but /etc/fehrc exists, feh will look in it for theme name/options pairs. If neither $HOME/.fehrc or /etc/fehrc exist, feh will create a default one in ~/.fehrc. An example entry would be:
imagemap -rVq --thumb-width 40 --thumb-height 30
You can then use this theme in two ways. Either
feh --theme imagemap *.jpg
or you can create a symbolic link to feh with the name of the options you want it to use. So from the example above:
ln -s `which feh` ~/bin/imagemap
Now I just run imagemap *.jpg to use those options. A cooler example is
mkindex -iVO index.jpg --title-font 20thcent/24 .
Notice the '.' at the end. Now with a symlink I can create a mkindex command which will create an index.jpg in the current directory. I just run mkindex to do it.
You can combine these themes with commandline options, they will be combined. So in the example above, typing mkindex -q will create and index, suppressing error messages. An example.fehrc is provided with a couple of cool examples.

SLIDESHOW KEYS
The default mode for viewing mulitple images is Slideshow mode When viewing a slideshow, the following keys may be used:

p, P, <BACKSPACE>, <LEFT>
    Goto previous slide

n, N, <SPACE>, <RIGHT>
    Goto next slide

r, R
    Reload current image. Useful for webcams.

v, V
    Toggle fullscreen.

m, M
    Show popup menu.

c, C
    Caption entry mode. If --caption-path has been specified, then this enables caption editing. The caption will turn yellow and be editable, hit enter to confirm and save the caption, or hit escape to cancel and revert the caption.

w, W
    Size window to current image size.

h, H
    Pause the slideshow (only useful when using timed reloading or image changes)

s, S
    Save the current image to a unique filename.

f, F
    Save the current filelist to a unique filename.

<, >
    In place editing, rotate the image 90 degrees left/right.

<HOME>
    Goto first slide

<END>
    Goto last slide

<ESCAPE>
    Quit the slideshow

+, =
    Increase reload delay

-, _
    Decrease reload delay

<DELETE>
    Remove the currently viewed file from the filelist

<CTRL+DELETE>
    Delete the currently viewed file and remove it from the filelist

x, X
    Close current window.

q, Q
    Quit the slideshow <KEYPAD LEFT> Move the image to the left <KEYPAD RIGHT> Move the image to the right <KEYPAD +> Zoom in <KEYPAD -> Zoom out <KEYPAD *> Zoom to 100% <KEYPAD /> Zoom to fit the window

MOUSE ACTIONS
When viewing an image, mouse button 1 moves to the next image (slideshow mode only), button 2 zooms (click and drag left->right to zoom in, right-> left to zoom out, click once to restore 1x zoom), and mouse button 3 pans. Ctrl+button 1 blurs or sharpens the image (drag left to blur and right to sharpen). Ctrl+button 2 rotates the image around the center point. Ctrl+ button 3 activates the context-sensitive menu. Buttons can be redefined with the -1 through -9 (or --*-button) cmdline flags. All you people with million button mice can remove the ctrl mask with the --no-*-ctrl-mask options.

SUGGESTED USAGE EXAMPLES
Here are some examples of nice option combinations to achieve cool results:

feh -r /opt/images
    Recursively scan /opt/images and show all the images in a slideshow.

feh -rSname /opt/image
    Same again, but sort by name before showing.

feh -m /opt/images/landscapes
    Create a montage from the images in /opt/images/landscapes

feh -Xrm -W 400 --thumb-width 30 --thumb-height 20 ./landscapes
    Create a montage from the images in /opt/images/landscapes and all directories below it. Limit the width of the image to 400 and make the thumbnails 30x20, ignoring aspect ratio.

feh -irFarial/14 -O index.jpg /opt/images
    Make an index print of /opt/images and all directories below it, using 14 point arial to write the image info under each thumbnail. Save the image as index.jpg and don't display it, just exit.

feh -LrSpixels /opt/images
    List the images in /opt/images and all directories within, sorted by pixel size, giving as much info as possible.

feh -kR30 http://url.of.a.webcam.jpg
    Use feh to view a webcam, reloading every 30 seconds, and saving the images in /tmp.

feh --unloadables -r /opt/images
    Weed out (list) all the unloadable images in /opt/images and below.

feh -w /opt/images/holidays
    Open each image in /opt/images/holidays in it's own window

feh -FD5 -Sname /opt/images/presentation
    Show the images in /opt/images/presentation, sorted by name, in fullscreen view, automatically changing slides every 5 seconds.

feh -rSwidth -A 'mv %f ~/images/%n' /opt/images
    View all the images in /opt/images and below, sorted by width (smallest first) and move the image to ~/images/image_name when enter is pressed.

BUGS
None known. However there are many, many options. It is possible that some do not work well in conjuncion with each other. Let me know :)

LICENSE
Copyright Tom Gilbert (and various contributors), 1999, 2000

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies of the Software and its documentation and acknowledgment shall be given in the documentation and software packages that this Software was used.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Email bugs and feature requests to
<feh_sucks@linuxbrit.co.uk>