Provided by: xzgv_0.9.1-3_amd64 bug

NAME

       xzgv - picture viewer for X, with thumbnail-based file selector

SYNOPSIS

       xzgv [options] [dir | file ...]

DESCRIPTION

       (NB:  This man page is automagically generated from xzgv's texinfo file, and so may look a
       bit odd.  We apologise for the inconvenience. :-))

       xzgv is a picture viewer for X, with a thumbnail-based file selector.  The thumbnails used
       (thumbnails  being  small `preview' versions of the pictures) are compatible with xv, zgv,
       and the Gimp. The kinds of pictures xzgv allows to be viewed  are  raster-format  pictures
       (sometimes  called  `bitmaps'  and/or  `pixmaps');  things like GIF files, JPEG files, PNG
       files, and so on.

       Most of the time, you will probably want  to  use  xzgv's  file  selector  (see  The  File
       Selector) to pick which file(s) to view. This is what appears on the left-hand side of the
       window when you  start  xzgv  as  just  `xzgv'  (see  Options).  It  displays  a  list  of
       subdirectories  and  picture  files in the current directory, along with small `thumbnail'
       versions of the pictures if they exist. (If no thumbnails appear in a given directory,  or
       if  they  are  missing  for  some  files,  you can create/update them by pressing `u'. See
       Updating Thumbnails.)

       When you've picked a file to view, you can view it by clicking on it, or pressing `Enter'.
       This  reads  the  picture and displays it in the right-hand part of the window, the viewer
       (see The Viewer). You can then move around the picture (if it is larger than will fit)  by
       dragging  it  with  the  mouse,  or using the scrollbars, or the cursor keys. You can then
       select another image with the file selector (though you need to press `Esc' or `Tab' first
       if using the keyboard), or you can quit xzgv by pressing `q'.

       While  xzgv works much like any other X program, and is certainly mouse-friendly :-), it's
       also designed to be keyboard-friendly.  Everything in xzgv can be done entirely  from  the
       keyboard.  Much  of  this keyboard support works like the original zgv (a similar console-
       based picture viewer for Linux).

       This overview is, as you might expect, only the very simplest  of  introductions  to  what
       xzgv  can do, and describes only a very basic use of xzgv. xzgv can do a lot more; read on
       to find out what.

ACKNOWLEDGEMENTS

       xzgv was primarily written by Russell Marks,  also  the  author  of  this  manual.  It  is
       maintained by Reuben Thomas.

       Costa  Sapuntzakis  contributed  code  for  much faster JPEG thumbnail generation (to zgv,
       which I adapted for xzgv).

       The directory/file icons used were loosely based on gmc's dir-close.xpm.  I  think  Tuomas
       Kuosmanen was responsible for that, judging from the change log.

       `mkinstalldirs'  is straight from the `texinfo' package, and was written by Noah Friedman.
       (This is also used during installation.)

       Huge thanks go to the many people responsible for GTK+, without which  xzgv  would  almost
       certainly  not  have  happened.  (But  no  thanks for Electric Eyes, which was nearly nice
       enough for me not to bother with xzgv at all! :-))

       getopt*.[ch] are from the GNU libc.

