Provided by: fim_0.5~rc3-2build1_amd64 bug

NAME

       fim - fbi (linux framebuffer imageviewer) improved

SYNOPSIS

       fim [{options}] [--] {imagefile} [{imagefiles}]
       ... | fim [{options}] [--] [{imagefiles}] -
       fim [{options}] [--] [{files}] - < {file_name_list_text_file}
       fim --image-from-stdin [{options}] < {imagefile}
       fim --script-from-stdin [{options}] < {scriptfile}

DESCRIPTION

       fim  is  a  `swiss army knife' for displaying image files.  It is capable of displaying image files using
       different graphical devices while offering a uniform look and  feel;  it  features  an  internal  command
       language  specialized to the image viewing purposes; it is capable of interacting with standard input and
       output; the internal command language is accessible via a command  line  capable  of  autocompletion  and
       history;  it  features  command  recording,  supports  initialization  files,  customizable key bindings,
       internal variables and command aliases, vim-like autocommands, JPEG comments,  EXIF  tags  display,  EXIF
       rotation/orientation, and much more.

       As  a default, fim displays the specified file(s) on the detected graphical device (e.g. with SDL if X is
       detected, or the linux framebuffer device if  not).   JPEG,PNG,GIF,BMP,TIFF,PPM,PGM,PBM,PCX  formats  are
       supported.   For 'XCF' (Gimp's) images, fim will try to use 'xcftopnm'.  For '.FIG' vectorial images, fim
       will try to use 'fig2dev'.  For '.DIA' vectorial images, fim will try to use 'dia'.  For '.SVG' vectorial
       images,  fim  will  try to use 'inkscape'.  For other formats fim will try to use ImageMagick's 'convert'
       executable.

       If {imagefile} is a  directory,  therein  contained  files  of  supported  formats  will  be  loaded.  If
       {imagefile}  contains  a trailing slash (/), it will be treated as a directory; otherwise a check will be
       made using stat(2). To change  this  default,  see  description  of  the  _pushdir_re  variable  and  the
       --no-stat-push and --recursive  options.

       If configured at build time, fim will be capable of using SDL or aalib output.

       This  man page only describes the fim command line options.  See man fimrc(5) for a full specification of
       the fim language, commands, variables, and an example configuration file.

USAGE

       You may invoke fim from an interactive shell and control it with the keyboard, as you would do  with  any
       image viewer with reasonable key bindings.

       fim  is  keyboard  oriented:  there  are no user menus or buttons available.  If you need some feature or
       setting which is not accessible from the default keyboard  configuration,  you  probably  need  a  custom
       configuration  or  simply  need to type a custom command. For these, you can use the internal command and
       configuration language.  The full specification for these is accessible at  runtime  using  the  internal
       help system (typing :help).

OPTIONS

       Accepted command line {options} :

       --     The  arguments  before -- beginning with - will be treated as command line options.  All arguments
              after -- will be treated as filenames regardlessly.

       -a, --autozoom
              Enable autozoom.  fim will automagically pick a reasonable zoom factor when loading  a  new  image
              (as in fbi).

       -b, --binary[=24|1]
              Display  (any  filetype)  binary files contents as they were raw 24 or 1 bits per pixel pixelmaps.
              Will arrange the image by rows long as specified by the  _preferred_rendering_width  variable  for
              the image width (unless a narrower image suffices).  Regard this as an easter bunny option.

       --as-text
              Display  (any  filetype)  files  contents as they were text.  Will only show printable characters.
              Regard this as an easter bunny option.

       --cd-and-readdir
              Step into the first loaded file directory and push other files.

       -c {commands}, --execute-commands {commands}
              The commands string will be executed before entering the interactive loop.  Please  note  that  if
              your commands are more complicated than a simple 'next' or 'pornview' command, they must be quoted
              and escaped in a manner suitable for your shell!

              For example, -c '*2;2pan_up;display;while(1){align "bottom";sleep "1" ; align  "top"}'  (with  the
              single quotes) will tell fim to first double the displayed image size, then pan two times up, then
              display the image ; and then do an endless loop consisting of bottom and top aligning, alternated.

       -C {commands}, --execute-commands-early {commands}
              Just as the --execute-commands option, but commands will be executed before  the  loading  of  any
              config file.

              For example, -C '_scale_style=" "' will make fim start with no auto-scaling.

       -d {framebuffer device}, --device {framebuffer device}
              Framebuffer device to use. Default is the one your vc is mapped to (as in fbi).

       --dump-reference-help[=man].
              Will dump to stdout the language reference help.

       -D, --dump-default-fimrc
              The  default  configuration (the one hardcoded in the fim executable) is dumped on standard output
              and fim exits.

       -E {scriptfile}, --execute-script {scriptfile}
              The scriptfile will be executed right after the default initialization file is executed.

       -f {fimrc}, --etc-fimrc {fimrc}
              Specify an alternative system wide initialization file (default: /usr/local/etc/fimrc), which will
              be executed prior to any other configuration file.

       -F {commands}, --final-commands {commands}
              The  commands  string  will  be  executed after exiting the interactive loop of the program (right
              before terminating the program).

       -h, --help[=s|d|l|m]
                         Print (short,  descriptive,  long,  or  complete  man)  program  invocation  help,  and
              terminate.

       --load-image-descriptions-file {filename}
              Load image descriptions from {filename}. In {filename} each line is the name of an image file (its
              basename  will  be  taken),  then  a  Tab  character  (unless  --image-descriptions-file-separator
              specifies  otherwise),  then  the  description  text. Each description will be put in the _comment
              variable of the image at load time. Will override the comment  eventually  loaded  from  the  file
              (e.g. JPEG, PNG or TIFF comment). Special comment lines like "#!fim:var=val" will lead i:var to be
              assigned value val (unquoted) at image loading time. Special description lines begin with markers:
              with  "#!fim:="  the  last  description  line  to  be  used; with "#!fim:+" what follows + will be
              appended to the last description line; with "#!fim:^" what follows ^ will be prepended to the last
              description  line;  with  "#!fim:s/f/t" the last description line will be used, but occurrences of
              string f will be substituted with string t (f and t can contain anything but not a /). If  val  is
              empty  that  variable  will be unset. These variables are stored also in an internal index used by
              the limit command. This option sets _caption_over_image=2, so that a  caption  will  be  displayed
              over the image.

       --image-descriptions-file-separator {sepchar}
              A  character  to  be  used  as  a separator between the filename and the description part of lines
              specified just before a --load-image-descriptions-file.

       -i, --image-from-stdin
              Will read one single image from the standard input (the image data, not the  filename).   May  not
              work  with  all  supported  file  formats.   In  the  image  list, this image will be displayed as
              "<STDIN>".

       -m {vmode}, --mode {vmode}
              Name of the video mode to use video mode (must be listed in /etc/fb.modes).   Default  is  not  to
              change  the  video  mode.  In the past, the XF86 config file (/etc/X11/XF86Config) used to contain
              Modeline information, which could be fed to the modeline2fb perl script (distributed with  fbset).
              On  many  modern  xorg  based  systems,  there is no direct way to obtain a fb.modes file from the
              xorg.conf file.  So instead one could obtain useful fb.modes info by using the  (fbmodes  (no  man
              page  AFAIK))  tool,  written  by bisqwit.  An unsupported mode should make fim exit with failure.
              But it is possible the kernel could trick  fim  and  set  a  supported  mode  automatically,  thus
              ignoring the user set mode.

       -N, --no-rc-file
              No personal initialization file will be read (default is ~/.fimrc) at startup.

       --no-etc-rc-file
              No system wide initialization file will be read (default is /usr/local/etc/fimrc) at startup.

       --no-internal-config
              No  internal  default configuration at startup (uses internal variable _no_default_configuration).
              Will only provide a minimal working configuration.

       --no-commandline
              With internal command line mode disabled.

       --no-history-save
              Do not save execution history at finalization (uses internal variable _save_fim_history).

       --no-history-load
              Do not load execution history at startup.

       --no-history
              Do not load or save execution history at startup.

       -p, --script-from-stdin
              Will read commands from stdin prior to entering in interactive mode.

       -o [fb|sdl|aa|imlib2|caca|dumb], --output-device [fb|sdl|aa|imlib2|caca|dumb]
              Will use the specified  device  as  fim  video  output  device,  overriding  automatic  checks.The
              available  devices depend on the original configuration/compilation options, so you should get the
              list of available output devices issuing fim  --version.   The  aa  option  may  be  specified  as
              aa={['w']}  ;  the 'w' character allows windowed mode in case of aalib running under X (otherwise,
              the DISPLAY environment variable will be unset for the current instance of fim).  The  sdl  option
              may  be specified as  sdl={['w']['m']['r']['W']['M']['R']width:height} , where width is and height
              are integer numbers specifying the desired resolution; the 'w' character requests  windowed  mode;
              the  'm'  character  requests mouse pointer display; the 'r' character requests support for window
              resize; the same letters uppercase request explicit negation of the mentioned features.

       --offset {bytes-offset[{:upper-offset}|{+offset-range}]}
              Will use the specified offset (in bytes) for opening the  specified  files.  If  :upper-offset  is
              specified, further bytes until upper-offset will be probed. If +offset-range is specified instead,
              that many additional bytes will be probed.  Use this option to search  damaged  file  systems  for
              image files.

       -P, --text-reading
              Enable  textreading mode.  This has the effect that fim will display images scaled to the width of
              the screen, and aligned to the top.  Useful if the images you are watching  text  pages,  all  you
              have  to  do to get the next piece of text is to press space (in the default key configuration, of
              course).

       -s {value}, --scroll {value}
              Set scroll steps for internal variable _steps (default is 20%).

       --slideshow {number}
              Interruptible  slideshow  mode;  will  wait   for   {number}   of   seconds   (assigned   to   the
              _want_sleep_seconds     variable     after     each     loading;    implemented    by    executing
              while(_fileindex<_filelistlen){sleep _want_sleep_seconds; next;} as a first command.

       -S, --sanity-check
              A quick sanity check before starting the interactive fim execution, but after the initialization.

       -t, --no-framebuffer
              Fim will not use the framebuffer but the aalib (ASCII art) driver instead (if you are curious, see
              (info  aalib)).  If aalib was not enabled at tompile time, fim will work without displaying images
              at all.

       -T {terminal}, --vt {terminal}
              The terminal will be used as virtual terminal device file (as in fbi).  See  (chvt  (1)),  (openvt
              (1)) for more info about this.  Use (con2fb (1)) to map a terminal to a framebuffer device.

       --sort Sort files list before browsing according to full filename.

       --sort-basename
              Sort files list before browsing according to file basename's.

       -u, --random
              Randomly shuffle the files list before browsing (seed depending on time() function).

       --random-no-seed
              Randomly shuffle the files list before browsing (no seeding).

       -v, --verbose
              Be verbose: show status bar.

       -V, --version
              Display  program version, compile flags, enabled features, linked libraries information, supported
              filetypes/file loaders, and then terminate.

       -w, --autowidth
              Scale the image according to the screen width.

       --no-auto-scale
              Do not scale the images after loading (will set '_scale_style=" "';).

       --autowindow
              Will resize the window size (if supported) to the image size. Don't  use  this  with  other  image
              scaling options.

       --no-stat-push
              Sets  _push_checks=0  before initialization, thus disabling file/dir existence checks with stat(2)
              at push push time (and speeding up startup).

       -H, --autoheight
              Scale the image according to the screen height.

       -W {scriptfile}, --write-scriptout {scriptfile}
              All the characters that you type are recorded in the file {scriptout}, until you exit  Fim.   This
              is  useful  if  you want to create a script file to be used with "fim -c" or ":exec" (analogous to
              Vim's -s and ":source!").  If the {scriptout} file exists, it will be not  touched  (as  in  Vim's
              -w).

       -, --read-from-stdin
              Read file list from stdin: each line one file.

              Note  that  these the three standard input reading functionalities (-i,-p and -) conflict : if two
              or more of them occur in fim invocation, fim will exit with an error and warn about the ambiguity.

              See the section INVOCATION EXAMPLES below to read some useful (and unique) ways of employing fim.

       --read-from-stdin-elds <arg>
              Specify an endline delimiter string for breaking lines read  via  -/--read-from-stdin.  Line  text
              before  the  delimiter  will  be treated as names of files to load; the text after will be ignored
              until a newline. This is useful e.g. to description files as filename list files.

       -A, --autotop
                         Align images to the top (UNFINISHED).

       -q, --quiet
              Quiet mode. Sets _display_status=0;_display_busy=0;.

       -r {resolution}, --resolution {resolution}
                         Set resolution (UNFINISHED).

       -R, --recursive
                         Push files/directories to the files list recursively.

PROGRAM RETURN STATUS

       The program return status is 0 on correct operation; 252 on unsupported device specification; 248 on  bad
       input; 255 on a generic error; 42 on a signal-triggered program exit;  or a different value in case of an
       another error.
        The return status may be controlled by the use of the quit command.

COMMON KEYS AND COMMANDS

       The following keys and commands are hardcoded in the minimal configuration. These are working by default before any config loading, and before the hardcoded config loading (see variable _fim_default_config_file_contents).

        n    goto '+1f'
        p    goto '-1f'
        +    magnify
        -    reduce
        h    pan 'left'
        l    pan 'right'
        k    pan 'up'
        j    pan 'down'
        q    quit
       You can type a number before a command binding to iterate the assigned command:
       3k    3pan 'up'

       :       enter command line mode
       :{number}       jump to {number}^th image in the list
       :^           jump to first image in the list
       :$           jump to last image in the list
       :*{factor}      scale the image by {factor}
       :{scale}%       scale the image to the desired {scale}
       :+{scale}%       scale the image up to the desired percentage {scale} (relatively to the original)
       :-{scale}%       scale the image down to the desired percentage {scale} (relatively to the original)

       /{regexp}       entering the pattern {regexp} (with /) makes fim jump to the next image whose filename matches {regexp}
       /*.png$         entering this pattern (with /) makes fim jump to the next image whose filename ends with 'png'
       /png       a shortcut for /.*png.*

       !{syscmd}      executes the {syscmd} quoted string as a "/bin/sh" shell command

       You can visualize all of the default bindings invoking fim --dump-default-fimrc | grep bind .
       You can visualize all of the default aliases invoking fim  --dump-default-fimrc | grep alias .

       The Return vs. Space key thing can be used to create a file list while reviewing the images and  use  the
       list for batch processing later on.

       All  of the key bindings are reconfigurable; see the default fimrc file for examples on this, or read the
       complete manual: the FIM.TXT file distributed with fim.

AFFECTING ENVIRONMENT VARIABLES

       FBFONT         (just like in fbi) a Linux consolefont font file.
       If using a gzipped font, the zcat program will be used to uncompress it (via execvp(3)).
       If not specified, the following files will be probed and the first existing will be selected:

       /usr/share/consolefonts/Uni3-TerminusBoldVGA14.psf.gz
       /usr/lib/kbd/consolefonts/lat9-16.psf.gz
       /usr/share/consolefonts/lat1-16.psf
       /usr/share/consolefonts/lat1-16.psf.gz
       /usr/share/consolefonts/lat1-16.psfu.gz
       /usr/share/kbd/consolefonts/lat1-16.psf
       /usr/share/kbd/consolefonts/lat1-16.psf.gz
       /usr/share/kbd/consolefonts/lat1-16.psfu.gz
       /usr/lib/kbd/consolefonts/lat1-16.psf
       /usr/lib/kbd/consolefonts/lat1-16.psf.gz
       /usr/lib/kbd/consolefonts/lat1-16.psfu.gz
       /lib/kbd/consolefonts/lat1-16.psf
       /lib/kbd/consolefonts/lat1-16.psf.gz
       /lib/kbd/consolefonts/lat1-16.psfu.gz
       /lib/kbd/consolefonts/Lat2-VGA14.psf.gz
       /lib/kbd/consolefonts/Lat2-VGA16.psf.gz
       /lib/kbd/consolefonts/Lat2-VGA8.psf.gz
       /lib/kbd/consolefonts/Uni2-VGA16.psf.gz
       /usr/share/consolefonts/default8x16.psf.gz
       /usr/share/consolefonts/default8x9.psf.gz
       /usr/share/consolefonts/Lat15-Fixed16.psf.gz
       /usr/share/consolefonts/default.psf.gz
       fim://

       If the special fim:// string is specified, a hardcoded font will be used.
       FBGAMMA        (just like in fbi) gamma correction (applies to dithered 8 bit mode only). Default is 1.0.
       FRAMEBUFFER    (just like in fbi) user set framebuffer device file (applies only to the fb mode).
       If unset, fim will probe for /dev/fb0.
       TERM      (only in fim) will influence the output device selection algorithm, especially if $TERM=="screen".
       DISPLAY   If this variable is set, then the sdl driver will be probed by default.

COMMON PROBLEMS

       fim needs read-write access to the framebuffer devices (/dev/fbN or /dev/fb/N), i.e you (our your  admin)
       have  to  make sure fim can open the devices in rw mode.  The IMHO most elegant way is to use pam_console
       (see /etc/security/console.perms) to chown the devices to the user logged in on the console.  Another way
       is to create some group, chown the special files to that group and put the users which are allowed to use
       the framebuffer device into the group.  You can also make the special files world writable, but be  aware
       of the security implications this has.  On a private box it might be fine to handle it this way through.

       If using udev, you can edit : /etc/udev/permissions.d/50-udev.permissions and set these lines like here :
        # fb devices
        fb:root:root:0600
        fb[0-9]*:root:root:0600
        fb/*:root:root:0600

       fim  also  needs  access to the linux console (i.e. /dev/ttyN) for sane console switch handling.  That is
       obviously no problem for console logins, but any kind of a pseudo tty (xterm, ssh, screen, ...) will  not
       work.

INVOCATION EXAMPLES

       fim media/
       # Will load files from the directory media.

       fim -R media/ --sort
       # Will open files found by recursive traversal of directory media, then sorting the list.

       find /mnt/media/ -name *.jpg | fim -
       # Will make fim read the file list from standard input.

       find /mnt/media/ -name *.jpg | shuf | fim -
       # will make fim read the file list from standard input, randomly shuffled.

       cat script.fim | fim -p images/*
       #  Will  make  fim  read  the script file script.fim from standard input prior to displaying files in the
       directory images

       scanimage ... | tee scan.ppm | fim -i
       # Will make fim read the image scanned from a flatbed scanner as soon as it is read

       fim * > selection.txt
       # Will output the file names marked interactively with the 'list "mark"' command in fim to a file.

       fim * | fim -
       # will output the file names marked with 'm' in fim to a second instance of fim, in which these could  be
       marked again.

       fim -c 'pread "vgrabbj -d /dev/video0 -o png";reload'
       # will display an image grabbed from a webcam.

       fim -o aa -c 'pread "vgrabbj -d /dev/video0 -o png";reload;system "fbgrab" "asciime.png"'
       #  if running in framebuffer mode, will save a png screenshot with an ASCII rendering of an image grabbed
       from a webcam.

       fim -c 'while(1){pread "vgrabbj -d /dev/video0 -o png";reload;sleep 1;};'
       # will display a sequence of images grabbed from a webcam; circa 1 per second.

NOTES

       This manual page is neither accurate nor complete. In particular,  issues  related  to  driver  selection
       shall  be  described  more  accurately.  Also  the accurate sequence of autocommands execution, variables
       application is critical to understanding fim, and  should  be  documented.   The  filename  "<STDIN>"  is
       reserved  for  images  read from standard input (view this as a limitation), and thus handling files with
       such name may incur in limitations.  The SDL driver is quite inefficient, for a variety  of  reasons.  In
       particular,  its interaction with the readline library can be problematic (e.g.: when running in sdl mode
       without a terminal). This shall be fixed.

BUGS

       fim has bugs. Please read the BUGS file shipped in the documentation  directory  to  discover  the  known
       ones.

FILES

       /usr/local/share/doc/fim
                      The directory with Fim documentation files.

       /usr/local/etc/fimrc
                      The  system  wide  Fim  initialization  file  (executed  at  startup,  after executing the
                      hardcoded configuration).

       ~/.fimrc       The personal  Fim  initialization  file  (executed  at  startup,  after  the  system  wide
                      initialization file).

       ~/.inputrc     If  Fim  is  built with GNU readline support, it will be susceptible to chages in the user
                      set ~/.inputrc configuration file contents.  For details, see (man readline(3)).

SEE ALSO

       Other Fim man pages: fimgs(1), fimrc(1).
       Or related programs: fbset(1), con2fb(1), convert(1), vim(1), fb.modes(8), fbset(8), fbgrab(1), fbdev(4),
       setfont(8), xfs(1).

AUTHOR

       Michele Martone <dezperado _CUT_ autistici _CUT_ org> is the author of fim, "fbi improved".

COPYRIGHT

       Copyright (C) 2007-2016 Michele Martone <dezperado _CUT_ autistici _CUT_ org> (author of fim)
       Copyright  (C)  1999-2004 Gerd Hoffmann <kraxel _CUT_ bytesex.org> is the author of "fbi", upon which fim
       was originally based.

       This program is free software; you can redistribute it and/or modify  it  under  the  terms  of  the  GNU
       General  Public License as published by the Free Software Foundation; either version 2 of the License, or
       (at your option) any later version.

       This program is distributed in the hope that it will be useful, but WITHOUT ANY  WARRANTY;  without  even
       the  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
       License for more details.

       You should have received a copy of the GNU General Public License along with this program; if not,  write
       to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

                                          (c) 2007-2016 Michele Martone                                   fim(1)