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

FreeBSD Manual Pages

  
 
  

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

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 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 ). 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	`'. 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 `'	or `' first if using the keyboard), or	you  can  quit
       xzgv by pressing	`'.

       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.

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

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

       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. `'),	and vice versa.

       Here's what the options do:

       `-a'
       `'
	      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 vi-
	      sual impact of the sloppier method is often very small.''

       `--delete-single-prompt'
	      (Note that this is normally enabled; use `' to disable  it.)  If
	      disabled,	 xzgv  will  immediately  delete  a file when told to,
	      without prompting	for confirmation. (It's	 `'  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 `' to disable this.

       `--exif-orient'
	      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.

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

       `-f'
       `'
	      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'
       `'
	      Set  the	xzgv window's geometry (position and/or	size) to . The
	      geometry string should be	in the usual X format, with the	exten-
	      sion that	positions/sizes	may have a `' suffix meaning that they
	      are treated as percentages of the	screen width/height.  The  de-
	      fault geometry is	`'.

	      For  those  unfamiliar  with  the	way `geometry' works, here's a
	      brief description	of the syntax. It's `WxH', or `', or `', where
	      `' is width, `' height, `' the x position, and `'	 the  y	 posi-
	      tion.  The  first	 form specifies	only the size, the second only
	      the position --- the `' 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 `' puts
	      the window partly	off the	left of	the screen,  and  `'  puts  it
	      partly off the bottom of the screen --- but this is of question-
	      able 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. `'. It also allows	you to
	      use real numbers such as `', which can be	useful with `'.

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

       `--image-bigness-threshold numpix'
	      Set  the	boundary  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.

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

       `--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 `' to disable  it.)  If
	      disabled,	orientation (flip/mirror/rotate) state is retained be-
	      tween pictures (see Viewer Options).

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

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

       `-T'
       `'
	      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  sta-
	      tus  bar	must  be  enabled for these messages to	be visible, of
	      course. :-)

       `-k'
       `'
	      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'
       `'
	      Set  the	initial	 sorting  order	used in	the selector. Possible
	      settings are `', `', `', and `' (or `'); only the	first char  of
	      the  setting (`'/`'/`'/`'/`') 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 (`'/`'/`')  need  be
	      given.

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

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

       `-v'
       `'
	      Show version number.

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

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

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

       `-p'
       `'
	      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
       directory).

       Settings	which are either on or off (boolean) are, as you might expect,
       enabled by using	e.g. `-z' or `'. However, there's an alternative long-
       option form for setting these, resembling how  they're  set  in	config
       files --- the syntax is `', where
	is `'/`'/`'/`' to enable the option, or	`'/`'/`'/`' 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. `'.

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

A NOTE ON NOTATION
       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 `', 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'
       `'
	      Description of what the key/menu item does.

       Sometimes the key given has a `(Selector)' or `'	suffix;	 this  is  be-
       cause  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.

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	`' to bring up the menu, but as	there are key-
       board 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.	 on the	menu, you need to  right-click
       .

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

       `F1'
       `'
       `'
	      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'
       `'
	      View the manual's	concept	index.

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

EXITING	XZGV
       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:

       `q'
       `'
       `'
	      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 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
       .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	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!

       `u'
       `'
	      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	`', 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'
       `'
	      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 ).)

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

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

       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.

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

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

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

       `Ctrl-End'
       `'
	      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; `' and `' 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.

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

       xzgv also uses similar dialog boxes for other things:

       - Getting confirmation that you want to do  something.  `Enter'	or  `'
       picks  `yes';  `' or `' 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  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	`' does	the same).

       - Reading a directory name. Here	you should  type  the  directory  name
       then click Ok (or press `Enter'), or click  (or press `') 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-
	      tion.)

       `Cursor Right'
       `'
	      Move the cursor right.

       `Home'
       `'
	      Move the cursor to the start of the line.

       `End'
       `'
	      Move the cursor to the end of the	line.

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

       `Delete'
       `'
	      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'
       `'
	      Cut text.

       `Ctrl-Insert'
       `'
	      Copy text.

       `Shift-Insert'
       `'
	      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'
       `'
	      `Close'  the  currently-viewed file, clearing the	viewer subwin-
	      dow.

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 im-
       age, that kind of thing.	So, you	can show details of a single file  us-
       ing the `file details' command:

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

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

       `='
       `'
       `'
       `'
       `'
	      Tag file.

       `-'
       `'
       `'
       `'
	      Untag file.

       `Alt ='
       `'
       `'
       `'
	      Tag all files.

       `Alt -'
       `'
       `'
       `'
	      Untag all	files.

       `Alt-o'
       `'
	      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.

       `/'
       `'
	      Move to next tagged file in dir.

       `?'
       `'
	      Move to previous tagged file in dir.

       Equivalent commands are also available in the viewer (see Changing Pic-
       ture).

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

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

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

       `Ctrl-n'
       `'
	      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 , 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'
       `'
	      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.

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

       There is	an alternative though:

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

       `G'
       `'
	      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-
	      ists.

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

       `Ctrl-r'
       `'
	      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'
       `'
	      Sort by name. This is the	default.

       `Alt-e'
       `'
	      Sort by extension.

       `Alt-s'
       `'
	      Sort by size. The	biggest	files are listed last.

       `Alt-d'
       `'
	      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 ).

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

       `Alt-Shift-m'
       `'
	      Use the last-modified time (`mtime'). This is the	default.

       `Alt-Shift-c'
       `'
	      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  `'	 will  usually
	      change the ctime.

       `Alt-Shift-a'
       `'
	      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  Op-
       tions) and/or config file settings (see ).

       `Alt-a'
       `'
	      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'
       `'
	      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.

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

       `Alt-i'
       `'
	      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.

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

       `Esc'
       `'
       `'
	      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-
       den'.

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

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

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

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

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

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

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

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

       `Page Down'
       `'
       `'
	      Move down	(nearly) the window height.

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

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

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

       `End'
       `'
	      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'
       `'
	      Toggle zoom mode.

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

       `Alt-p'
       `'
	      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.

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

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

       `s'
       `'
	      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)'
       `'
	      Decrease the ratio by halving it.

       `S (Shift-s)'
       `'
	      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:

       `n'
       `'
	      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'
       `'
	      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-
       mal.

       `x'
       `'
	      Increase the (x axis) ratio by doubling it.

       `X (Shift-x)'
       `'
	      Decrease the (x axis) ratio by halving it.

       `Alt-x'
       `'
	      Increase the (x axis) ratio by adding one.

       `Alt-Shift-x'
       `'
	      Decrease the (x axis) ratio by subtracting one.

       `y'
       `'
	      Increase the (y axis) ratio by doubling it.

       `Y (Shift-y)'
       `'
	      Decrease the (y axis) ratio by halving it.

       `Alt-y'
       `'
	      Increase the (y axis) ratio by adding one.

       `Alt-Shift-y'
       `'
	      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 `' 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'
       `'
	      `Mirror' the picture (flip it horizontally).

       `f'
       `'
	      `Flip' the picture (flip it vertically).

       `r'
       `'
	      Rotate the picture 90 degrees clockwise.

       `R (Shift-r)'
       `'
	      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)'
       `'
	      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.

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'
       `'
	      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'
       `'
	      Move to previous file in dir, and	view it.

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

       `/'
       `'
	      Move to next tagged file in dir, and view	it.

       `?'
       `'
	      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 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)'
       `'
	      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 prob-
       lematic.	For this reason, xzgv has built-in  support  for  `iconifying'
       itself:

       `Ctrl-z'
       `'
	      Minimize the xzgv	window.

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

       `z'
       `'
	      Toggle zoom mode,	discussed in more detail elsewhere  (see  Zoom
	      Mode).

       `Alt-r'
       `'
	      Toggle  reduce-only  in  zoom  mode, also	covered	elsewhere (see
	      Zoom Mode).

       `Alt-p'
       `'
	      Toggle panorama view in zoom mode, also covered  elsewhere  (see
	      Zoom Mode).

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

       `Alt-c'
       `'
	      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)'
       `'
	      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 `' 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 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 `'), 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.)

FILE FORMATS
       Picture files are stored	in a variety of	different forms, or `file for-
       mats'. 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 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.

CONFIGURING XZGV
       Many aspects of the way xzgv works can be modified by using a  configu-
       ration 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,	. Both
       are optional. If	 exists, it is used  .

       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'/`'/`'/`' it does; if `'/`'/`'/`', 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.  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.

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

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 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 , 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	 (sen-
       tence-end-double-space;	see  Fill Commands in the emacs	info file) and
       GNU fmt (; see  in the  info file). Also, attempting to `fix' the  out-
       put 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  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.

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

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 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,
       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
       if  it can't generate them in . 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  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) `'.

       Then, please file a bug report in the  SourceForge  bug	tracker.   See
       https://sourceforge.net/p/xzgv.

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

       Future changes etc. are listed in the TODO file.

AUTHOR
       Russell	Marks  <rus@svgalib.org>  and others; see the section ACKNOWL-
       EDGEMENTS for details.

SEE ALSO
       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:
<https://man.freebsd.org/cgi/man.cgi?query=xzgv&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help