OPTIONS

       Normally you'd invoke xzgv as  plain  `xzgv'  (perhaps  via  a  window  manager  menu,  or
       GNOME/KDE  menu,  etc.).  However,  you  can  directly  specify  files to view, or a start
       directory, on the command-line. In addition, there are various options.

       (If you're new to xzgv, you should probably skip the rest of this section for now and come
       back to it later.)

       The general format of the xzgv command-line goes roughly like this:

       xzgv [options] [dir | file ...]

       Two  types  of  options  are supported --- the traditional Unix single-letter options, and
       GNU-style long options. Most options can be used in either way, and both forms are  listed
       in the table below.

       Note that all options are processed after any configuration file(s).  Config file settings
       are just like the long-option names below minus the `--' (see Configuring xzgv), though  a
       few command-line options are not permitted as config file settings (e.g. `help'), and vice
       versa.

       Here's what the options do:

       `-a'
       `--auto-hide'
              Automatically hide selector when a picture is selected, allowing the viewer to  use
              the whole window.

       `--careful-jpeg'
              Enable libjpeg `fancy upsampling'. xzgv defaults to using the faster method; as the
              libjpeg documentation puts it, ``The visual impact of the sloppier method is  often
              very small.''

       `--delete-single-prompt'
              (Note  that  this  is normally enabled; use `--delete-single-prompt=off' to disable
              it.) If disabled, xzgv will  immediately  delete  a  file  when  told  to,  without
              prompting  for confirmation. (It's `single' because deleting multiple files at once
              will be supported in future, and that will have a separate prompt override.)

       `--dither-hicol'
              Use dithering in 15/16-bit, whatever the default setting is.  See  Viewer  Options,
              for  a  discussion  of benefits/drawbacks. You can also use `--dither-hicol=off' to
              disable this.

       `--exif-orient'
              In JPEG files, use Exif orientation tags (inserted  by  e.g.  digital  cameras)  to
              correct image orientation before display. See Viewer Options, for details.

       `--fast-recursive-update'
              When  doing  a  recursive  thumbnail  update, don't read existing thumbnails before
              updating. This is pretty much obsolete as of xzgv 0.7, as the speed increase is now
              negligible.  But,  it  may  still  be useful if you want to update a huge number of
              small directories for which few if any updates are needed.

       `-f'
       `--fullscreen'
              Run fullscreen, using the entire screen for xzgv's window, without even any window-
              manager decorations (window frame, title bar, etc.) if possible.

       `-G val'
       `--gamma val'
              [Not  supported  in 0.9.] Set the gamma adjustment used (see Gamma Adjustment). The
              default is 1.0. This also sets the `initial value' used when  resetting  the  gamma
              adjustment.

       `-g geom'
       `--geometry geom'
              Set  the xzgv window's geometry (position and/or size) to geom. The geometry string
              should be in the usual X format, with the extension that positions/sizes may have a
              `%' suffix meaning that they are treated as percentages of the screen width/height.
              The default geometry is `92%x85%'.

              For those unfamiliar with the way `geometry' works, here's a brief  description  of
              the  syntax.  It's  `WxH', or `+X+Y', or `WxH+X+Y', where `W' is width, `H' height,
              `X' the x position, and `Y' the y position. The first form specifies only the size,
              the second only the position --- the `WxH+X+Y' form specifies both.

              Now, the `+X+Y' bit normally specifies where the top-left of the window is. But you
              can use `-' instead of `+' for the x and/or y position, in which case it  specifies
              the  gap between the right/bottom of the window and the right/bottom of the screen.
              (Note, however, that any window frame your window manager adds  to  the  window  is
              disregarded  in this calculation, so you may need to experiment somewhat to get the
              desired position.) You can also use negative numbers with both `+' and `-'  ---  so
              `+-50+0'  puts  the  window partly off the left of the screen, and `+0--50' puts it
              partly off the bottom of the screen --- but this is of questionable value. :-)

              Finally, as mentioned above, xzgv extends this syntax by allowing you to use `%' to
              specify   percentages   of   the  screen  width/height  rather  than  pixels,  e.g.
              `50%x30%-30%-20%'. It also allows you to use real numbers such  as  `12.34',  which
              can be useful with `%'.

       `-h'
       `--help'
              Display a list of options and a terse description of what the options do.

       `--image-bigness-threshold numpix'
              Set  the boundary numpix after which images are considered `big', and are no longer
              rendered all-at-once (which gives much nicer scrolling, but is harder on memory and
              can  be  slow  for  big  images) but are instead rendered piece-by-piece. Units are
              number of pixels in image (i.e. width times height), and  the  default  is  2000000
              pixels.

       `--interpolate'
              Interpolate  between  the  picture's  pixels  when  scaling  up (see Scaling). This
              usually looks nicer, but it's rather slow.

       `--mouse-scale-x'
              If enabled, control-clicking on the viewer scales only the X axis. (The default  is
              to scale only the Y axis.)

       `--revert-orient'
              (Note  that  this is normally enabled; use `--revert-orient=off' to disable it.) If
              disabled, orientation (flip/mirror/rotate) state is retained between pictures  (see
              Viewer Options).

       `--revert-scale'
              (Note  that  this  is normally enabled; use `--revert-scale=off' to disable it.) If
              disabled, scaling is retained between pictures (see Viewer Options).

       `--selector-width'
              Set the default/initial size of the selector in pixels. The normal setting is 200.

       `-T'
       `--show-tagged'
              Show names of currently-tagged files on exiting xzgv. (They're  listed  to  stdout,
              one  per  line.)  This  can  be  useful  when  you  want  to  select multiple files
              graphically and work on them with something else.

       `--show-thumbnail-messages'
              Show on the status bar when thumbnails are being  read.  The  status  bar  must  be
              enabled for these messages to be visible, of course. :-)

       `-k'
       `--skip-parent'
              For  the  first directory shown, skip the cursor past .. (the parent dir). This can
              be useful when you'd like to immediately use space to `page' through the dir.

       `-o order'
       `--sort-order order'
              Set the initial sorting order used in the selector. Possible settings  are  `name',
              `ext',  `size',  and  `date'  (or  `time');  only  the  first  char  of the setting
              (`n'/`e'/`s'/`d'/`t') need be given. The default is name order.

       `--sort-timestamp-type type'
              Set the timestamp type  to  use  when  using  time/date  sorting  order.   Possible
              settings  are  `mtime'  (default), `ctime', and `atime'; only the first char of the
              setting (`m'/`c'/`a') need be given.

       `--statusbar'
              Show a status bar below the selector; this, for example, says  when  a  picture  is
              being read.

       `-t'
       `--thin-rows'
              Use  rows  a  third  the  normal height in the selector. This can be very useful on
              lower-resolution  screens,  or  if  you're  really  interested  in  filenames,  not
              thumbnails.

       `-v'
       `--version'
              Show version number.

       `--version-gtk'
              Show version number of GTK+ xzgv is using.

       `-z'
       `--zoom'
              Fit picture to viewer window, whatever its actual size (see Zoom Mode).

       `-r'
       `--zoom-reduce-only'
              When  in  zoom  mode,  only reduce pictures to fit; i.e. make big pictures viewable
              all-at-once while leaving small picures intact.

       If started with `xzgv files', xzgv hides the file selector and treats the file or files as
       if  they  were  the  sole  contents of a directory. (It also automatically loads the first
       file.) As such, you can use the Next Image and Previous Image commands to navigate between
       the images, or do Exit to Selector and use the selector directly.

       If  started with `xzgv start-dir', xzgv starts up as usual, but with the selector starting
       on the directory specified (rather than the current directory).

       Settings which are either on or off (boolean) are, as you might expect, enabled  by  using
       e.g. `-z' or `--zoom'. However, there's an alternative long-option form for setting these,
       resembling how they're set in config files --- the syntax is `--option=state', where state
       is  `on'/`y'/`yes'/`1' to enable the option, or `off'/`n'/`no'/`0' to disable it. The most
       useful thing about this is that it allows you to disable  options  which  were  previously
       enabled, by using e.g. `--zoom=off'.

       (Readers  used  to  the  way  GNU-style  long  options  work  should note that, since this
       `on'/`off'/etc. arg is optional, you can't use the `--option arg' form in  this  case;  it
       must be `--option=arg' for it to work.)

A NOTE ON NOTATION

       Much  of  this  manual is taken up by a description of xzgv's various commands in its file
       selector and viewer. Most of these are available both from the keyboard,  and  from  popup
       menus.  (A  popup  menu  appears  when  you  press  `F10' or `Menu', or right-click on the
       selector or the viewer; each has its own menu.) So in  the  manual,  you  will  often  see
       things rather like this:

       `key'
       `Selector menu, Menu the item is in, Menu item'
              Description of what the key/menu item does.

       Sometimes  the  key  given  has  a `(Selector)' or `(Viewer)' suffix; this is because some
       keypresses in xzgv are specific to the selector or the viewer, and won't work  unless  the
       relevant part of xzgv has the keyboard focus.

THE FILE SELECTOR

       Usually,  on  starting up xzgv, you'll want to use the file selector --- the list of files
       on the left. (The other subwindow (on the right) is the viewer.)  The  selector  lets  you
       pick  files to view (among other things). It lists the subdirectories and picture files in
       the current directory, along with small `thumbnail'  versions  of  the  pictures  if  they
       exist.

THE SELECTOR MENU

       Almost  all selector commands are available from the selector's pop-up menu, which appears
       when you right-click anywhere on the selector. (You can also  press  `F10'  or  `Menu'  to
       bring  up the menu, but as there are keyboard shortcuts for just about everything in xzgv,
       this isn't often that useful. :-))

       Usually, it doesn't matter where on the selector you right-click.  However, a few commands
       on  the  File  menu  operate  on a single file, the one selected by the keyboard cursor. A
       problem when using the mouse, you  might  think  ---  but  when  you  right-click  on  the
       selector,  as  well  as popping up the menu, xzgv moves this cursor to the file you right-
       clicked on (if any). (You can see this by the way a hollow box is drawn around the  file.)
       So  to  use  e.g.  Details  on the File menu, you need to right-click on the file you want
       details on.

       Both the selector and viewer have `Help' menus, most items of  which  refer  you  to  this
       manual:

       `F1'
       `Selector menu, Help, Contents'
       `Viewer menu, Help, Contents'
              View the manual's overall contents.

       `Selector menu, Help, The File Selector'
              View the manual's section on the file selector.

       `Viewer menu, Help, The Viewer'
              View the manual's section on the viewer.

       `Selector menu, Help, Index'
       `Viewer menu, Help, Index'
              View the manual's concept index.

       `Selector menu, Help, About'
       `Viewer menu, Help, About'
              Give some brief information about xzgv, including the version number and homepage.

       Currently,  the  way  xzgv  lets  you  read  the manual is a bit crude; it runs the `info'
       program (see Top in the info-stnd info file) in an `xterm'.

EXITING XZGV

       You can exit xzgv either by using  one  of  two  exit  keypresses,  or  by  selecting  the
       appropriate option from the selector's popup menu:

       `q'
       `Ctrl-q'
       `Selector menu, Exit xzgv'
              Quit xzgv.

       (There's also an exit option on the selector's File menu (`Selector menu, File, Exit'), as
       `Exit' is generally on any File menu.)

THUMBNAILS

       (This section is deliberately early on in the manual, as thumbnails are probably the  most
       important  feature  of  the file selector, so it's best that you know how to create/update
       them sooner rather than later.)

       Thumbnails are small versions of the pictures they represent, and  are  displayed  by  the
       file  selector  if  they  exist.  xzgv  uses  xv-compatible  thumbnails  --- if you create
       thumbnails with xv they will work with xzgv, and vice versa. xzgv's  thumbnails  are  also
       compatible with the Gimp, and zgv.

       If no thumbnail exists for a file, a small `document' icon appears instead (similar to the
       `folder' icon used for directories).

   Updating Thumbnails
       While thumbnails can be made relatively quickly, it's by no means an instant process.  For
       this  reason,  thumbnails  have to be created in advance, and are stored as files in their
       own right in a subdirectory .xvpics.

       xzgv never creates/updates thumbnails without you telling  it  to.  So,  if  you  enter  a
       directory  where the picture files don't have any thumbnails, or where the thumbnails seem
       to be out of date, you should press `u', or select Update Thumbnails from  the  selector's
       menu.   (Even  if  the  thumbnails  can't be written (say, if you don't have permission to
       write them), the selector will still show the  updated  thumbnails  until  you  leave  the
       directory.)

       Alternatively,  you  can  create/update  thumbnails  for  the  current  directory  and all
       subdirectories by using `Alt-u' or Recursive Update. But be warned that a recursive update
       can take some time!

       `u'
       `Selector menu, Update Thumbnails'
              Create  thumbnails for any files which don't have them, and update thumbnails which
              are older than the corresponding file. While this is going  on,  a  window  appears
              showing how far through the process xzgv is.

              While the update is in progress, you can abort it by clicking on the Cancel button,
              or pressing `Esc' or `Enter', or by clicking  the  delete-window  button  (if  your
              window  manager provides one) on the title bar. xzgv will stop once it has finished
              the thumbnail it is currently working on (if any).

       `Alt-u'
       `Selector menu, Recursive Update'
              Create/update  thumbnails  for  all  files  in  the  current  directory   and   all
              subdirectories.  This can take some time, so you are prompted to confirm you really
              want to do this (see Dialog Boxes). Progress is indicated in much the same  way  as
              for  a  normal  update,  but only for the directory currently being updated --- the
              overall progress is not indicated, other than by the current dir  being  (as  ever)
              displayed in the main window's title. You can abort a recursive thumbnail update in
              the same ways as for a normal update (see above).

              By default, xzgv behaves a little oddly when doing a recursive update, to give some
              consistency with the normal update. See Thumbnail Issues, for details.

   Thumbnail Issues
       Dealing  with  thumbnails  can  be  `interesting'  at times, and there are a few ways this
       influences things:

       - xzgv doesn't read the thumbnails in a directory all at once. Instead, it just reads  the
       directory  contents,  then starts up what is effectively a kind of background task to read
       in the thumbnails. So xzgv may not be quite as responsive as usual for a short time  after
       entering  a directory with many thumbnails (say, a few hundred) --- but on the other hand,
       at least it is responding. :-)

       - The `background task' makes a special effort to show thumbnails for the files  currently
       visible  in  the selector first, no matter how much you move around the list, but it reads
       them all in eventually.

       - The thumbnails used in xzgv require 256 colours to display. This can  be  a  problem  if
       you're  running  X in 256 colours or less as, even if you're running an 8-bit (256 colour)
       server, there will almost inevitably be fewer colours available. Currently, xzgv just uses
       whatever  gdk  reports  as the closest match to each individual colour used in thumbnails.
       This gives a tolerable result on 8-bit servers, assuming gdk was able to allocate a  large
       number  of  colours;  however,  it gives terrible results if it couldn't, or if running on
       4-bit or 1-bit servers. Sorry about this --- it should be fixed in future (either by using
       gdk  to  draw  the  thumbnail  pixmaps, or by dithering them `by hand' to suit the colours
       available).

       - Finally, when doing a recursive thumbnail  update,  xzgv  (by  default)  reads  existing
       thumbnails  in  a  directory before updating any. Or rather, it reads thumbnails for those
       files currently visible in the selector.  This can slow things  down  very  slightly,  but
       keeps  the `look and feel' consistent with the normal update. (Still, you can disable this
       with the `--fast-recursive-update' command-line option (see Invoking xzgv)  or  equivalent
       config file entry (see Configuring xzgv).)

SELECTOR LAYOUT AND RESIZING

       The  file  selector  is  simply  a  list  of  subdirectories and filenames, along with any
       thumbnails that exist for them. The list is normally in asciibetical order  (but  you  can
       change  this;  see  Changing the Sorting Order). Names of directories are shown first, and
       they are shown in order at the beginning of the list, before all the picture  files.  Long
       filenames  may not fit in the visible part of the file selector display; if so, there will
       be a horizontal scrollbar you can use to see the rest of the name(s) (you can  use  cursor
       left/right to do this from the keyboard).

       The  list  is  very  often larger than can fit on the screen at once. If this is the case,
       only part is shown at a time, but you can  move  around  the  list  using  the  (vertical)
       scrollbar, or with cursor up/down and the like.

       If  you  find  the  selector window to be too small vertically, and would like to see more
       files at once, you can start xzgv fullscreen by using the -f option (see Options),  and/or
       use `thin rows' mode (see File Selector Options).

       If  you  find  the  selector  too  small (or too big) horizontally, you can change this by
       moving the splitter line's `handle' (a  small  square  button  between  the  selector  and
       viewer,  near  the bottom of the window), which changes the relative sizes of the selector
       and viewer. You can move it by dragging it with the mouse, or with these keys:

       `['
              Move the window split left.

       `Ctrl-['
              Move the window split left more slowly.

       `]'
              Move the window split right.

       `Ctrl-]'
              Move the window split right more slowly.

       `~'
              Reset the window split to its default position.

       You can also set the initial/default size of the selector --- in effect, the  position  of
       the  window  split  ---  using  `--selector-width' (see Options) or the config file option
       `selector-width'.

MOVING AROUND THE LIST

       This section is mainly for those of us more inclined to the keyboard side  of  the  force.
       :-) Mouse-happy types can freely skip it.

       When  the selector has the keyboard focus, the cursor (or in GTK+ jargon, the `focus row')
       is normally shown as a hollow box around one of the list's rows. This serves the following
       functions:

       - It selects a file for view commands to operate on.

       -  It  determines  which part of the list is shown, as the part of the list shown onscreen
       always contains the cursor (unless you move around using the mouse).

       There are several commands for moving the cursor. In summary, most `special' keys like the
       cursors do what you'd imagine they do, but in more detail:

       `Cursor Up'
       `k'
              Move up.

       `Cursor Down'
       `j'
              Move down.

       `Page Up'
       `Ctrl-u'
              Move the cursor back roughly a page.

       `Page Down'
       `Ctrl-v'
              Move the cursor forward roughly a page.

       `Ctrl-Home'
       `Ctrl-a'
              Move the cursor to the start of the list.

       `Ctrl-End'
       `Ctrl-e'
              Move the cursor to the end of the list.

       `g'
       `''
              Move  the  cursor  to  the first filename starting with the next key pressed, which
              would generally be a letter or  number.  Case  is  significant;  `a'  and  `A'  are
              different. If no key is pressed within 2 seconds, the command is cancelled.

              If  no  files  start with the specified character, it moves to the first file which
              starts with a later char (in asciibetical order). If there are none for which  this
              is  the  case,  it  moves  to  the  last  file  --- unless there are no files (just
              directories), in which case it has no effect.

VIEWING A FILE

       To view a file from the selector, you can click on it, or press `Enter' after  moving  the
       cursor to the relevant file, or right-click on the file and choose `File' then `Open'.

       `Enter'
       `Left-click-on-file'
       `Selector menu, File, Open'
              View the chosen picture file, or if a subdirectory is chosen, make that the current
              directory.

DIALOG BOXES

       See The Viewer, for details of how the viewer  works.   If  xzgv  has  a  serious  problem
       reading  a  file,  it will give an error.  Errors are shown in dialogs which appear in the
       middle of the screen --- they stay there until you click Ok (or press `Enter' or `Esc').

       xzgv also uses similar dialog boxes for other things:

       - Getting confirmation that you want to do something. `Enter' or `y' picks `yes'; `Esc' or
       `n' picks no. (Again, you can click on the relevant button with the mouse to do the same.)

       -  Showing  progress when updating a thumbnail. This is a slightly unusual dialog, in that
       it automatically disappears when the update is  complete.   However,  it  does  provide  a
       Cancel  button which you can click to abort the update (pressing `Enter' or `Esc' does the
       same).

       - Reading a directory name. Here you should type the directory  name  then  click  Ok  (or
       press  `Enter'),  or  click Cancel (or press `Esc') to abort. The text-input `widget' used
       allows a certain amount of editing, including these keys:

       `Cursor Left'
       `Ctrl-b'
              Move the cursor left. (A vertical bar shows the cursor position.)

       `Cursor Right'
       `Ctrl-f'
              Move the cursor right.

       `Home'
       `Ctrl-a'
              Move the cursor to the start of the line.

       `End'
       `Ctrl-e'
              Move the cursor to the end of the line.

       `Backspace'
       `Ctrl-h'
              Delete char to the left of the cursor. (Note that `Backspace' is (usually) the  key
              above the main `Enter' key; it is often labelled simply as an arrow.)

       `Delete'
       `Ctrl-d'
              Delete the char the cursor is on.

       You  can  also  set  the X selection (by selecting text with the mouse, or holding `Shift'
       while moving the  cursor)  to  allow  pasting  text  into  other  programs,  and  you  can
       cut/copy/paste text in the usual ways:

       `Shift-Delete'
       `Ctrl-x'
              Cut text.

       `Ctrl-Insert'
       `Ctrl-c'
              Copy text.

       `Shift-Insert'
       `Ctrl-v'
              Paste text.

       You can paste text from (some) other programs using the latter command, too.

CLOSING A FILE

       Usually,  when  you view a file, the viewer subwindow keeps displaying it until you view a
       different file. However, if you `close' the file, the viewer stops displaying the file and
       returns to its initial state.

       `Ctrl-w'
       `Selector menu, File, Close'
              `Close' the currently-viewed file, clearing the viewer subwindow.

FILE DETAILS

       The  listing  the selector gives for a file is pretty sparse --- just the filename and (if
       the file has one) the accompanying thumbnail. While this  does  keep  things  simple,  you
       sometimes  want  to  know  how  much space a file takes up, when it was last modified, the
       dimensions of the image, that kind of thing. So, you can show details  of  a  single  file
       using the `file details' command:

       `:'
       `;'
       `Selector menu, File, Details'
              Show  various  details  about  the file pointed to by the keyboard cursor.  See The
              Selector Menu, for how to choose the file details are  given  for  when  using  the
              mouse. (Basically, you right-click on the file when popping up the menu.)

       Most  of  the  details  shown  come  from the OS (by using the `stat(2)' system call), and
       should always be available unless you have limited permissions for the directory the  file
       is  in. The file dimensions (width/height), however, come from the file's thumbnail. If it
       doesn't have one, or if it's unreadable, or if it has one and it's readable but it doesn't
       mention  the original image's width/height, then the Details from thumbnail area is greyed
       out.

       (In explanation of the  latter  point  ---  pre-5.0  versions  of  zgv  did  not  generate
       width/height  comments in thumbnails, so zgv users in particular may find the width/height
       details missing. (xzgv has always been ok, though, it's just zgv which had this  problem.)
       Worse yet, versions 5.0 and 5.1 generated them with incorrect sizes for most JPEGs. To fix
       either problem for a given directory, do `rm -fr .xvpics' in that dir from a shell  prompt
       and recreate the thumbnails with zgv 5.2 or later, or xzgv/xv/Gimp.)

TAGGING

       The  file  selector  is not restricted to working on one file at a time.  You can `tag' as
       many (or as few) files as you wish, and certain commands described in  this  section  will
       act on them.

       Initially,  all files are untagged, and the filenames usually appear in black (though this
       depends on the GTK+ theme you're using). Tagged files appear in red.

   Tag and Untag Commands
       There are several ways to tag or untag  files.  The  keyboard-based  ones  which  work  on
       individual  files  (also  available  on  the  Tagging  menu)  move the cursor down one row
       afterwards, to make tagging or untagging multiple files easier.

       To tag or untag a single file with the mouse, control-click (i.e. hold  down  the  control
       key  and  click) on the relevant filename or thumbnail in the selector. It's true that you
       could use Tag and/or Untag on the Tagging menu (see The Selector Menu, for how  to  choose
       the file tagged/untagged when doing it this way), but this is usually much less convenient
       than using control-click. (The menu entries for those are really just for completeness.)

       There is also a command available in the viewer to  tag  the  currently-viewed  file.  See
       Changing Picture, for details.

       `='
       `+'
       `Keypad +'
       `0'
       `Selector menu, Tagging, Tag'
              Tag file.

       `-'
       `Keypad -'
       `9'
       `Selector menu, Tagging, Untag'
              Untag file.

       `Alt ='
       `Alt-Keypad +'
       `Alt-0'
       `Selector menu, Tagging, Tag All'
              Tag all files.

       `Alt -'
       `Alt-Keypad -'
       `Alt-9'
       `Selector menu, Tagging, Untag All'
              Untag all files.

       `Alt-o'
       `Selector menu, Tagging, Toggle All'
              Toggle all tags. This inverts the tagged state, so that all previously tagged files
              become untagged, and all previously untagged files become tagged.

       Currently there is no way to toggle a (single) file's tag state from the keyboard.

   Moving Between Tagged Files
       These commands let you search for (move to) the next or previous  tagged  file  (if  any).
       Note  that  `next'  and `previous' here are relative to the keyboard cursor's position; if
       you use these from the menu, be careful to right-click on the file you want to  start  the
       search from.

       `/'
       `Selector menu, Tagging, Next Tagged'
              Move to next tagged file in dir.

       `?'
       `Selector menu, Tagging, Previous Tagged'
              Move to previous tagged file in dir.

       Equivalent commands are also available in the viewer (see Changing Picture).

   Copying/Moving Files
       You can copy or move tagged files to a directory you specify. If no files are tagged, xzgv
       copies/moves the file  the  cursor  is  currently  on  ---  unless  the  cursor  is  on  a
       subdirectory, in which case it gives an error.

       `C (Shift-c)'
       `Selector menu, File, Copy'
              Copy  tagged  files  (or  the current file) to a given directory. xzgv asks for the
              destination directory using a dialog (see Dialog Boxes) and copies the files there.
              If  it  comes to copy a file but there is an existing file in the dir with the same
              name, the file is not copied and nor are any of the remaining files.

       `M (Shift-m)'
       `Selector menu, File, Move'
              Move tagged files (or the current file) similarly.

RENAMING A FILE

       As well as copying/moving files, you can rename them:

       `Ctrl-n'
       `Selector menu, File, Rename file'
              Rename the current file or directory --- xzgv will refuse to overwrite any existing
              files/directories.  The  new  name  must  remain  in  the  current  directory. (See
              Copying/Moving Files, for how to move a  file  to  a  different  directory  (albeit
              keeping  the same name).) See The Selector Menu, for how to choose the file renamed
              when using the mouse.  (Basically, you right-click on the file when popping up  the
              menu.)

       I  know  `Ctrl-n' isn't the most mnemonic keypress possible for `rename', but all the good
       ones were taken. :-/

DELETING A FILE

       Deleting a file is pretty straightforward:

       `Ctrl-d'
       `Selector menu, File, Delete file'
              Delete the file pointed to by the keyboard cursor (and any accompanying thumbnail).
              See  The  Selector  Menu,  for how to choose the file deleted when using the mouse.
              (Basically, you right-click on the file when popping up the menu.)

       Note that only one file is deleted (hence `Delete file'); there is  currently  no  way  to
       delete all tagged files.

CHANGING DIRECTORY

       The easiest way to change the current directory in xzgv is usually to click on a directory
       entry in the file list (or move the cursor to it and press `Enter').  Selecting  the  `..'
       entry moves to the parent directory of the current one.

       There is an alternative though:

       (Note that the key for this command is shift-`g', not `g'.)

       `G'
       `Selector menu, Directory, Change'
              Go to a specified directory. xzgv asks for the destination directory using a dialog
              box which you should type the dir's name into (see Dialog Boxes), and moves to that
              directory if it exists.

RESCANNING THE DIRECTORY

       Normally,  xzgv  reads  a  directory  once  (on  starting  up,  or when a new directory is
       selected). So if the contents of the directory are changed by another program, this is not
       automatically  reflected. You can, however, explicitly tell xzgv to `rescan' the directory
       (reread the contents), which will update xzgv's notion of what's in it:

       `Ctrl-r'
       `Selector menu, Directory, Rescan'
              Rescan the current directory.

CHANGING THE SORTING ORDER

       Normally, the files are listed in asciibetical order by name.  However,  you  can  instead
       have  the  file  list sorted by size, last-modified date/time, or by `extension' (the file
       type).

       (Only the order of files can be altered; directories are always listed first,  and  always
       in name order.)

       `Alt-n'
       `Selector menu, Directory, Sort by Name'
              Sort by name. This is the default.

       `Alt-e'
       `Selector menu, Directory, Sort by Extension'
              Sort by extension.

       `Alt-s'
       `Selector menu, Directory, Sort by Size'
              Sort by size. The biggest files are listed last.

       `Alt-d'
       `Selector menu, Directory, Sort by Time & Date'
              Sort by time/date. The newest files are listed last.

       You  can  set  the default sort order via the command-line (see Invoking xzgv) or a config
       file (see Configuring xzgv).

       There are three possible timestamps you can use for the `Time & Date' sorting order:

       `Alt-Shift-m'
       `Selector menu, Directory, Time & Date Type, Modification Time (mtime)'
              Use the last-modified time (`mtime'). This is the default.

       `Alt-Shift-c'
       `Selector menu, Directory, Time & Date Type, Attribute Change Time (ctime)'
              Use the last-attribute-change time (`ctime'). Note that this is not always the time
              the file was created, which it's sometimes mistaken for; for example, moving a file
              with `mv' will usually change the ctime.

       `Alt-Shift-a'
       `Selector menu, Directory, Time & Date Type, Access Time (atime)'
              Use the last-accessed time (`mtime').  The  selector  order  is  not  automatically
              updated  when  xzgv reads files, since this would probably be annoying; do a manual
              rescan if need be.

FILE SELECTOR OPTIONS

       Various aspects of the file selector's behaviour can be configured while xzgv is  running,
       by  using  these  toggle commands (which enable the feature if it was previously disabled,
       and vice versa).

       These settings can also be altered using command-line options (see Options) and/or  config
       file settings (see Configuring xzgv).

       `Alt-a'
       `Selector menu, Options, Auto Hide'
              Toggle  the  auto-hiding of the selector when a picture is viewed (off by default).
              This is handy for small screens/windows, or for old-time zgv  users  who  just  dig
              that groovy modal interface, er, man. :-)

       `Alt-b'
       `Selector menu, Options, Status Bar'
              Toggle  status  bar  at  the bottom of the selector (off by default). This displays
              messages in certain circumstances --- normally, it just  says  when  a  picture  is
              being read.

       `Selector menu, Options, Thumbnail Msgs'
              Toggle reading-thumbnails messages (default is off), only visible if the status bar
              is enabled. These messages make it clear when all thumbnails have  been  read,  but
              having  something  flash  up  every  time  you  change  directory is generally just
              annoying.

       `v'
       `Selector menu, Options, Thin Rows'
              Toggle `thin rows' mode (off by default), in which thumbnails are shown at a  third
              their  normal  size so that many more files can be shown at once. (The odd keyboard
              shortcut for this is inherited from zgv's `visual' mode toggle, which had a roughly
              similar effect.)

THE VIEWER

       Once  you've  selected  a  file  to view, it's shown in the viewer (the right-hand part of
       xzgv's window). This section describes what you can do while viewing the picture.

       Like the selector, the viewer has its own menu --- right-click anywhere on the viewer  (or
       press `F10' or `Menu') to show it --- and a similar help menu (see The Selector Menu).

EXITING THE VIEWER

       When using the mouse to control xzgv, it doesn't matter whether the selector or the viewer
       has keyboard focus --- mouse operations transcend such petty boundaries. :-) But  keyboard
       control is (of necessity) effectively modal, and so you need to `exit' the viewer in order
       to have keyboard control over the selector again. You also need  to  exit  the  viewer  if
       you've enabled auto-hide mode.

       Exiting the viewer is simple:

       `Esc'
       `Tab'
       `Viewer menu, Exit to Selector'
              Exit  the  viewer.  This  also  returns  the selector to its former size, if it was
              previously `hidden'.

       Another way of exiting the viewer is to middle-click on it, but this  mouse-only  approach
       is really only of use when the selector is `hidden'.

BIG PICTURES

       A  picture may well be too large to fit entirely in the viewer window.  There are two main
       things which can help you see more of the picture at once:

       - Make the xzgv window larger. You could `maximize' it with your window  manager,  or  you
       could start xzgv with a larger window using `--geometry' or fullscreen mode (see Options).
       The fullscreen mode gives xzgv the maximum window size possible,  but  needs  co-operation
       from your window manager (and alas, many are not as willing as one might like) --- in some
       cases you may even find `--geometry 100%x100%' to be more effective.

       - Hide the selector. To do this, either use auto-hide mode (see File Selector Options), or
       hide the selector explicitly (see Hiding the Selector).

       But  of  course,  these  are  only partial solutions to the problem; there will inevitably
       always be pictures larger than your screen can show at once. In general, then,  there  are
       two ways to see the whole of the picture.

   Scrolling
       Scrolling  is  the  default  approach to handling big pictures in xzgv. When the viewer is
       started up, the top-left of the picture is shown ---  you  can  either  drag  the  picture
       around  with  the mouse (i.e. click and hold the button down, then move the mouse around),
       or use the scrollbars, or use the cursor keys (and others) to move around the rest of  the
       picture:

       `Cursor Up'
       `K'
              Move up 100 pixels. `Ctrl-Cursor Up' and `k' both move up 10 pixels.

       `Cursor Down'
       `J'
              Move down 100 pixels. `Ctrl-Cursor Down' and `j' both move down 10 pixels.

       `Cursor Left'
       `H'
              Move left 100 pixels. `Ctrl-Cursor Left' and `h' both move left 10 pixels.

       `Cursor Right'
       `L'
              Move right 100 pixels. `Ctrl-Cursor Right' and `l' both move right 10 pixels.

       `Page Up'
       `Shift-Cursor Up'
       `Ctrl-u'
              Move up (nearly) the window height. (It moves by 90% of the height.)

       `Page Down'
       `Shift-Cursor Down'
       `Ctrl-v'
              Move down (nearly) the window height.

       `-'
       `Shift-Cursor Left'
              Move left (nearly) a window-length. (It moves by 90% of it.)

       `='
       `Shift-Cursor Right'
              Move right (nearly) a window-length.

       `Home'
       `Ctrl-a'
              Move to the top-left of the picture.

       `End'
       `Ctrl-e'
              Move to the bottom-right of the picture.

   Zoom Mode
       An  alternative  way  of  viewing  the  whole  picture, one which lets you see the picture
       onscreen all at once no matter how big (or small) it is, is zoom mode.

       Zoom mode's name derives from the idea of `zooming' a small file up to fit the window. But
       in reality, it is more often used to reduce a large file to fit.

       Zoom  mode  is not the default, and has to be enabled. Once enabled, it stays on until you
       turn it off again (or until you enable scaling, or select Normal (see Scaling)).

       `z'
       `Viewer menu, Options, Zoom (fit to window)'
              Toggle zoom mode.

       `Alt-r'
       `Viewer menu, Options, When Zooming Reduce Only'
              When in zoom mode, only reduce pictures to fit.  This  can  be  useful  when  going
              through  a lot of unpredictably-sized pictures, as it means that you can see all of
              a big picture easily without also meaning that tiny little icons assume a scale  of
              Biblical proportions. :-)

       The  way  zoom  mode reduces a file to fit the window is (relatively) quick but harsh, and
       may make the picture look a bit ugly. In future there may be a smoothing option like zgv's
       vkludge, but for now I'm afraid the fairly crude resize is all that's available.

       There is in fact an alternative to zoom mode, as you can scale down an image instead. This
       is generally only useful for very large images, however; zoom mode tends to be  the  Right
       Thing for the most part.

SCALING

       You  can  scale a picture --- this makes it appear larger (or smaller) onscreen. xzgv acts
       much as if the scaled picture were the real picture; for example, the cursor  keys  scroll
       around  in steps of 100 scaled pixels, even if this means moving a fraction of a pixel (or
       many pixels) in the original picture (and similarly for movement with the mouse).

       The main limitation of scaling (other than how much it slows things  down  :-),  at  least
       when  scaling  up) is that you can only scale by integer values, so you can only make each
       pixel in the image twice as wide/high, or three times as wide/high, or four times, and  so
       on.

       (It  may  seem  odd  saying  e.g.  `twice  as wide/high' rather than `twice the size', but
       technically `twice the size' would be referring to scaling up the width  (and  height)  by
       about 1.414...)

       Normally,  xzgv  does  no  scaling,  which could be considered a ratio of 1:1.  Scaling up
       increases that ratio. How it is increased depends on which option/key you use:

       `d'
       `Viewer menu, Scaling, Double Scaling'
              Increase the ratio by doubling it --- this leads to ratios of 2:1, 4:1, 8:1...

       `s'
       `Viewer menu, Scaling, Add 1 to Scaling'
              Increase the ratio by adding one --- leads to ratios of 2:1, 3:1, 4:1...

       There are similar commands to decrease the ratio:

       `D (Shift-d)'
       `Viewer menu, Scaling, Halve Scaling'
              Decrease the ratio by halving it.

       `S (Shift-s)'
       `Viewer menu, Scaling, Sub 1 from Scaling'
              Decrease the ratio by subtracting one.

       Usually the double/halve scalings are more useful.

       Note that you can also double/halve the scaling by using shift-left-click on the viewer to
       double,  and  shift-right-click  to halve. This still changes scale `around' the middle of
       the window though (rather than around the point clicked on, as you might expect), which is
       a little strange and may possibly be changed in future.

       When  you  scale  `below' 1:1, the above commands lead to ratios of (e.g.)  1:2, 1:4, 1:8,
       etc. --- that is, the ratios work the same way, but the other way around. This  gives  you
       an increasingly small image.

       The  scaling  ratio  is  never decreased below 1:32. It is also never increased beyond the
       point where the overall image size would exceed 32767x32767 --- this limit is due  to  the
       combination of X's limit on window sizes, and the implementation used by xzgv for scaling.

       One  problem  with  scaling up, given the way it's currently implemented, is that it's not
       well-suited to dithered display --- so if you're running on an 8-bit server, dragging  the
       image  around slowly when using scaling (especially scaling with interpolation) may result
       in some nasty, streaky, undithered-looking parts of the picture. :-(

       You can undo the effect of scaling (up or down) at any time:

       `n'
       `Viewer menu, Scaling, Normal'
              Resume `normal' display --- disables scaling mode, and also zoom mode.

       Normally, scaling up works by simply making the pixels into larger and larger squares  (in
       effect),  which  remain  the  same  colour.  However,  you  can  enable  a  feature called
       `interpolation' which smoothly graduates the colour change between the top-left corners of
       each pixel. This is very slow, but looks nice.

       `i'
       `Viewer menu, Options, Interpolate when Scaling'
              Toggle interpolation in scaling mode.

       (If you like the appearance of scaling with interpolation, you may also be interested in a
       program I wrote called pnminterp, which can scale up a PGM or PPM file while applying this
       effect. These days it's part of the netpbm package.)

       Scaling  down,  however, is implemented a bit like a special-case zoom mode, and currently
       there are no ways of making that look nicer. :-/

       xzgv normally `reverts' scaling (returning the scale to 1:1) back to normal when you  view
       a new picture. However, it's possible to disable this behaviour (see Viewer Options).

       There  is also support for an alternative form of scaling --- decoupled, or axis-specific,
       scaling. When you scale in this way, only one axis of the image is  scaled  at  once.  For
       example,  you  might  choose  to effectively double the height of an image (with the width
       left unchanged). Indeed, this  sort  of  scaling  is  useful  for  temporarily  correcting
       pictures intended for display using pixels twice as wide or high as normal.

       `x'
       `Viewer menu, Scaling, X Only, Double Scaling'
              Increase the (x axis) ratio by doubling it.

       `X (Shift-x)'
       `Viewer menu, Scaling, X Only, Halve Scaling'
              Decrease the (x axis) ratio by halving it.

       `Alt-x'
       `Viewer menu, Scaling, X Only, Add 1 to Scaling'
              Increase the (x axis) ratio by adding one.

       `Alt-Shift-x'
       `Viewer menu, Scaling, X Only, Sub 1 from Scaling'
              Decrease the (x axis) ratio by subtracting one.

       `y'
       `Viewer menu, Scaling, Y Only, Double Scaling'
              Increase the (y axis) ratio by doubling it.

       `Y (Shift-y)'
       `Viewer menu, Scaling, Y Only, Halve Scaling'
              Decrease the (y axis) ratio by halving it.

       `Alt-y'
       `Viewer menu, Scaling, Y Only, Add 1 to Scaling'
              Increase the (y axis) ratio by adding one.

       `Alt-Shift-y'
       `Viewer menu, Scaling, Y Only, Sub 1 from Scaling'
              Decrease the (y axis) ratio by subtracting one.

       There  are  also  mouse  shortcuts  for  scaling up/down a single axis; control-left-click
       scales up, and control-right-click scales down. By default this acts on the  y  axis,  but
       the  active axis can be toggled with `Alt-c', or by toggling the `Ctl+Click Scales X Axis'
       option (see Viewer Options).

       Interpolation is not currently supported in situations where the x scaling does not  match
       the y scaling.

MIRROR AND ROTATE

       Sometimes  when  viewing a picture you will want to flip it horizontally or vertically, or
       rotate it:

       `m'
       `Viewer menu, Orientation, Mirror (horiz)'
              `Mirror' the picture (flip it horizontally).

       `f'
       `Viewer menu, Orientation, Flip (vert)'
              `Flip' the picture (flip it vertically).

       `r'
       `Viewer menu, Orientation, Rotate Right'
              Rotate the picture 90 degrees clockwise.

       `R (Shift-r)'
       `Viewer menu, Orientation, Rotate Left'
              Rotate the picture 90 degrees anti-clockwise.  (Any  US  readers  surprised  and/or
              annoyed  by my not saying `counter-clockwise' will realise why the menus say rotate
              right/left. :-))

       `N (Shift-n)'
       `Viewer menu, Orientation, Normal'
              Restore the picture orientation to normal. This undoes the effect of  any  mirrors,
              flips, and/or rotations.

       xzgv  normally `reverts' the picture orientation (the way the picture has been transformed
       by mirror/flip/rotate) back to normal when you view a new picture. However, it's  possible
       to  disable  this  (see  Viewer  Options), so that any new pictures are mirrored, flipped,
       and/or rotated in the same way.

BRIGHTNESS AND CONTRAST

       [Brightness and contrast changing is not supported in xzgv 0.9.]   xzgv  provides  support
       for  changing  brightness and contrast, though given the way it has to redraw the image to
       do so, it can be a little slow.

       Currently there is no way to do this with the mouse; this should be fixed soon.

       `,'
              Decrease contrast.

       `.'
              Increase contrast.

       `<'
              Decrease brightness.

       `>'
              Increase brightness.

       `:'
       `;'
              Reset contrast and brightness to normal. (`*' is  also  supported,  for  hysterical
              raisins.) Note that this deliberately does not affect the gamma adjustment.

       Any  contrast  change is applied before any brightness change, and any gamma adjustment is
       applied before both.

GAMMA ADJUSTMENT

       [Gamma is not supported in xzgv 0.9.]  Ah yes, gamma. What fun. The basic problem is  this
       ---  differing displays have differing intensity response curves. ``This has made a lot of
       people very angry and been widely regarded as a bad move.'' :-)

       It means that you need some way of adjusting how  brightly  you  display  the  picture  to
       compensate.  But  since  we're  dealing  with response curves, this isn't just a matter of
       changing the brightness in a linear fashion.

       That doesn't seem so hard to deal with, right? All you need is to get the gamma (a  number
       which specifies how much the curve bends) for the image, and for the screen, divide one by
       the other and adjust as appropriate. Joy.

       But, given that the problem has existed  since  we  started  displaying  more  than  eight
       colours,  you  won't  be surprised to find that it's already been fixed. And the fixes all
       tend to clash, and everybody has a different notion of how to fix it. The usual  `fix'  is
       to  assume  that  whoever  made  the image made it with a gamma matching the gamma of your
       display, so you can just stuff the bits right on the screen. Since this is easy, it's  the
       most  widespread  approach.  But  it's a bit stupid, so not everyone does it. Combine that
       with the lack of gamma specification in most image formats,  and  the  often-bogus  values
       specified  by  people  in  those that do, and hey presto --- the image gamma could be just
       about anything. And the screen's gamma also tends not to be easily determined.

       So how on earth do you deal with something like that in a remotely sane fashion?

       The answer chosen in xzgv  is  to  just  live  with  the  fact  that  the  probability  of
       automatically  obtaining  correct  values for both the screen and image gamma is basically
       zero. Once you accept that, the sensible thing to do is to make it very easy and  fast  to
       change gamma adjustment to commonly-required values. So here's how to do it:

       `1'
              Set gamma adjustment to 1.0, i.e. no adjustment. This is the default setting.

       `2'
              Set  gamma  adjustment  to  2.2. This is useful for viewing linear-gamma files (one
              classic example being raytracer output) on an average PC monitor.

       `3'
              Set gamma adjustment to 1 divided by 2.2, i.e. roughly 0.45. This is useful for the
              reverse  ---  viewing  average-PC-monitor-gamma  files  on  a linear-gamma display.
              Historically I believe the classic example would have been viewing PC  files  on  a
              Mac, but I don't know how true that is these days.

       `4'
              Set gamma adjustment to its initial value, as specified by a `--gamma' command-line
              option (see Options) or equivalent config file setting (see Configuring xzgv).  The
              default value used if none was specified is 1.0.

       A  brief  clarification  is probably in order. The gamma adjustment value which you set in
       xzgv is actually inverted from (i.e. one divided by) the true adjustment value used.  This
       is  (believe it or not :-)) intended to avoid confusion by reflecting the fact that screen
       gamma is the one most widely considered/well known.

       You can also tweak the adjustment more precisely, in a similar way to brightness/contrast:

       `Alt-,'
              Decrease gamma adjustment (divide it by 1.05).

       `Alt-.'
              Increase gamma adjustment (multiply it by 1.05).

       Note that `:', and the other keys which reset the brightness/contrast, deliberately  avoid
       resetting the gamma adjustment.

       As  with  brightness/contrast,  there  is currently no way to adjust gamma with the mouse;
       this should be fixed soon. (But the 1/2/3/4 keyboard-based method is likely  to  still  be
       the faster method.)

CHANGING PICTURE

       It's  possible  to  go  directly  to  the  previous  or  next file (or tagged file) in the
       directory, or to tag a file, without having to pick the file from  the  file  selector  by
       hand.  These  commands  are  particularly  useful  when  using xzgv from the keyboard, but
       there's also a notable mouse shortcut for moving to the next image.

       `Space'
       `Viewer menu, Next Image'
              Move to next file in dir, and view it. You can also click on the picture/viewer  to
              do  this.  (If you find this interferes with dragging the picture around (though it
              shouldn't), or just don't like it, it can be disabled (see Config Variables).)

       `b'
       `Viewer menu, Previous Image'
              Move to previous file in dir, and view it.

       `Ctrl-Space'
       `Viewer menu, Tagging, Tag then Next'
              Tag current file, then move to next file in dir and view it.

       `/'
       `Viewer menu, Tagging, Next Tagged'
              Move to next tagged file in dir, and view it.

       `?'
       `Viewer menu, Tagging, Previous Tagged'
              Move to previous tagged file in dir, and view it.

HIDING THE SELECTOR

       When running on small screens, or in a small window, it can get a  bit  annoying  to  lose
       viewer  space by having the selector constantly displayed when you don't actually need it.
       The usual solution to this problem is to enable auto-hide mode. But what if some  pictures
       you're viewing are small and some large? It can sometimes be nearly as annoying having the
       selector hidden to `make room for' a small picture which  didn't  need  it.  So  for  that
       reason,  or  perhaps  if  you  just don't like auto-hide mode :-), you may prefer to leave
       auto-hide off and explicitly hide the selector when necessary:

       `Z (shift-z)'
       `Viewer menu, Window, Hide Selector'
              Hide the selector. (This is actually a toggle, of sorts; `hide selector' when  it's
              already hidden unhides it.)

       You can also hide or unhide the selector by middle-clicking on the viewer.

MINIMIZING XZGV

       Generally  it's  easy  enough  to use your window manager to change windows etc., but when
       running fullscreen this can sometimes be a little problematic. For this reason,  xzgv  has
       built-in support for `iconifying' itself:

       `Ctrl-z'
       `Viewer menu, Window, Minimize'
              Minimize the xzgv window.

VIEWER OPTIONS

       As with the selector, various options can be disabled/enabled which relate to the viewer.

       These  settings can also be altered using command-line options (see Options) and/or config
       file settings (see Configuring xzgv).

       `z'
       `Viewer menu, Options, Zoom (fit to window)'
              Toggle zoom mode, discussed in more detail elsewhere (see Zoom Mode).

       `Alt-r'
       `Viewer menu, Options, When Zooming Reduce Only'
              Toggle reduce-only in zoom mode, also covered elsewhere (see Zoom Mode).

       `i'
       `Viewer menu, Options, Interpolate when Scaling'
              Toggle interpolation when a picture is being scaled-up.  Again,  this  has  already
              been mentioned (see Scaling).

       `Alt-c'
       `Viewer menu, Options, Ctl+Click Scales X Axis'
              Toggle  the  axis  scaled  when  you  control-click (or control-right-click) on the
              image. The default is to scale the y axis.

       `F (shift-f)'
       `Viewer menu, Options, Dither in 15 & 16-bit'
              Toggle dithering in 15/16-bit modes.  This  increases  the  apparent  colour  depth
              making  gradations look much better, but it's slower than undithered rendering, and
              can (in 16-bit) slightly distort a picture's  colour  balance.  (The  `F'  key  was
              chosen  for  this  as the dither toggle is functionally similar to zgv's `fakecols'
              toggle.)

       `Viewer menu, Options, Revert Scaling For New Pic'
              Normally xzgv returns the scaling back down to 1 (normal) when  a  new  picture  is
              selected.  By  disabling  this,  you  can  retain scaling across picture selection.
              (There is currently no keyboard shortcut for this fairly-seldom-changed option  ---
              to  toggle  it  from the keyboard, you should use the popup menu (press `F10'), and
              select the menu item.)

       `Viewer menu, Options, Revert Orient. For New Pic'
              Similarly, xzgv returns to the picture's true orientation (not  mirrored,  rotated,
              etc.)   on   selecting  a  new  picture.  Disabling  this  option  means  that  any
              mirrors/flips/rotates  applied  persist  across  multiple  images.   (No   keyboard
              shortcut --- see above.)

       `Viewer menu, Options, Use Exif Orientation'
              Toggle  support  for  Exif orientation. Devices which create JPEG files in the Exif
              format (e.g. many digital cameras) may add an orientation tag to  the  file,  which
              says  how  the  camera  was being held when the picture was taken. When this tag is
              present, xzgv can adjust the image to compensate for a camera  being  held  on  its
              side.  (This  isn't done by default as it misrepresents the true image, which could
              be confusing if you don't know why it's happening.) Enabling  this  option  may  be
              useful if you take pictures with your camera on its side, but don't want to have to
              rotate the pictures before being able to view them properly. Of course, for this to
              work your camera has to be inserting the orientation tag in the first place --- but
              it can't hurt to try it and see. (No keyboard shortcut --- see above.)

FILE FORMATS

       Picture files are stored in a variety of different forms, or  `file  formats'.  xzgv,  via
       gdk, supports many.

FILE TYPE IDENTIFICATION

       The  format  a  file  is  in is identified by its content. The file-reading code relies on
       libgdk to determine the file type and read the file correctly;  generally  this  uses  the
       format's  `magic  number' to determine file type --- e.g. a JPEG/JFIF file starts with the
       (hex) bytes `FF D8'. So if you start xzgv with xzgv foo, and foo is in a supported  format
       (such  as  JPEG),  the  format  will  be  figured  out and the file loaded even though the
       `extension' is absent.

CONFIGURING XZGV

       Many aspects of the way xzgv works can be modified by using a configuration file.

CONFIG FILES

       A configuration file lets you  alter  aspects  of  xzgv's  behaviour.  xzgv  supports  two
       possible  config  files  ---  a  system-wide one, /etc/xzgv.conf; and one for each user in
       their home directory, $HOME/.xzgvrc. Both are optional. If  $HOME/.xzgvrc  exists,  it  is
       used instead of /etc/xzgv.conf.

       Before describing the format of config files, it may help to give an example file:

       # Sample xzgv config file
       # Comment lines begin with `#' and are ignored,
       #  as are blank lines.

       # make pics fit window
       zoom on
       # hog the screen :-)
       fullscreen on

       It is a line-based format. Each line (or rather, each line which is not a comment line and
       is not blank) assigns a value to a  single  predefined  `variable'.  xzgv  has  many  such
       variables  it  lets  you  modify  in  this  way.  For example, the fullscreen option above
       controls whether or not xzgv tries to use the whole screen for its window. If it is  given
       the  value  `on'/`y'/`yes'/`1'  it does; if `off'/`n'/`no'/`0', it doesn't. Most variables
       are of this yes-or-no `boolean' type.

       Since the variables set in a config file have a direct effect on how xzgv works, it can be
       easier  to  simply  call  them `settings'. Indeed, such terminology is used on occasion in
       this documentation.

CONFIG VARIABLE TYPES

       There are various types of variable:

       - Boolean. These are on-or-off, yes-or-no variables. Most of xzgv's config file  variables
       are of this type.

       -  Integer  (currently unused). These are whole numbers. The meaning of the number depends
       on what the variable is used for.

       - Real (floating-point). This can be a whole number or a decimal fraction.  Only the gamma
       variable is of this type.

       -  Geometry.  This  window  size-and/or-position specification format is only used for the
       `geometry' setting. See Options, for a description of how this type works.

CONFIG VARIABLES

       Currently, most configuration variables (settings) in xzgv can also be set by command-line
       options;  indeed,  the  name of the setting in all such cases is identical to that for the
       long version of the option (e.g. `fullscreen', `auto-hide'). As such,  they're  documented
       in the section which discusses command-line options and the like (see Options).

       However, there are some settings only available in the config file:

       click-for-next
              This is enabled by default, allowing you to click on the viewer to skip to the next
              image. If disabled, clicking on the viewer does nothing.

RATIONALE

       Here I (RJM) attempt to explain why I did things the way I did. This  is  presented  in  a
       question-and-answer format of sorts.

WHY YET ANOTHER VIEWER?

       Previously,  this  section  concentrated on xv; that may have made sense when I originally
       wrote it, and still makes a certain limited amount of sense for zgv, but for xzgv  it  was
       looking increasingly dated. And so here I am writing an update. :-)

       I  originally  wrote xzgv as I simply wasn't happy with the viewers for X that I was aware
       of at the time (mid-1999). At the time of writing (late 2000), other key things about xzgv
       are becoming apparent, partly through responses I've been getting to it:

       o It's `fast'. No, it doesn't do any particular operation faster than other viewers as far
       as I know (well, maybe thumbnail updates :-)); rather, the interface tries not to  get  in
       your  way.  Click  on  a filename, and the picture appears. No multiplicity of toolbars or
       windows, it's just there.

       o As with zgv, it tries to do one thing well, viewing pictures. It isn't perfect  in  this
       regard, I'll admit, but at least it stays well clear of picture editing.

       o It's, er, quite a lot like zgv. Some of us old fogies like this. :-)

       I  won't  pretend  xzgv is The Ultimate Viewer For Everyone. Some people will prefer other
       approaches, or just simply prefer other viewers. (Some people may even still use xv,  ghod
       forbid.)  There  are  a  few  viewers which you may like to try if you don't think much of
       xzgv:

       o gqview. This seems to be well-regarded. I find it a bit gimmicky  and  kitchen-sink-ish;
       not quite as `pure' or focused as xzgv, IMHO. I think more people use it than xzgv though.

       o  xli.  I'm  not sure if this is maintained these days, but it's not too bad a viewer. No
       thumbnails or file selector though. (These days I mostly use this  for  setting  the  root
       window  pixmap,  something I don't think belongs in a viewer, but which xli does happen to
       be quite good at.)

       o qiv. If I read between the lines correctly, this is essentially a modern replacement for
       xli.

       o  gtksee.  I've  not  tried  this, but I think the idea is that it's an ACDSee clone, and
       there seem to be an awful lot of people who want a clone of that. Which is their  problem.
       :^)

       o  Electric  Eyes.  To  be honest, I think this has been outclassed by other viewers these
       days, which shows how far we've come.

       Ah, you say, what of xv? Well, we've emphatically reached the point where no-one need  use
       xv any more. Anyone using xv these days really should drop that pile of ill-conceived non-
       Free crap and use one of the better viewers now available. It's that simple.

WHY NO IMAGE-EDITING CAPABILITIES?

       It's a fscking viewer, dammit. If you want xv you know where to find it.

       (OTOH, if you want a decent image editor, use the Gimp.)

WHY A TEXINFO MANUAL?

       For years, I maintained a conventional `man page' for zgv (which xzgv  was  loosely  based
       on). But over time, I realised just how impossibly confusing the zgv man page had become.

       So  I  wanted  to rewrite zgv's documentation in a more sensible way, in some other format
       than a man page. I wanted an established, well-supported format with structure and  cross-
       referencing.  I  felt this made it a choice between HTML and texinfo. HTML seemed to me to
       be a moving target like no other, and not as well supported on text-only terminals as Info
       (and  thus  texinfo).  (This latter point is admittedly not too relevant as far as xzgv is
       concerned.) When I noticed that a converter existed to convert  texinfo  to  HTML  in  any
       case,  the  case  was  closed.  xzgv's  documentation  was  then  based  on  zgv's --- the
       documentation is probably more similar than the programs are. :-)

       Don't get me wrong --- I like man pages. And even with the excellent Texinfo documentation
       and  Emacs'  very  helpful  Texinfo mode, writing texinfo is hardly easy. (Without Texinfo
       mode's node- and menu-update commands, I personally would find  it  near-impossible!)  But
       big  man pages just aren't that good for reference, and this is made worse by the relative
       lack of structure.

WHY ONE-SPACE SENTENCE ENDS?

       The conventional way to write texinfo is to follow each sentence with two spaces after the
       dot  (or whatever ends the sentence). Many people normally write this way in a non-texinfo
       context too. But a sizeable proportion of people normally write text with only  one  space
       after the dot --- and I'm one of them.

       The  Texinfo  documentation gives the impression that two-space must be used; it says ``it
       is important to put two spaces at the end of sentences in  Texinfo  documents.''  But  the
       only circumstance in which spacing from the texinfo file is preserved at all (in any sense
       other than `there is a space here') is when the texinfo is converted to Info  format.  So,
       in  fact,  the  decision  to  use two-space depends on how the author wants Info output to
       appear --- this is a subjective decision which should be entirely down to  the  preference
       of the author, despite the Texinfo documentation's attempt to make two-space sound like an
       objective you-must-do-this kind of thing.

       You might wonder what the problem with using one-space is, then. Well, `makeinfo'  has  to
       reformat  paragraphs,  and whenever it needs to insert space at (what appears to it to be)
       the end of a sentence, it inserts two spaces. This behaviour cannot be altered, unlike  in
       Emacs  (sentence-end-double-space;  see  Fill Commands in the emacs info file) and GNU fmt
       (-u; see fmt invocation in the textutils info file). Also, attempting to `fix' the  output
       Info with sed doesn't work properly because the `tags' used to find nodes quickly are then
       incorrect. These could of course also be fixed, but this would involve  a  lot  more  work
       than a simple sed invocation.

       So  realistically,  anyone  who  writes  texinfo  with  one-space  has  to put up with the
       occasional two-space sentence end being inserted into their  text  ---  worse  still,  the
       current   `makeinfo'   formatting   algorithm  seems  to  insert  two  spaces  even  after
       abbreviations (such as `e.g.' and `etc.'), which breaks even two-space texinfo.  (This  is
       particularly ironic, by the way, since two-space partisans' main argument in favour of the
       practice  is  often  the  way  it  makes  it  possible  to  tell  the  difference  between
       abbreviations and the end of a sentence.)

       One last point may be worth noting; I am not the first person to write texinfo files using
       one-space. At the time of writing, it is used in the texinfo documentation for BFD,  gdbm,
       GTK/GDK, (Linux) IPC, and viper, and I expect there are instances I'm not aware of.

BUGS AND RESTRICTIONS

       All (non-trivial) programs have bugs. Anyone who denies this...

       - clearly hasn't written too many programs.

       - is wrong. ;-)

       It  follows  that xzgv, like everything else, always has some bugs.  Usually these are not
       too serious, or I'd have fixed them before releasing xzgv. But either way, bugs and  other
       problems with xzgv are noted here.

KNOWN BUGS

       -  In zoom mode, it copes with resizing the window as a whole, but doesn't when you change
       the size of the pane (apart from when hiding/showing selector or resizing  from  keyboard,
       but that's only 'cos I kludged it :-)).

       -  When scaling up and dithering, you end up with a crappy-looking picture if you drag the
       picture around slowly (since each exposed bit is dithered independently,  with  no  regard
       given to matching up to any previous error-diffusion).

       - Scaling up is slow. Not sure if I can do much about this.

       -  Using an alignment widget to centre the viewer window results in some annoying `bounce'
       in certain resizing situations etc.

       - Thumbnails don't look so great in palette-based (e.g. 8-bit) modes.

       - When dragging an image around, if you quickly move the mouse pointer over from the image
       area  to  the  selector  area,  the  image seems to `jump' a little. I think this may have
       something to do with the paned window's window-splitting bit, but I'm not sure.  Also,  it
       jumps when moving across scrollbar sliders and the paned window splitter handle.

       -  It  doesn't apply any tranparency mask. The practical result of this seems to be purple
       transparent bits in thumbnails and scaled-up images, and black transparent bits elsewhere.
       This doesn't affect PNG files, though.

       - If a GIF file is corrupted in such a way that the decompressed image has a larger number
       of pixels in it, the extra pixels will  be  ignored  and  no  error  or  warning  will  be
       generated.

       -  If  you look up `joe code' in a dictionary, right next to ``see zgv'' it now says ``but
       for really in-depth insight into the joe code nature, see xzgv''. :-)

SUBOPTIMAL FEATURES

       - Thumbnails are given an accurate width/height `IMGINFO' comment, but are always  claimed
       to be "RGB".

       -    xzgv   doesn't   duplicate   zgv's   behaviour   of   generating   thumbnails   under
       ~/.xvpics/_foo_bar_baz if it can't generate them in /foo/bar/baz/.xvpics. I doubt anything
       else   supported  it,  and  it  complicated  lots  of  things  unnecessarily.  This  isn't
       particularly suboptimal, but as an incompatibility with zgv it merits mention.

RESTRICTIONS

       - Only the first image of a multiple-image GIF is used. (These days,  multiple-image  GIFs
       are usually animations.)

REPORTING BUGS

       If  you find xzgv does something wrong, which you suspect might be a fault of some sort (a
       bug) in the program, it is best to report it as I may not be aware of  the  problem.  (But
       first, check it is not a `known bug'.  See Known Bugs. It is not usually helpful to report
       a bug I already know about.)

       It is important to include as much detail in a bug report  as  you  can.   Here  are  some
       details you should include:

       o The version of xzgv you are running. `xzgv --version' reports this.

       o  The versions of GTK+ you are using. `xzgv --version-gtk' reports the GTK+ version being
       used by xzgv.

       o The bitdepth your X server is running in (common depths are 16-bit, 24-bit, and 32-bit).
       If you don't know what depth you're running in, try `xdpyinfo|grep depth'.

       o A description of the bug --- what effects it has, the circumstances it occurs in, and so
       on. Does it only happen for certain types of file?  Only when in 8-bit  modes?  Only  when
       dithering is enabled? Even `irrelevant' details can sometimes be useful.

       o  Finally,  if you are a programmer and believe you have managed to fix the bug yourself,
       patches are gratefully accepted. :-) You should generate the  patch  using  `diff  -c'  or
       (preferably) `diff -u'.

       So, if you think you've found a bug in xzgv, report it by emailing me at <rrt@sc3d.org>.

REPORTING DOCUMENTATION BUGS

       Bugs  in  the documentation can sometimes cause as much trouble as bugs in the program; if
       you notice a problem in the documentation, it's a good idea to report it.

       For reports of documentation bugs, you should include these details:

       o The version of xzgv the documentation is for.

       o If it is a problem in one specific section of the documentation, specify which  part  it
       is (by this I mean the heading it comes under; texinfophiles should read this as `the node
       name' :-)).

       o The format of the documentation you saw the problem in (e.g. info, man page, HTML).

       o A description of the problem.

FUTURE CHANGES

       See Reporting Bugs, for details of where to send the bug report.  If you want to suggest a
       feature  you'd  like  in  xzgv,  or  a  change to an existing feature, contact me; see See
       Reporting Bugs for the address.

       Future changes etc. are listed in the TODO file.

AUTHOR

       Russell Marks <rus@svgalib.org> and others; see the section ACKNOWLEDGEMENTS for details.

SEE ALSO

       zgv(1), xv(1), cjpeg(1), djpeg(1), pbm(5), pgm(5), ppm(5), mrf(5)