Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
XZGV(1)			       Graphics	Software		       XZGV(1)

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

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

       (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  pic-
       tures  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 ap-
       pears  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  di-
       rectory,	 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 drag-
       ging 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	intro-
       ductions	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.

       xzgv  was  primarily  written by	Russell	Marks, also the	author of this
       manual. It is maintained	by Reuben Thomas, who ported it	to Gtk+	2.

       Costa Sapuntzakis contributed code for much faster JPEG thumbnail  gen-
       eration (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 Elec-
       tric Eyes, which	was nearly nice	enough for me not to bother with  xzgv
       at all! :-))

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

       Normally	 you'd	invoke xzgv as plain `xzgv' (perhaps via a window man-
       ager 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  sec-
       tion 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-let-
       ter 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:

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

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

	      (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 over-

	      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.

	      In JPEG files, use Exif orientation tags (inserted by e.g. digi-
	      tal  cameras)  to	 correct image orientation before display. See
	      Viewer Options, for details.

	      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 di-
	      rectories	for which few if any updates are needed.

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

       `-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

	      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	allow-
	      ing 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 `%'.

	      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  im-
	      ages)  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.

	      Shows  only  directories	and  image file	types in the selector,
	      identified by their extensions.

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

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

	      (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).

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

	      Set the default/initial size of the selector in pixels. The nor-
	      mal setting is 200.

	      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 on the status bar when thumbnails are being read. The  sta-
	      tus  bar	must  be  enabled for these messages to	be visible, of
	      course. :-)

	      For the first directory shown, skip the cursor past .. (the par-
	      ent  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 or-
	      der.  Possible settings  are  `mtime'  (default),	 `ctime',  and
	      `atime';	only  the first	char of	the setting (`m'/`c'/`a') need
	      be given.

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

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

	      Show version number.

	      Show version number of GTK+ xzgv is using.

	      Fit picture to viewer window, whatever its actual	size (see Zoom

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

	      When in zoom mode, adjust	only the most  proportional  dimension
	      to  fit, and allow scrolling on the other	dimension; i.e.	like a
	      fit page width option in PDF readers, but	not limited  to	 hori-
	      zontal adjusting.

       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

       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 con-
       fig  files  ---	the  syntax  is	 `--option=state',  where   state   is
       `on'/`y'/`yes'/`1'  to enable the option, or `off'/`n'/`no'/`0' to dis-
       able it.	The most useful	thing about this is that it allows you to dis-
       able 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.)

       Much of this manual is taken up by a description	of xzgv's various com-
       mands 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:

       `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  key-
       board focus.

       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.

       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.  How-
       ever, 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 re-
       fer you to this manual:

       `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

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

       `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.)

       (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 in-
       stead (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 ad-
       vance, and are stored as	files in their own  right  in  a  subdirectory

       xzgv never creates/updates thumbnails without you telling it to.	So, if
       you enter a directory where the picture files  don't  have  any	thumb-
       nails, 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	direc-
       tory and	all subdirectories by using `Alt-u' or Recursive  Update.  But
       be warned that a	recursive update can take some time!

       `Selector menu, Update Thumbnails'
	      Create  thumbnails  for any files	which don't have them, and up-
	      date 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	thumb-
	      nail it is currently working on (if any).

       `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 nor-
	      mal 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  ti-
	      tle. 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	effec-
       tively 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  in-
       evitably	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	Invok-
       ing xzgv) or equivalent config file entry (see Configuring xzgv).)

       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 or-
       der 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 key-

       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

       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 Se-
       lector 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 but-
       ton 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.

	      Move the window split left more slowly.

	      Move the window split right.

	      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  ef-
       fect,  the  position  of	 the window split --- using `--selector-width'
       (see Options) or	the config file	option `selector-width'.

       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+ jar-
       gon, 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'
	      Move up.

       `Cursor Down'
	      Move down.

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

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

	      Move the cursor to the start of the list.

	      Move the cursor to the end of the	list.

	      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 or-
	      der). 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.

       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'.

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

       See The Viewer, for details of how the viewer works.  If	xzgv has a se-
       rious 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 rele-
       vant button with	the mouse to do	the same.)

       - Showing progress when updating	a thumbnail. This is  a	 slightly  un-
       usual  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'
	      Move the cursor left. (A vertical	bar  shows  the	 cursor	 posi-

       `Cursor Right'
	      Move the cursor right.

	      Move the cursor to the start of the line.

	      Move the cursor to the end of the	line.

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

	      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:

	      Cut text.

	      Copy text.

	      Paste text.

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

       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.

       `Selector menu, File, Close'
	      `Close' the currently-viewed file, clearing the  viewer  subwin-

       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  im-
       age,  that kind of thing. So, you can show details of a single file us-
       ing 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 de-
	      tails 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)' sys-
       tem call), and should always be available unless	you have limited  per-
       missions	 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  particu-
       lar  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.)

       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 com-
       mands 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 +'
       `Selector menu, Tagging,	Tag'
	      Tag file.

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

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

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

       `Selector menu, Tagging,	Toggle All'
	      Toggle all tags. This inverts the	tagged state, so that all pre-
	      viously  tagged  files  become  untagged,	and all	previously un-
	      tagged 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 Pic-

   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

       `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 Dia-
	      log 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

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

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

       `Selector menu, File, Rename file'
	      Rename  the  current  file  or directory --- xzgv	will refuse to
	      overwrite	any existing files/directories.	The new	name must  re-
	      main  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 is pretty straightforward:

       `Selector menu, File, Delete file'
	      Delete the file pointed to by the	keyboard cursor	(and  any  ac-
	      companying  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 cur-
       rently no way to	delete all tagged files.

       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	direc-
       tory of the current one.

       There is	an alternative though:

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

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

       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,  how-
       ever,  explicitly  tell xzgv to `rescan'	the directory (reread the con-
       tents), which will update xzgv's	notion of what's in it:

       `Selector menu, Directory, Rescan'
	      Rescan the current directory.

       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.)

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

       `Selector menu, Directory, Sort by Extension'
	      Sort by extension.

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

       `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:

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

       `Selector  menu,	 Directory,  Time  &  Date Type, Attribute Change Time
	      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.

       `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.

       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 Op-
       tions) and/or config file settings (see Configuring xzgv).

       `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. :-)

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

       `Selector menu, Options,	Thumbnail Msgs'
	      Toggle  reading-thumbnails messages (default is off), only visi-
	      ble 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.

       `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 in-
	      herited  from  zgv's  `visual'  mode toggle, which had a roughly
	      similar effect.)

       `Selector menu, Directory, Images Only'
	      Toggle the option	to show	only directories and  image  files  in
	      the  selector  (off  by  default).  This is handy	in directories
	      where images and other file types	are intermingled and you  want
	      to avoid the by their extensions.

       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).

       When using the mouse to control xzgv, it	doesn't	matter whether the se-
       lector or the viewer has	keyboard focus --- mouse operations  transcend
       such  petty  boundaries.	:-) But	keyboard control is (of	necessity) ef-
       fectively 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:

       `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	 `hid-

       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

       - Make the xzgv window larger. You could	`maximize' it with your	window
       manager,	or you could start xzgv	with a larger window  using  `--geome-
       try'  or	 fullscreen mode (see Options).	The fullscreen mode gives xzgv
       the maximum window size possible, but needs co-operation	from your win-
       dow  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  ef-

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

       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 pic-

       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 scroll-
       bars, or	use the	cursor keys (and others) to move around	 the  rest  of
       the picture:

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

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

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

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

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

       `Page Down'
       `Shift-Cursor Down'
	      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.

	      Move to the top-left of the picture.

	      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)).

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

       `Viewer menu, Options, When Zooming Reduce Only'
	      When in zoom mode, only reduce pictures to fit. This can be use-
	      ful 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. :-)

       `Viewer menu, Options, When Zooming Panorama'
	      When in zoom mode, resize	to make	the most  proportional	dimen-
	      sion fit and allow scrolling on the other	dimension. This	can be
	      useful when viewing iamges that do not adjust nicely to the win-
	      dow size but you want to see them	as big as possible while using
	      the most space available.	The cause for  this  function  was  to
	      better read comics, so you can guess it works like a

       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.

       You can scale a picture --- this	makes it appear	 larger	 (or  smaller)
       onscreen.  xzgv	acts  much as if the scaled picture were the real pic-
       ture; 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 pix-
       els) in the original picture  (and  similarly  for  movement  with  the

       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 inte-
       ger  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 scal-
       ing 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:

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

       `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 lit-
       tle 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  in-
       creased	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  run-
       ning  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:

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

       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.

       `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	effec-
       tively  double  the height of an	image (with the	width left unchanged).
       Indeed, this sort of scaling is useful for temporarily correcting  pic-
       tures  intended	for display using pixels twice as wide or high as nor-

       `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.

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

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

       `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.

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

       `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;  con-
       trol-left-click	scales up, and control-right-click scales down.	By de-
       fault 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.

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

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

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

       `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  ef-
	      fect 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  ro-
       tated in	the same way.

       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.

       `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).)

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

       `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.

       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 dis-
       played 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	annoy-
       ing 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 explic-
       itly 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

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

       `Viewer menu, Window, Minimize'
	      Minimize the xzgv	window.

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

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

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

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

       `Viewer menu, Options, When Zooming Panorama'
	      Toggle  panorama	view in	zoom mode, also	covered	elsewhere (see
	      Zoom Mode).

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

       `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'

       `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 scal-
	      ing  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  pic-
	      tures  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.)

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

       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 cor-
       rectly; 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 for-
       mat  (such as JPEG), the	format will be figured out and the file	loaded
       even though the `extension' is absent.

       Many aspects of the way xzgv works can be modified by using a  configu-
       ration file.

       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.

       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.  These are whole numbers. The meaning of the	number depends
       on what the variable is used for.

       - 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.

       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  Op-

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

	      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.

       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.

       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	 file-
       name,  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 view-
       ers 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

       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.

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

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

       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-sup-
       ported 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.

       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  sen-
       tences in Texinfo documents.'' But the only circumstance	in which spac-
       ing 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 for-
       mat. So,	in fact, the decision to use two-space depends on how the  au-
       thor  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 ob-
       jective 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 (sen-
       tence-end-double-space; see Fill	Commands in the	emacs info  file)  and
       GNU  fmt	(-u; see fmt invocation	in the textutils info file). Also, at-
       tempting	to `fix' the output Info with sed doesn't  work	 properly  be-
       cause  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 dif-
       ference 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.

       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.  Usu-
       ally 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.

       -  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  hid-
       ing/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  pic-
       ture  if	 you drag the picture around slowly (since each	exposed	bit is
       dithered	independently, with no regard given to matching	up to any pre-
       vious 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,

       -  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''. :-)

       -  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  com-
       plicated	lots of	things unnecessarily. This isn't particularly subopti-
       mal, but	as an incompatibility with zgv it merits mention.

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

       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  al-
       ready 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 `irrele-
       vant' 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 gen-
       erate the patch using `diff -c' or (preferably) `diff -u'.

       Then, please file a bug report in the  SourceForge  bug	tracker.   See

       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.

       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 ex-
       isting feature, contact me; see See Reporting Bugs for the address.

       Future changes etc. are listed in the TODO file.

       Russell Marks <> and others; see	the  section  ACKNOWL-
       EDGEMENTS for details.

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

Version	0.9			9th August 2017			       XZGV(1)


Want to link to this manual page? Use this URL:

home | help