1XZGV(1)                        Graphics Software                       XZGV(1)
2
3
4

NAME

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

SYNOPSIS

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

DESCRIPTION

12       (NB: This man page is automagically generated from xzgv's texinfo file,
13       and so may look a bit odd.  We apologise for the inconvenience. :-))
14
15       xzgv is a picture viewer for X, with a thumbnail-based  file  selector.
16       The  thumbnails  used (thumbnails being small `preview' versions of the
17       pictures) are compatible with xv, zgv, and the Gimp. The kinds of  pic‐
18       tures  xzgv  allows  to be viewed are raster-format pictures (sometimes
19       called `bitmaps' and/or `pixmaps'); things like GIF files, JPEG  files,
20       PNG files, and so on.
21
22       Most  of  the  time, you will probably want to use xzgv's file selector
23       (see The File Selector) to pick which file(s) to  view.  This  is  what
24       appears on the left-hand side of the window when you start xzgv as just
25       `xzgv' (see Options). It displays a list of subdirectories and  picture
26       files  in  the current directory, along with small `thumbnail' versions
27       of the pictures if they exist. (If no  thumbnails  appear  in  a  given
28       directory, or if they are missing for some files, you can create/update
29       them by pressing `u'. See Updating Thumbnails.)
30
31       When you've picked a file to view, you can view it by clicking  on  it,
32       or  pressing  `Enter'.  This  reads  the picture and displays it in the
33       right-hand part of the window, the viewer (see  The  Viewer).  You  can
34       then  move  around the picture (if it is larger than will fit) by drag‐
35       ging it with the mouse, or using the scrollbars, or  the  cursor  keys.
36       You  can  then  select another image with the file selector (though you
37       need to press `Esc' or `Tab' first if using the keyboard), or  you  can
38       quit xzgv by pressing `q'.
39
40       While xzgv works much like any other X program, and is certainly mouse-
41       friendly :-), it's also designed to be  keyboard-friendly.   Everything
42       in  xzgv  can be done entirely from the keyboard. Much of this keyboard
43       support works like the original zgv (a  similar  console-based  picture
44       viewer for Linux).
45
46       This overview is, as you might expect, only the very simplest of intro‐
47       ductions to what xzgv can do, and describes only a very  basic  use  of
48       xzgv. xzgv can do a lot more; read on to find out what.
49

ACKNOWLEDGEMENTS

51       xzgv  was  primarily  written by Russell Marks, also the author of this
52       manual. It is maintained by Reuben Thomas, who ported it to Gtk+ 2.
53
54       Costa Sapuntzakis contributed code for much faster JPEG thumbnail  gen‐
55       eration (to zgv, which I adapted for xzgv).
56
57       The  directory/file  icons  used  were  loosely  based  on  gmc's  dir-
58       close.xpm. I think Tuomas Kuosmanen was responsible for  that,  judging
59       from the change log.
60
61       `mkinstalldirs' is straight from the `texinfo' package, and was written
62       by Noah Friedman. (This is also used during installation.)
63
64       Huge thanks go to the many people responsible for GTK+,  without  which
65       xzgv would almost certainly not have happened. (But no thanks for Elec‐
66       tric Eyes, which was nearly nice enough for me not to bother with  xzgv
67       at all! :-))
68
69       getopt*.[ch] are from the GNU libc.
70

OPTIONS

72       Normally  you'd  invoke xzgv as plain `xzgv' (perhaps via a window man‐
73       ager menu, or GNOME/KDE menu, etc.). However, you can directly  specify
74       files  to view, or a start directory, on the command-line. In addition,
75       there are various options.
76
77       (If you're new to xzgv, you should probably skip the rest of this  sec‐
78       tion for now and come back to it later.)
79
80       The general format of the xzgv command-line goes roughly like this:
81
82       xzgv [options] [dir | file ...]
83
84       Two types of options are supported --- the traditional Unix single-let‐
85       ter options, and GNU-style long options. Most options can  be  used  in
86       either way, and both forms are listed in the table below.
87
88       Note  that  all  options are processed after any configuration file(s).
89       Config file settings are just like the long-option  names  below  minus
90       the  `--' (see Configuring xzgv), though a few command-line options are
91       not permitted as config file settings (e.g. `help'), and vice versa.
92
93       Here's what the options do:
94
95       `-a'
96       `--auto-hide'
97              Automatically hide selector when a picture is selected, allowing
98              the viewer to use the whole window.
99
100       `--careful-jpeg'
101              Enable  libjpeg  `fancy  upsampling'. xzgv defaults to using the
102              faster method; as the libjpeg documentation puts it, ``The  vis‐
103              ual impact of the sloppier method is often very small.''
104
105       `--delete-single-prompt'
106              (Note  that  this  is  normally  enabled;  use `--delete-single-
107              prompt=off' to disable it.) If disabled, xzgv  will  immediately
108              delete  a file when told to, without prompting for confirmation.
109              (It's `single' because deleting multiple files at once  will  be
110              supported  in future, and that will have a separate prompt over‐
111              ride.)
112
113       `--dither-hicol'
114              Use dithering in 15/16-bit, whatever  the  default  setting  is.
115              See  Viewer Options, for a discussion of benefits/drawbacks. You
116              can also use `--dither-hicol=off' to disable this.
117
118       `--exif-orient'
119              In JPEG files, use Exif orientation tags (inserted by e.g. digi‐
120              tal  cameras)  to  correct image orientation before display. See
121              Viewer Options, for details.
122
123       `--fast-recursive-update'
124              When doing a recursive thumbnail  update,  don't  read  existing
125              thumbnails  before  updating. This is pretty much obsolete as of
126              xzgv 0.7, as the speed increase is now negligible. But,  it  may
127              still  be  useful  if  you want to update a huge number of small
128              directories for which few if any updates are needed.
129
130       `-f'
131       `--fullscreen'
132              Run fullscreen, using the entire screen for xzgv's window, with‐
133              out  even  any  window-manager  decorations (window frame, title
134              bar, etc.) if possible.
135
136       `-g geom'
137       `--geometry geom'
138              Set the xzgv window's geometry (position and/or size)  to  geom.
139              The  geometry  string  should be in the usual X format, with the
140              extension that positions/sizes may have  a  `%'  suffix  meaning
141              that they are treated as percentages of the screen width/height.
142              The default geometry is `92%x85%'.
143
144              For those unfamiliar with the way  `geometry'  works,  here's  a
145              brief  description  of  the  syntax.  It's  `WxH', or `+X+Y', or
146              `WxH+X+Y', where `W' is width, `H' height, `X' the  x  position,
147              and  `Y' the y position. The first form specifies only the size,
148              the second only the position --- the  `WxH+X+Y'  form  specifies
149              both.
150
151              Now, the `+X+Y' bit normally specifies where the top-left of the
152              window is. But you can use `-' instead of `+' for the x and/or y
153              position,  in  which  case  it  specifies  the  gap  between the
154              right/bottom of the window and the right/bottom of  the  screen.
155              (Note,  however,  that any window frame your window manager adds
156              to the window is disregarded in this  calculation,  so  you  may
157              need  to  experiment  somewhat to get the desired position.) You
158              can also use negative numbers with  both  `+'  and  `-'  ---  so
159              `+-50+0'  puts the window partly off the left of the screen, and
160              `+0--50' puts it partly off the bottom of  the  screen  ---  but
161              this is of questionable value. :-)
162
163              Finally,  as mentioned above, xzgv extends this syntax by allow‐
164              ing you  to  use  `%'  to  specify  percentages  of  the  screen
165              width/height rather than pixels, e.g. `50%x30%-30%-20%'. It also
166              allows you to use real numbers such as  `12.34',  which  can  be
167              useful with `%'.
168
169       `-h'
170       `--help'
171              Display  a  list  of options and a terse description of what the
172              options do.
173
174       `--image-bigness-threshold numpix'
175              Set the boundary numpix after which images are considered `big',
176              and  are  no longer rendered all-at-once (which gives much nicer
177              scrolling, but is harder on memory  and  can  be  slow  for  big
178              images)  but are instead rendered piece-by-piece. Units are num‐
179              ber of pixels in  image  (i.e.  width  times  height),  and  the
180              default is 2000000 pixels.
181
182       `-i'
183       `--images-only'
184              Shows  only  directories  and  image file types in the selector,
185              identified by their extensions.
186
187       `--interpolate'
188              Interpolate between the picture's pixels when  scaling  up  (see
189              Scaling). This usually looks nicer, but it's rather slow.
190
191       `--mouse-scale-x'
192              If  enabled,  control-clicking  on  the viewer scales only the X
193              axis. (The default is to scale only the Y axis.)
194
195       `--revert-orient'
196              (Note that this is normally enabled;  use  `--revert-orient=off'
197              to  disable  it.)  If disabled, orientation (flip/mirror/rotate)
198              state is retained between pictures (see Viewer Options).
199
200       `--revert-scale'
201              (Note that this is normally enabled; use `--revert-scale=off' to
202              disable  it.)  If disabled, scaling is retained between pictures
203              (see Viewer Options).
204
205       `--selector-width'
206              Set the default/initial size of the selector in pixels. The nor‐
207              mal setting is 200.
208
209       `-T'
210       `--show-tagged'
211              Show  names  of currently-tagged files on exiting xzgv. (They're
212              listed to stdout, one per line.) This can  be  useful  when  you
213              want  to select multiple files graphically and work on them with
214              something else.
215
216       `--show-thumbnail-messages'
217              Show on the status bar when thumbnails are being read. The  sta‐
218              tus  bar  must  be  enabled for these messages to be visible, of
219              course. :-)
220
221       `-k'
222       `--skip-parent'
223              For the first directory shown, skip the cursor past .. (the par‐
224              ent  dir). This can be useful when you'd like to immediately use
225              space to `page' through the dir.
226
227       `-o order'
228       `--sort-order order'
229              Set the initial sorting order used  in  the  selector.  Possible
230              settings are `name', `ext', `size', and `date' (or `time'); only
231              the first char of  the  setting  (`n'/`e'/`s'/`d'/`t')  need  be
232              given. The default is name order.
233
234       `--sort-timestamp-type type'
235              Set  the  timestamp  type  to  use  when using time/date sorting
236              order.  Possible settings are `mtime'  (default),  `ctime',  and
237              `atime';  only  the first char of the setting (`m'/`c'/`a') need
238              be given.
239
240       `--statusbar'
241              Show a status bar below the selector; this,  for  example,  says
242              when a picture is being read.
243
244       `-t'
245       `--thin-rows'
246              Use  rows a third the normal height in the selector. This can be
247              very useful on lower-resolution screens,  or  if  you're  really
248              interested in filenames, not thumbnails.
249
250       `-v'
251       `--version'
252              Show version number.
253
254       `--version-gtk'
255              Show version number of GTK+ xzgv is using.
256
257       `-z'
258       `--zoom'
259              Fit picture to viewer window, whatever its actual size (see Zoom
260              Mode).
261
262       `-r'
263       `--zoom-reduce-only'
264              When in zoom mode, only reduce pictures to fit;  i.e.  make  big
265              pictures   viewable  all-at-once  while  leaving  small  picures
266              intact.
267
268       `-p'
269       `--zoom-panorama'
270              When in zoom mode, adjust only the most  proportional  dimension
271              to  fit, and allow scrolling on the other dimension; i.e. like a
272              fit page width option in PDF readers, but not limited  to  hori‐
273              zontal adjusting.
274
275       If  started  with `xzgv files', xzgv hides the file selector and treats
276       the file or files as if they were the sole contents of a directory. (It
277       also automatically loads the first file.) As such, you can use the Next
278       Image and Previous Image commands to navigate between the images, or do
279       Exit to Selector and use the selector directly.
280
281       If started with `xzgv start-dir', xzgv starts up as usual, but with the
282       selector starting on the directory specified (rather than  the  current
283       directory).
284
285       Settings which are either on or off (boolean) are, as you might expect,
286       enabled by using e.g. `-z' or `--zoom'. However, there's an alternative
287       long-option  form for setting these, resembling how they're set in con‐
288       fig  files  ---  the  syntax  is  `--option=state',  where   state   is
289       `on'/`y'/`yes'/`1'  to enable the option, or `off'/`n'/`no'/`0' to dis‐
290       able it. The most useful thing about this is that it allows you to dis‐
291       able options which were previously enabled, by using e.g. `--zoom=off'.
292
293       (Readers  used to the way GNU-style long options work should note that,
294       since this `on'/`off'/etc. arg is optional, you can't use the `--option
295       arg' form in this case; it must be `--option=arg' for it to work.)
296

A NOTE ON NOTATION

298       Much of this manual is taken up by a description of xzgv's various com‐
299       mands in its file selector and viewer. Most of these are available both
300       from the keyboard, and from popup menus. (A popup menu appears when you
301       press `F10' or `Menu', or right-click on the selector  or  the  viewer;
302       each  has  its  own  menu.) So in the manual, you will often see things
303       rather like this:
304
305       `key'
306       `Selector menu, Menu the item is in, Menu item'
307              Description of what the key/menu item does.
308
309       Sometimes the key given has a `(Selector)' or `(Viewer)'  suffix;  this
310       is  because some keypresses in xzgv are specific to the selector or the
311       viewer, and won't work unless the relevant part of xzgv  has  the  key‐
312       board focus.
313

THE FILE SELECTOR

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

THE SELECTOR MENU

323       Almost all selector commands are available from the  selector's  pop-up
324       menu, which appears when you right-click anywhere on the selector. (You
325       can also press `F10' or `Menu' to bring up the menu, but as  there  are
326       keyboard  shortcuts for just about everything in xzgv, this isn't often
327       that useful. :-))
328
329       Usually, it doesn't matter where on the selector you right-click.  How‐
330       ever, a few commands on the File menu operate on a single file, the one
331       selected by the keyboard cursor. A problem when using  the  mouse,  you
332       might  think  ---  but when you right-click on the selector, as well as
333       popping up the menu, xzgv moves this cursor  to  the  file  you  right-
334       clicked on (if any). (You can see this by the way a hollow box is drawn
335       around the file.) So to use e.g. Details on the File menu, you need  to
336       right-click on the file you want details on.
337
338       Both  the  selector  and  viewer have `Help' menus, most items of which
339       refer you to this manual:
340
341       `F1'
342       `Selector menu, Help, Contents'
343       `Viewer menu, Help, Contents'
344              View the manual's overall contents.
345
346       `Selector menu, Help, The File Selector'
347              View the manual's section on the file selector.
348
349       `Viewer menu, Help, The Viewer'
350              View the manual's section on the viewer.
351
352       `Selector menu, Help, Index'
353       `Viewer menu, Help, Index'
354              View the manual's concept index.
355
356       `Selector menu, Help, About'
357       `Viewer menu, Help, About'
358              Give some brief information about xzgv,  including  the  version
359              number and homepage.
360
361       Currently,  the  way  xzgv  lets you read the manual is a bit crude; it
362       runs the `info' program (see Top in the  info-stnd  info  file)  in  an
363       `xterm'.
364

EXITING XZGV

366       You  can  exit  xzgv  either by using one of two exit keypresses, or by
367       selecting the appropriate option from the selector's popup menu:
368
369       `q'
370       `Ctrl-q'
371       `Selector menu, Exit xzgv'
372              Quit xzgv.
373
374       (There's also an exit option on the  selector's  File  menu  (`Selector
375       menu, File, Exit'), as `Exit' is generally on any File menu.)
376

THUMBNAILS

378       (This section is deliberately early on in the manual, as thumbnails are
379       probably the most important feature of the file selector, so it's  best
380       that you know how to create/update them sooner rather than later.)
381
382       Thumbnails  are  small versions of the pictures they represent, and are
383       displayed by the file selector if they exist. xzgv  uses  xv-compatible
384       thumbnails  ---  if  you  create thumbnails with xv they will work with
385       xzgv, and vice versa. xzgv's thumbnails are also  compatible  with  the
386       Gimp, and zgv.
387
388       If  no  thumbnail  exists  for  a file, a small `document' icon appears
389       instead (similar to the `folder' icon used for directories).
390
391   Updating Thumbnails
392       While thumbnails can be made relatively quickly, it's by  no  means  an
393       instant  process.  For  this  reason,  thumbnails have to be created in
394       advance, and are stored as files in their own right in  a  subdirectory
395       .xvpics.
396
397       xzgv never creates/updates thumbnails without you telling it to. So, if
398       you enter a directory where the picture files  don't  have  any  thumb‐
399       nails, or where the thumbnails seem to be out of date, you should press
400       `u', or select Update Thumbnails from the selector's  menu.   (Even  if
401       the  thumbnails  can't be written (say, if you don't have permission to
402       write them), the selector will still show the updated thumbnails  until
403       you leave the directory.)
404
405       Alternatively,  you can create/update thumbnails for the current direc‐
406       tory and all subdirectories by using `Alt-u' or Recursive  Update.  But
407       be warned that a recursive update can take some time!
408
409       `u'
410       `Selector menu, Update Thumbnails'
411              Create  thumbnails  for  any  files  which  don't have them, and
412              update thumbnails which are older than the  corresponding  file.
413              While this is going on, a window appears showing how far through
414              the process xzgv is.
415
416              While the update is in progress, you can abort it by clicking on
417              the  Cancel button, or pressing `Esc' or `Enter', or by clicking
418              the delete-window button (if your window manager  provides  one)
419              on the title bar. xzgv will stop once it has finished the thumb‐
420              nail it is currently working on (if any).
421
422       `Alt-u'
423       `Selector menu, Recursive Update'
424              Create/update thumbnails for all files in the current  directory
425              and  all  subdirectories.  This  can  take some time, so you are
426              prompted to confirm you really  want  to  do  this  (see  Dialog
427              Boxes). Progress is indicated in much the same way as for a nor‐
428              mal update, but only for the directory currently  being  updated
429              ---  the  overall  progress  is not indicated, other than by the
430              current dir being (as  ever)  displayed  in  the  main  window's
431              title.  You  can  abort a recursive thumbnail update in the same
432              ways as for a normal update (see above).
433
434              By default, xzgv behaves a little oddly when doing  a  recursive
435              update,  to  give  some  consistency with the normal update. See
436              Thumbnail Issues, for details.
437
438   Thumbnail Issues
439       Dealing with thumbnails can be `interesting' at times, and there are  a
440       few ways this influences things:
441
442       - xzgv doesn't read the thumbnails in a directory all at once. Instead,
443       it just reads the directory contents, then starts  up  what  is  effec‐
444       tively a kind of background task to read in the thumbnails. So xzgv may
445       not be quite as responsive as usual for a short time after  entering  a
446       directory  with  many  thumbnails  (say,  a few hundred) --- but on the
447       other hand, at least it is responding. :-)
448
449       - The `background task' makes a special effort to show  thumbnails  for
450       the  files  currently visible in the selector first, no matter how much
451       you move around the list, but it reads them all in eventually.
452
453       - The thumbnails used in xzgv require 256 colours to display. This  can
454       be  a  problem  if  you're running X in 256 colours or less as, even if
455       you're  running  an  8-bit  (256  colour)  server,  there  will  almost
456       inevitably  be fewer colours available. Currently, xzgv just uses what‐
457       ever gdk reports as the closest match to each individual colour used in
458       thumbnails.  This  gives  a tolerable result on 8-bit servers, assuming
459       gdk was able to allocate a large number of colours; however,  it  gives
460       terrible  results  if  it  couldn't,  or  if  running on 4-bit or 1-bit
461       servers. Sorry about this --- it should be fixed in future  (either  by
462       using gdk to draw the thumbnail pixmaps, or by dithering them `by hand'
463       to suit the colours available).
464
465       - Finally, when doing a recursive thumbnail update, xzgv  (by  default)
466       reads  existing  thumbnails  in  a  directory  before  updating any. Or
467       rather, it reads thumbnails for those files currently  visible  in  the
468       selector.  This can slow things down very slightly, but keeps the `look
469       and feel' consistent with the normal update. (Still,  you  can  disable
470       this with the `--fast-recursive-update' command-line option (see Invok‐
471       ing xzgv) or equivalent config file entry (see Configuring xzgv).)
472

SELECTOR LAYOUT AND RESIZING

474       The file selector is simply a list  of  subdirectories  and  filenames,
475       along  with any thumbnails that exist for them. The list is normally in
476       asciibetical order (but you can change this; see Changing  the  Sorting
477       Order).  Names  of  directories  are shown first, and they are shown in
478       order at the beginning of the list, before all the picture files.  Long
479       filenames may not fit in the visible part of the file selector display;
480       if so, there will be a horizontal scrollbar you can use to see the rest
481       of  the name(s) (you can use cursor left/right to do this from the key‐
482       board).
483
484       The list is very often larger than can fit on the screen  at  once.  If
485       this is the case, only part is shown at a time, but you can move around
486       the list using the (vertical) scrollbar, or with cursor up/down and the
487       like.
488
489       If  you  find the selector window to be too small vertically, and would
490       like to see more files at once, you can start xzgv fullscreen by  using
491       the  -f  option  (see  Options),  and/or use `thin rows' mode (see File
492       Selector Options).
493
494       If you find the selector too small (or too big) horizontally,  you  can
495       change this by moving the splitter line's `handle' (a small square but‐
496       ton between the selector and viewer, near the bottom  of  the  window),
497       which  changes  the  relative sizes of the selector and viewer. You can
498       move it by dragging it with the mouse, or with these keys:
499
500       `['
501              Move the window split left.
502
503       `Ctrl-['
504              Move the window split left more slowly.
505
506       `]'
507              Move the window split right.
508
509       `Ctrl-]'
510              Move the window split right more slowly.
511
512       `~'
513              Reset the window split to its default position.
514
515       You can also set the  initial/default  size  of  the  selector  ---  in
516       effect,  the  position of the window split --- using `--selector-width'
517       (see Options) or the config file option `selector-width'.
518

MOVING AROUND THE LIST

520       This section is mainly for those of us more inclined  to  the  keyboard
521       side of the force. :-) Mouse-happy types can freely skip it.
522
523       When  the  selector has the keyboard focus, the cursor (or in GTK+ jar‐
524       gon, the `focus row') is normally shown as a hollow box around  one  of
525       the list's rows. This serves the following functions:
526
527       - It selects a file for view commands to operate on.
528
529       -  It  determines  which  part of the list is shown, as the part of the
530       list shown onscreen always contains the cursor (unless you move  around
531       using the mouse).
532
533       There  are  several  commands  for  moving the cursor. In summary, most
534       `special' keys like the cursors do what you'd imagine they do,  but  in
535       more detail:
536
537       `Cursor Up'
538       `k'
539              Move up.
540
541       `Cursor Down'
542       `j'
543              Move down.
544
545       `Page Up'
546       `Ctrl-u'
547              Move the cursor back roughly a page.
548
549       `Page Down'
550       `Ctrl-v'
551              Move the cursor forward roughly a page.
552
553       `Ctrl-Home'
554       `Ctrl-a'
555              Move the cursor to the start of the list.
556
557       `Ctrl-End'
558       `Ctrl-e'
559              Move the cursor to the end of the list.
560
561       `g'
562       `''
563              Move the cursor to the first filename starting with the next key
564              pressed, which would generally be a letter or  number.  Case  is
565              significant;  `a'  and  `A'  are different. If no key is pressed
566              within 2 seconds, the command is cancelled.
567
568              If no files start with the specified character, it moves to  the
569              first  file  which  starts  with  a  later char (in asciibetical
570              order). If there are none for which this is the case,  it  moves
571              to  the  last  file --- unless there are no files (just directo‐
572              ries), in which case it has no effect.
573

VIEWING A FILE

575       To view a file from the selector, you can click on it, or press `Enter'
576       after  moving  the  cursor  to the relevant file, or right-click on the
577       file and choose `File' then `Open'.
578
579       `Enter'
580       `Left-click-on-file'
581       `Selector menu, File, Open'
582              View the chosen picture file, or if a  subdirectory  is  chosen,
583              make that the current directory.
584

DIALOG BOXES

586       See  The  Viewer,  for  details of how the viewer works.  If xzgv has a
587       serious problem reading a file, it will  give  an  error.   Errors  are
588       shown in dialogs which appear in the middle of the screen --- they stay
589       there until you click Ok (or press `Enter' or `Esc').
590
591       xzgv also uses similar dialog boxes for other things:
592
593       - Getting confirmation that you want to do something.  `Enter'  or  `y'
594       picks  `yes'; `Esc' or `n' picks no. (Again, you can click on the rele‐
595       vant button with the mouse to do the same.)
596
597       - Showing progress when  updating  a  thumbnail.  This  is  a  slightly
598       unusual  dialog, in that it automatically disappears when the update is
599       complete.  However, it does provide a Cancel button which you can click
600       to abort the update (pressing `Enter' or `Esc' does the same).
601
602       -  Reading  a  directory  name. Here you should type the directory name
603       then click Ok (or press `Enter'), or click Cancel (or press  `Esc')  to
604       abort. The text-input `widget' used allows a certain amount of editing,
605       including these keys:
606
607       `Cursor Left'
608       `Ctrl-b'
609              Move the cursor left. (A vertical bar  shows  the  cursor  posi‐
610              tion.)
611
612       `Cursor Right'
613       `Ctrl-f'
614              Move the cursor right.
615
616       `Home'
617       `Ctrl-a'
618              Move the cursor to the start of the line.
619
620       `End'
621       `Ctrl-e'
622              Move the cursor to the end of the line.
623
624       `Backspace'
625       `Ctrl-h'
626              Delete char to the left of the cursor. (Note that `Backspace' is
627              (usually) the key above  the  main  `Enter'  key;  it  is  often
628              labelled simply as an arrow.)
629
630       `Delete'
631       `Ctrl-d'
632              Delete the char the cursor is on.
633
634       You  can also set the X selection (by selecting text with the mouse, or
635       holding `Shift' while moving the cursor) to  allow  pasting  text  into
636       other programs, and you can cut/copy/paste text in the usual ways:
637
638       `Shift-Delete'
639       `Ctrl-x'
640              Cut text.
641
642       `Ctrl-Insert'
643       `Ctrl-c'
644              Copy text.
645
646       `Shift-Insert'
647       `Ctrl-v'
648              Paste text.
649
650       You can paste text from (some) other programs using the latter command,
651       too.
652

CLOSING A FILE

654       Usually, when you view a file, the viewer subwindow keeps displaying it
655       until  you view a different file. However, if you `close' the file, the
656       viewer stops displaying the file and returns to its initial state.
657
658       `Ctrl-w'
659       `Selector menu, File, Close'
660              `Close' the currently-viewed file, clearing the  viewer  subwin‐
661              dow.
662

FILE DETAILS

664       The listing the selector gives for a file is pretty sparse --- just the
665       filename and (if the file has one) the  accompanying  thumbnail.  While
666       this does keep things simple, you sometimes want to know how much space
667       a file takes up, when it was  last  modified,  the  dimensions  of  the
668       image,  that  kind  of thing. So, you can show details of a single file
669       using the `file details' command:
670
671       `:'
672       `;'
673       `Selector menu, File, Details'
674              Show various details about the file pointed to by  the  keyboard
675              cursor.   See  The  Selector  Menu,  for  how to choose the file
676              details are given for when  using  the  mouse.  (Basically,  you
677              right-click on the file when popping up the menu.)
678
679       Most of the details shown come from the OS (by using the `stat(2)' sys‐
680       tem call), and should always be available unless you have limited  per‐
681       missions  for  the  directory  the  file  is  in.  The  file dimensions
682       (width/height), however, come from the file's thumbnail. If it  doesn't
683       have one, or if it's unreadable, or if it has one and it's readable but
684       it doesn't mention the original image's width/height, then the  Details
685       from thumbnail area is greyed out.
686
687       (In explanation of the latter point --- pre-5.0 versions of zgv did not
688       generate width/height comments in thumbnails, so zgv users in  particu‐
689       lar  may  find  the width/height details missing. (xzgv has always been
690       ok, though, it's just zgv which had this problem.) Worse yet,  versions
691       5.0  and 5.1 generated them with incorrect sizes for most JPEGs. To fix
692       either problem for a given directory, do `rm -fr .xvpics' in  that  dir
693       from  a shell prompt and recreate the thumbnails with zgv 5.2 or later,
694       or xzgv/xv/Gimp.)
695

TAGGING

697       The file selector is not restricted to working on one file at  a  time.
698       You  can  `tag' as many (or as few) files as you wish, and certain com‐
699       mands described in this section will act on them.
700
701       Initially, all files are untagged, and the filenames usually appear  in
702       black  (though  this  depends  on  the GTK+ theme you're using). Tagged
703       files appear in red.
704
705   Tag and Untag Commands
706       There are several ways to tag or untag files. The  keyboard-based  ones
707       which  work  on  individual  files (also available on the Tagging menu)
708       move the cursor down one row afterwards, to make tagging  or  untagging
709       multiple files easier.
710
711       To  tag or untag a single file with the mouse, control-click (i.e. hold
712       down the control key and click) on the relevant filename  or  thumbnail
713       in  the  selector. It's true that you could use Tag and/or Untag on the
714       Tagging menu (see The  Selector  Menu,  for  how  to  choose  the  file
715       tagged/untagged  when doing it this way), but this is usually much less
716       convenient than using control-click. (The menu entries  for  those  are
717       really just for completeness.)
718
719       There  is  also a command available in the viewer to tag the currently-
720       viewed file. See Changing Picture, for details.
721
722       `='
723       `+'
724       `Keypad +'
725       `0'
726       `Selector menu, Tagging, Tag'
727              Tag file.
728
729       `-'
730       `Keypad -'
731       `9'
732       `Selector menu, Tagging, Untag'
733              Untag file.
734
735       `Alt ='
736       `Alt-Keypad +'
737       `Alt-0'
738       `Selector menu, Tagging, Tag All'
739              Tag all files.
740
741       `Alt -'
742       `Alt-Keypad -'
743       `Alt-9'
744       `Selector menu, Tagging, Untag All'
745              Untag all files.
746
747       `Alt-o'
748       `Selector menu, Tagging, Toggle All'
749              Toggle all tags. This inverts the tagged state, so that all pre‐
750              viously   tagged  files  become  untagged,  and  all  previously
751              untagged files become tagged.
752
753       Currently there is no way to toggle a (single) file's  tag  state  from
754       the keyboard.
755
756   Moving Between Tagged Files
757       These commands let you search for (move to) the next or previous tagged
758       file (if any). Note that `next' and `previous' here are relative to the
759       keyboard  cursor's position; if you use these from the menu, be careful
760       to right-click on the file you want to start the search from.
761
762       `/'
763       `Selector menu, Tagging, Next Tagged'
764              Move to next tagged file in dir.
765
766       `?'
767       `Selector menu, Tagging, Previous Tagged'
768              Move to previous tagged file in dir.
769
770       Equivalent commands are also available in the viewer (see Changing Pic‐
771       ture).
772
773   Copying/Moving Files
774       You  can  copy  or  move tagged files to a directory you specify. If no
775       files are tagged, xzgv copies/moves the file the cursor is currently on
776       ---  unless  the cursor is on a subdirectory, in which case it gives an
777       error.
778
779       `C (Shift-c)'
780       `Selector menu, File, Copy'
781              Copy tagged files (or the current file) to  a  given  directory.
782              xzgv asks for the destination directory using a dialog (see Dia‐
783              log Boxes) and copies the files there. If it  comes  to  copy  a
784              file  but  there  is  an  existing file in the dir with the same
785              name, the file is not copied and nor are any  of  the  remaining
786              files.
787
788       `M (Shift-m)'
789       `Selector menu, File, Move'
790              Move tagged files (or the current file) similarly.
791

RENAMING A FILE

793       As well as copying/moving files, you can rename them:
794
795       `Ctrl-n'
796       `Selector menu, File, Rename file'
797              Rename  the  current  file  or directory --- xzgv will refuse to
798              overwrite any existing  files/directories.  The  new  name  must
799              remain  in the current directory. (See Copying/Moving Files, for
800              how to move a file to a different directory (albeit keeping  the
801              same  name).)  See The Selector Menu, for how to choose the file
802              renamed when using the mouse.  (Basically,  you  right-click  on
803              the file when popping up the menu.)
804
805       I know `Ctrl-n' isn't the most mnemonic keypress possible for `rename',
806       but all the good ones were taken. :-/
807

DELETING A FILE

809       Deleting a file is pretty straightforward:
810
811       `Ctrl-d'
812       `Selector menu, File, Delete file'
813              Delete the file pointed to  by  the  keyboard  cursor  (and  any
814              accompanying  thumbnail).  See  The  Selector  Menu,  for how to
815              choose the file deleted when using the  mouse.  (Basically,  you
816              right-click on the file when popping up the menu.)
817
818       Note that only one file is deleted (hence `Delete file'); there is cur‐
819       rently no way to delete all tagged files.
820

CHANGING DIRECTORY

822       The easiest way to change the current directory in xzgv is  usually  to
823       click  on  a directory entry in the file list (or move the cursor to it
824       and press `Enter'). Selecting the `..' entry moves to the parent direc‐
825       tory of the current one.
826
827       There is an alternative though:
828
829       (Note that the key for this command is shift-`g', not `g'.)
830
831       `G'
832       `Selector menu, Directory, Change'
833              Go  to  a  specified  directory.  xzgv  asks for the destination
834              directory using a dialog box which you  should  type  the  dir's
835              name  into (see Dialog Boxes), and moves to that directory if it
836              exists.
837

RESCANNING THE DIRECTORY

839       Normally, xzgv reads a directory once (on starting up, or  when  a  new
840       directory is selected). So if the contents of the directory are changed
841       by another program, this is not automatically reflected. You can,  how‐
842       ever,  explicitly  tell xzgv to `rescan' the directory (reread the con‐
843       tents), which will update xzgv's notion of what's in it:
844
845       `Ctrl-r'
846       `Selector menu, Directory, Rescan'
847              Rescan the current directory.
848

CHANGING THE SORTING ORDER

850       Normally, the files are listed in asciibetical order by name.  However,
851       you  can  instead  have  the  file  list  sorted by size, last-modified
852       date/time, or by `extension' (the file type).
853
854       (Only the order of files can be altered; directories are always  listed
855       first, and always in name order.)
856
857       `Alt-n'
858       `Selector menu, Directory, Sort by Name'
859              Sort by name. This is the default.
860
861       `Alt-e'
862       `Selector menu, Directory, Sort by Extension'
863              Sort by extension.
864
865       `Alt-s'
866       `Selector menu, Directory, Sort by Size'
867              Sort by size. The biggest files are listed last.
868
869       `Alt-d'
870       `Selector menu, Directory, Sort by Time & Date'
871              Sort by time/date. The newest files are listed last.
872
873       You  can  set the default sort order via the command-line (see Invoking
874       xzgv) or a config file (see Configuring xzgv).
875
876       There are three possible timestamps you can use for the `Time  &  Date'
877       sorting order:
878
879       `Alt-Shift-m'
880       `Selector menu, Directory, Time & Date Type, Modification Time (mtime)'
881              Use the last-modified time (`mtime'). This is the default.
882
883       `Alt-Shift-c'
884       `Selector  menu,  Directory,  Time  &  Date Type, Attribute Change Time
885       (ctime)'
886              Use the last-attribute-change time (`ctime'). Note that this  is
887              not  always  the time the file was created, which it's sometimes
888              mistaken for; for example, moving a file with `mv' will  usually
889              change the ctime.
890
891       `Alt-Shift-a'
892       `Selector menu, Directory, Time & Date Type, Access Time (atime)'
893              Use  the last-accessed time (`mtime'). The selector order is not
894              automatically updated when xzgv reads files,  since  this  would
895              probably be annoying; do a manual rescan if need be.
896

FILE SELECTOR OPTIONS

898       Various  aspects  of  the  file  selector's behaviour can be configured
899       while xzgv is running, by using these toggle commands (which enable the
900       feature if it was previously disabled, and vice versa).
901
902       These  settings  can  also  be  altered using command-line options (see
903       Options) and/or config file settings (see Configuring xzgv).
904
905       `Alt-a'
906       `Selector menu, Options, Auto Hide'
907              Toggle the auto-hiding of the selector when a picture is  viewed
908              (off  by  default).  This is handy for small screens/windows, or
909              for old-time zgv users who just dig that groovy modal interface,
910              er, man. :-)
911
912       `Alt-b'
913       `Selector menu, Options, Status Bar'
914              Toggle  status  bar  at  the  bottom  of  the  selector  (off by
915              default). This displays messages in  certain  circumstances  ---
916              normally, it just says when a picture is being read.
917
918       `Selector menu, Options, Thumbnail Msgs'
919              Toggle  reading-thumbnails messages (default is off), only visi‐
920              ble if the status bar is enabled. These messages make  it  clear
921              when  all  thumbnails have been read, but having something flash
922              up every time you change directory is generally just annoying.
923
924       `v'
925       `Selector menu, Options, Thin Rows'
926              Toggle `thin rows' mode (off by default),  in  which  thumbnails
927              are  shown  at a third their normal size so that many more files
928              can be shown at once. (The odd keyboard  shortcut  for  this  is
929              inherited  from  zgv's `visual' mode toggle, which had a roughly
930              similar effect.)
931
932       `Alt-i'
933       `Selector menu, Directory, Images Only'
934              Toggle the option to show only directories and  image  files  in
935              the  selector  (off  by  default).  This is handy in directories
936              where images and other file types are intermingled and you  want
937              to  avoid  the `Couldn't load image' error on those other files.
938              Images are identified by their extensions.
939

THE VIEWER

941       Once you've selected a file to view, it's  shown  in  the  viewer  (the
942       right-hand  part of xzgv's window). This section describes what you can
943       do while viewing the picture.
944
945       Like the selector, the viewer has its own menu --- right-click anywhere
946       on  the  viewer (or press `F10' or `Menu') to show it --- and a similar
947       help menu (see The Selector Menu).
948

EXITING THE VIEWER

950       When using the mouse to control xzgv, it  doesn't  matter  whether  the
951       selector  or  the  viewer has keyboard focus --- mouse operations tran‐
952       scend such petty boundaries. :-) But keyboard control is (of necessity)
953       effectively  modal,  and  so  you need to `exit' the viewer in order to
954       have keyboard control over the selector again. You also  need  to  exit
955       the viewer if you've enabled auto-hide mode.
956
957       Exiting the viewer is simple:
958
959       `Esc'
960       `Tab'
961       `Viewer menu, Exit to Selector'
962              Exit  the  viewer.  This also returns the selector to its former
963              size, if it was previously `hidden'.
964
965       Another way of exiting the viewer is to middle-click on  it,  but  this
966       mouse-only  approach  is  really only of use when the selector is `hid‐
967       den'.
968

BIG PICTURES

970       A picture may well be too large to fit entirely in the  viewer  window.
971       There are two main things which can help you see more of the picture at
972       once:
973
974       - Make the xzgv window larger. You could `maximize' it with your window
975       manager,  or  you could start xzgv with a larger window using `--geome‐
976       try' or fullscreen mode (see Options). The fullscreen mode  gives  xzgv
977       the maximum window size possible, but needs co-operation from your win‐
978       dow manager (and alas, many are not as willing as one might  like)  ---
979       in  some  cases  you  may  even  find `--geometry 100%x100%' to be more
980       effective.
981
982       - Hide the selector. To do this, either use auto-hide  mode  (see  File
983       Selector  Options),  or  hide  the  selector explicitly (see Hiding the
984       Selector).
985
986       But of course, these are only partial solutions to the  problem;  there
987       will  inevitably always be pictures larger than your screen can show at
988       once. In general, then, there are two ways to see the whole of the pic‐
989       ture.
990
991   Scrolling
992       Scrolling  is  the  default  approach to handling big pictures in xzgv.
993       When the viewer is started up, the top-left of the picture is shown ---
994       you  can  either drag the picture around with the mouse (i.e. click and
995       hold the button down, then move the mouse around), or use  the  scroll‐
996       bars,  or  use  the cursor keys (and others) to move around the rest of
997       the picture:
998
999       `Cursor Up'
1000       `K'
1001              Move up 100 pixels. `Ctrl-Cursor Up' and `k'  both  move  up  10
1002              pixels.
1003
1004       `Cursor Down'
1005       `J'
1006              Move  down 100 pixels. `Ctrl-Cursor Down' and `j' both move down
1007              10 pixels.
1008
1009       `Cursor Left'
1010       `H'
1011              Move left 100 pixels. `Ctrl-Cursor Left' and `h' both move  left
1012              10 pixels.
1013
1014       `Cursor Right'
1015       `L'
1016              Move  right  100  pixels.  `Ctrl-Cursor Right' and `l' both move
1017              right 10 pixels.
1018
1019       `Page Up'
1020       `Shift-Cursor Up'
1021       `Ctrl-u'
1022              Move up (nearly) the window height. (It  moves  by  90%  of  the
1023              height.)
1024
1025       `Page Down'
1026       `Shift-Cursor Down'
1027       `Ctrl-v'
1028              Move down (nearly) the window height.
1029
1030       `-'
1031       `Shift-Cursor Left'
1032              Move left (nearly) a window-length. (It moves by 90% of it.)
1033
1034       `='
1035       `Shift-Cursor Right'
1036              Move right (nearly) a window-length.
1037
1038       `Home'
1039       `Ctrl-a'
1040              Move to the top-left of the picture.
1041
1042       `End'
1043       `Ctrl-e'
1044              Move to the bottom-right of the picture.
1045
1046   Zoom Mode
1047       An alternative way of viewing the whole picture, one which lets you see
1048       the picture onscreen all at once no matter how big (or small) it is, is
1049       zoom mode.
1050
1051       Zoom  mode's name derives from the idea of `zooming' a small file up to
1052       fit the window. But in reality, it is more often used to reduce a large
1053       file to fit.
1054
1055       Zoom  mode  is not the default, and has to be enabled. Once enabled, it
1056       stays on until you turn it off again (or until you enable  scaling,  or
1057       select Normal (see Scaling)).
1058
1059       `z'
1060       `Viewer menu, Options, Zoom (fit to window)'
1061              Toggle zoom mode.
1062
1063       `Alt-r'
1064       `Viewer menu, Options, When Zooming Reduce Only'
1065              When in zoom mode, only reduce pictures to fit. This can be use‐
1066              ful when going through a lot of unpredictably-sized pictures, as
1067              it  means  that  you can see all of a big picture easily without
1068              also meaning that tiny little icons assume a scale  of  Biblical
1069              proportions. :-)
1070
1071       `Alt-p'
1072       `Viewer menu, Options, When Zooming Panorama'
1073              When  in  zoom mode, resize to make the most proportional dimen‐
1074              sion fit and allow scrolling on the other dimension. This can be
1075              useful when viewing iamges that do not adjust nicely to the win‐
1076              dow size but you want to see them as big as possible while using
1077              the  most  space  available.  The cause for this function was to
1078              better read comics, so you can guess it works like a  `fit  page
1079              width' option, but is not limited to horizontal adjustment.
1080
1081       The  way  zoom  mode  reduces  a file to fit the window is (relatively)
1082       quick but harsh, and may make the picture look a bit  ugly.  In  future
1083       there  may  be  a  smoothing option like zgv's vkludge, but for now I'm
1084       afraid the fairly crude resize is all that's available.
1085
1086       There is in fact an alternative to zoom mode, as you can scale down  an
1087       image  instead.  This  is  generally only useful for very large images,
1088       however; zoom mode tends to be the Right Thing for the most part.
1089

SCALING

1091       You can scale a picture --- this makes it appear  larger  (or  smaller)
1092       onscreen.  xzgv  acts  much as if the scaled picture were the real pic‐
1093       ture; for example, the cursor keys scroll around in steps of 100 scaled
1094       pixels,  even  if this means moving a fraction of a pixel (or many pix‐
1095       els) in the original picture  (and  similarly  for  movement  with  the
1096       mouse).
1097
1098       The  main  limitation  of  scaling (other than how much it slows things
1099       down :-), at least when scaling up) is that you can only scale by inte‐
1100       ger  values,  so  you  can  only  make each pixel in the image twice as
1101       wide/high, or three times as wide/high, or four times, and so on.
1102
1103       (It may seem odd saying e.g. `twice as wide/high'  rather  than  `twice
1104       the size', but technically `twice the size' would be referring to scal‐
1105       ing up the width (and height) by about 1.414...)
1106
1107       Normally, xzgv does no scaling, which could be considered  a  ratio  of
1108       1:1.   Scaling  up increases that ratio. How it is increased depends on
1109       which option/key you use:
1110
1111       `d'
1112       `Viewer menu, Scaling, Double Scaling'
1113              Increase the ratio by doubling it --- this leads  to  ratios  of
1114              2:1, 4:1, 8:1...
1115
1116       `s'
1117       `Viewer menu, Scaling, Add 1 to Scaling'
1118              Increase  the  ratio  by  adding one --- leads to ratios of 2:1,
1119              3:1, 4:1...
1120
1121       There are similar commands to decrease the ratio:
1122
1123       `D (Shift-d)'
1124       `Viewer menu, Scaling, Halve Scaling'
1125              Decrease the ratio by halving it.
1126
1127       `S (Shift-s)'
1128       `Viewer menu, Scaling, Sub 1 from Scaling'
1129              Decrease the ratio by subtracting one.
1130
1131       Usually the double/halve scalings are more useful.
1132
1133       Note that you can also double/halve the scaling  by  using  shift-left-
1134       click  on  the  viewer  to double, and shift-right-click to halve. This
1135       still changes scale `around' the middle of the  window  though  (rather
1136       than around the point clicked on, as you might expect), which is a lit‐
1137       tle strange and may possibly be changed in future.
1138
1139       When you scale `below' 1:1, the above commands lead to ratios of (e.g.)
1140       1:2,  1:4, 1:8, etc. --- that is, the ratios work the same way, but the
1141       other way around. This gives you an increasingly small image.
1142
1143       The scaling ratio is never decreased  below  1:32.  It  is  also  never
1144       increased  beyond  the  point where the overall image size would exceed
1145       32767x32767 --- this limit is due to the combination of  X's  limit  on
1146       window sizes, and the implementation used by xzgv for scaling.
1147
1148       One  problem with scaling up, given the way it's currently implemented,
1149       is that it's not well-suited to dithered display --- so if you're  run‐
1150       ning  on  an  8-bit server, dragging the image around slowly when using
1151       scaling (especially scaling with  interpolation)  may  result  in  some
1152       nasty, streaky, undithered-looking parts of the picture. :-(
1153
1154       You can undo the effect of scaling (up or down) at any time:
1155
1156       `n'
1157       `Viewer menu, Scaling, Normal'
1158              Resume `normal' display --- disables scaling mode, and also zoom
1159              mode.
1160
1161       Normally, scaling up works by simply making the pixels into larger  and
1162       larger  squares (in effect), which remain the same colour. However, you
1163       can enable a feature called `interpolation'  which  smoothly  graduates
1164       the  colour  change between the top-left corners of each pixel. This is
1165       very slow, but looks nice.
1166
1167       `i'
1168       `Viewer menu, Options, Interpolate when Scaling'
1169              Toggle interpolation in scaling mode.
1170
1171       (If you like the appearance of scaling with interpolation, you may also
1172       be interested in a program I wrote called pnminterp, which can scale up
1173       a PGM or PPM file while applying this effect. These days it's  part  of
1174       the netpbm package.)
1175
1176       Scaling  down,  however,  is implemented a bit like a special-case zoom
1177       mode, and currently there are no ways of making that look nicer. :-/
1178
1179       xzgv normally `reverts' scaling (returning the scale to  1:1)  back  to
1180       normal  when  you view a new picture. However, it's possible to disable
1181       this behaviour (see Viewer Options).
1182
1183       There is also support for an alternative form of scaling --- decoupled,
1184       or axis-specific, scaling. When you scale in this way, only one axis of
1185       the image is scaled at once. For example, you might  choose  to  effec‐
1186       tively  double  the height of an image (with the width left unchanged).
1187       Indeed, this sort of scaling is useful for temporarily correcting  pic‐
1188       tures  intended  for display using pixels twice as wide or high as nor‐
1189       mal.
1190
1191       `x'
1192       `Viewer menu, Scaling, X Only, Double Scaling'
1193              Increase the (x axis) ratio by doubling it.
1194
1195       `X (Shift-x)'
1196       `Viewer menu, Scaling, X Only, Halve Scaling'
1197              Decrease the (x axis) ratio by halving it.
1198
1199       `Alt-x'
1200       `Viewer menu, Scaling, X Only, Add 1 to Scaling'
1201              Increase the (x axis) ratio by adding one.
1202
1203       `Alt-Shift-x'
1204       `Viewer menu, Scaling, X Only, Sub 1 from Scaling'
1205              Decrease the (x axis) ratio by subtracting one.
1206
1207       `y'
1208       `Viewer menu, Scaling, Y Only, Double Scaling'
1209              Increase the (y axis) ratio by doubling it.
1210
1211       `Y (Shift-y)'
1212       `Viewer menu, Scaling, Y Only, Halve Scaling'
1213              Decrease the (y axis) ratio by halving it.
1214
1215       `Alt-y'
1216       `Viewer menu, Scaling, Y Only, Add 1 to Scaling'
1217              Increase the (y axis) ratio by adding one.
1218
1219       `Alt-Shift-y'
1220       `Viewer menu, Scaling, Y Only, Sub 1 from Scaling'
1221              Decrease the (y axis) ratio by subtracting one.
1222
1223       There are also mouse shortcuts for scaling up/down a single axis;  con‐
1224       trol-left-click  scales  up,  and  control-right-click  scales down. By
1225       default this acts on the y axis, but the active  axis  can  be  toggled
1226       with  `Alt-c', or by toggling the `Ctl+Click Scales X Axis' option (see
1227       Viewer Options).
1228
1229       Interpolation is not currently supported  in  situations  where  the  x
1230       scaling does not match the y scaling.
1231

MIRROR AND ROTATE

1233       Sometimes  when viewing a picture you will want to flip it horizontally
1234       or vertically, or rotate it:
1235
1236       `m'
1237       `Viewer menu, Orientation, Mirror (horiz)'
1238              `Mirror' the picture (flip it horizontally).
1239
1240       `f'
1241       `Viewer menu, Orientation, Flip (vert)'
1242              `Flip' the picture (flip it vertically).
1243
1244       `r'
1245       `Viewer menu, Orientation, Rotate Right'
1246              Rotate the picture 90 degrees clockwise.
1247
1248       `R (Shift-r)'
1249       `Viewer menu, Orientation, Rotate Left'
1250              Rotate the picture 90 degrees anti-clockwise.  (Any  US  readers
1251              surprised  and/or  annoyed  by my not saying `counter-clockwise'
1252              will realise why the menus say rotate right/left. :-))
1253
1254       `N (Shift-n)'
1255       `Viewer menu, Orientation, Normal'
1256              Restore the picture  orientation  to  normal.  This  undoes  the
1257              effect of any mirrors, flips, and/or rotations.
1258
1259       xzgv  normally  `reverts'  the picture orientation (the way the picture
1260       has been transformed by mirror/flip/rotate) back  to  normal  when  you
1261       view  a new picture. However, it's possible to disable this (see Viewer
1262       Options), so that  any  new  pictures  are  mirrored,  flipped,  and/or
1263       rotated in the same way.
1264

CHANGING PICTURE

1266       It's  possible  to  go directly to the previous or next file (or tagged
1267       file) in the directory, or to tag a file, without having  to  pick  the
1268       file  from  the  file selector by hand. These commands are particularly
1269       useful when using xzgv from the keyboard, but there's  also  a  notable
1270       mouse shortcut for moving to the next image.
1271
1272       `Space'
1273       `Viewer menu, Next Image'
1274              Move to next file in dir, and view it. You can also click on the
1275              picture/viewer to do this. (If you  find  this  interferes  with
1276              dragging the picture around (though it shouldn't), or just don't
1277              like it, it can be disabled (see Config Variables).)
1278
1279       `b'
1280       `Viewer menu, Previous Image'
1281              Move to previous file in dir, and view it.
1282
1283       `Ctrl-Space'
1284       `Viewer menu, Tagging, Tag then Next'
1285              Tag current file, then move to next file in dir and view it.
1286
1287       `/'
1288       `Viewer menu, Tagging, Next Tagged'
1289              Move to next tagged file in dir, and view it.
1290
1291       `?'
1292       `Viewer menu, Tagging, Previous Tagged'
1293              Move to previous tagged file in dir, and view it.
1294

HIDING THE SELECTOR

1296       When running on small screens, or in a small window, it can get  a  bit
1297       annoying  to  lose  viewer space by having the selector constantly dis‐
1298       played when you don't actually need it.  The  usual  solution  to  this
1299       problem  is  to enable auto-hide mode. But what if some pictures you're
1300       viewing are small and some large? It can sometimes be nearly as  annoy‐
1301       ing having the selector hidden to `make room for' a small picture which
1302       didn't need it. So for that reason, or perhaps if you just  don't  like
1303       auto-hide  mode  :-), you may prefer to leave auto-hide off and explic‐
1304       itly hide the selector when necessary:
1305
1306       `Z (shift-z)'
1307       `Viewer menu, Window, Hide Selector'
1308              Hide the selector. (This is actually a toggle, of  sorts;  `hide
1309              selector' when it's already hidden unhides it.)
1310
1311       You  can  also  hide  or  unhide the selector by middle-clicking on the
1312       viewer.
1313

MINIMIZING XZGV

1315       Generally it's easy enough to use your window manager to change windows
1316       etc.,  but when running fullscreen this can sometimes be a little prob‐
1317       lematic. For this reason, xzgv has built-in  support  for  `iconifying'
1318       itself:
1319
1320       `Ctrl-z'
1321       `Viewer menu, Window, Minimize'
1322              Minimize the xzgv window.
1323

VIEWER OPTIONS

1325       As  with  the  selector,  various options can be disabled/enabled which
1326       relate to the viewer.
1327
1328       These settings can also be  altered  using  command-line  options  (see
1329       Options) and/or config file settings (see Configuring xzgv).
1330
1331       `z'
1332       `Viewer menu, Options, Zoom (fit to window)'
1333              Toggle  zoom  mode, discussed in more detail elsewhere (see Zoom
1334              Mode).
1335
1336       `Alt-r'
1337       `Viewer menu, Options, When Zooming Reduce Only'
1338              Toggle reduce-only in zoom mode,  also  covered  elsewhere  (see
1339              Zoom Mode).
1340
1341       `Alt-p'
1342       `Viewer menu, Options, When Zooming Panorama'
1343              Toggle  panorama  view in zoom mode, also covered elsewhere (see
1344              Zoom Mode).
1345
1346       `i'
1347       `Viewer menu, Options, Interpolate when Scaling'
1348              Toggle interpolation when a picture is being  scaled-up.  Again,
1349              this has already been mentioned (see Scaling).
1350
1351       `Alt-c'
1352       `Viewer menu, Options, Ctl+Click Scales X Axis'
1353              Toggle the axis scaled when you control-click (or control-right-
1354              click) on the image. The default is to scale the y axis.
1355
1356       `F (shift-f)'
1357       `Viewer menu, Options, Dither in 15 & 16-bit'
1358              Toggle dithering in 15/16-bit modes. This increases the apparent
1359              colour depth making gradations look much better, but it's slower
1360              than undithered rendering, and can (in 16-bit) slightly  distort
1361              a  picture's colour balance. (The `F' key was chosen for this as
1362              the dither toggle is functionally similar  to  zgv's  `fakecols'
1363              toggle.)
1364
1365       `Viewer menu, Options, Revert Scaling For New Pic'
1366              Normally xzgv returns the scaling back down to 1 (normal) when a
1367              new picture is selected. By disabling this, you can retain scal‐
1368              ing  across  picture  selection. (There is currently no keyboard
1369              shortcut for this fairly-seldom-changed option --- to toggle  it
1370              from  the keyboard, you should use the popup menu (press `F10'),
1371              and select the menu item.)
1372
1373       `Viewer menu, Options, Revert Orient. For New Pic'
1374              Similarly, xzgv returns to the picture's true  orientation  (not
1375              mirrored,  rotated,  etc.) on selecting a new picture. Disabling
1376              this option means that any mirrors/flips/rotates applied persist
1377              across multiple images.  (No keyboard shortcut --- see above.)
1378
1379       `Viewer menu, Options, Use Exif Orientation'
1380              Toggle  support  for Exif orientation. Devices which create JPEG
1381              files in the Exif format (e.g. many digital cameras) may add  an
1382              orientation tag to the file, which says how the camera was being
1383              held when the picture was taken. When this tag is present,  xzgv
1384              can  adjust  the  image to compensate for a camera being held on
1385              its side. (This isn't done by default as  it  misrepresents  the
1386              true  image, which could be confusing if you don't know why it's
1387              happening.) Enabling this option may be useful if you take  pic‐
1388              tures  with  your  camera on its side, but don't want to have to
1389              rotate the pictures before being able to view them properly.  Of
1390              course,  for  this  to  work your camera has to be inserting the
1391              orientation tag in the first place --- but it can't hurt to  try
1392              it and see. (No keyboard shortcut --- see above.)
1393

FILE FORMATS

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

FILE TYPE IDENTIFICATION

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

CONFIGURING XZGV

1408       Many aspects of the way xzgv works can be modified by using a  configu‐
1409       ration file.
1410

CONFIG FILES

1412       A  configuration  file lets you alter aspects of xzgv's behaviour. xzgv
1413       supports  two  possible   config   files   ---   a   system-wide   one,
1414       /etc/xzgv.conf;  and  one  for  each  user  in  their  home  directory,
1415       $HOME/.xzgvrc. Both are optional. If $HOME/.xzgvrc exists, it  is  used
1416       instead of /etc/xzgv.conf.
1417
1418       Before  describing  the  format of config files, it may help to give an
1419       example file:
1420
1421       # Sample xzgv config file
1422       # Comment lines begin with `#' and are ignored,
1423       #  as are blank lines.
1424
1425       # make pics fit window
1426       zoom on
1427       # hog the screen :-)
1428       fullscreen on
1429
1430       It is a line-based format. Each line (or rather, each line which is not
1431       a comment line and is not blank) assigns a value to a single predefined
1432       `variable'. xzgv has many such variables it lets  you  modify  in  this
1433       way.   For example, the fullscreen option above controls whether or not
1434       xzgv tries to use the whole screen for its window. If it is  given  the
1435       value  `on'/`y'/`yes'/`1'  it  does; if `off'/`n'/`no'/`0', it doesn't.
1436       Most variables are of this yes-or-no `boolean' type.
1437
1438       Since the variables set in a config file have a direct  effect  on  how
1439       xzgv  works,  it  can be easier to simply call them `settings'. Indeed,
1440       such terminology is used on occasion in this documentation.
1441

CONFIG VARIABLE TYPES

1443       There are various types of variable:
1444
1445       - Boolean. These are on-or-off, yes-or-no  variables.  Most  of  xzgv's
1446       config file variables are of this type.
1447
1448       -  Integer.  These are whole numbers. The meaning of the number depends
1449       on what the variable is used for.
1450
1451       - Geometry. This window size-and/or-position  specification  format  is
1452       only used for the `geometry' setting. See Options, for a description of
1453       how this type works.
1454

CONFIG VARIABLES

1456       Currently, most configuration variables (settings) in xzgv can also  be
1457       set  by  command-line  options;  indeed, the name of the setting in all
1458       such cases is identical to that for the  long  version  of  the  option
1459       (e.g.  `fullscreen',  `auto-hide').  As such, they're documented in the
1460       section  which  discusses  command-line  options  and  the  like   (see
1461       Options).
1462
1463       However, there are some settings only available in the config file:
1464
1465       click-for-next
1466              This  is enabled by default, allowing you to click on the viewer
1467              to skip to the next image. If disabled, clicking on  the  viewer
1468              does nothing.
1469

RATIONALE

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

WHY YET ANOTHER VIEWER?

1475       Previously, this section concentrated on xv; that may have  made  sense
1476       when I originally wrote it, and still makes a certain limited amount of
1477       sense for zgv, but for xzgv it was looking increasingly dated.  And  so
1478       here I am writing an update. :-)
1479
1480       I originally wrote xzgv as I simply wasn't happy with the viewers for X
1481       that I was aware of at the time (mid-1999).  At  the  time  of  writing
1482       (late  2000), other key things about xzgv are becoming apparent, partly
1483       through responses I've been getting to it:
1484
1485       o It's `fast'. No, it doesn't do any particular operation  faster  than
1486       other  viewers  as  far  as I know (well, maybe thumbnail updates :-));
1487       rather, the interface tries not to get in your way. Click  on  a  file‐
1488       name,  and the picture appears. No multiplicity of toolbars or windows,
1489       it's just there.
1490
1491       o As with zgv, it tries to do one  thing  well,  viewing  pictures.  It
1492       isn't  perfect  in  this regard, I'll admit, but at least it stays well
1493       clear of picture editing.
1494
1495       o It's, er, quite a lot like zgv. Some of us old fogies like this. :-)
1496
1497       I won't pretend xzgv is The Ultimate Viewer For Everyone.  Some  people
1498       will  prefer  other  approaches,  or  just simply prefer other viewers.
1499       (Some people may even still use xv, ghod forbid.) There are a few view‐
1500       ers which you may like to try if you don't think much of xzgv:
1501
1502       o  gqview. This seems to be well-regarded. I find it a bit gimmicky and
1503       kitchen-sink-ish; not quite as `pure' or focused as xzgv, IMHO. I think
1504       more people use it than xzgv though.
1505
1506       o  xli. I'm not sure if this is maintained these days, but it's not too
1507       bad a viewer. No thumbnails or file  selector  though.  (These  days  I
1508       mostly  use  this for setting the root window pixmap, something I don't
1509       think belongs in a viewer, but which xli does happen to be  quite  good
1510       at.)
1511
1512       o  qiv.  If  I  read between the lines correctly, this is essentially a
1513       modern replacement for xli.
1514
1515       o gtksee. I've not tried this, but I think the idea  is  that  it's  an
1516       ACDSee  clone,  and  there seem to be an awful lot of people who want a
1517       clone of that. Which is their problem. :^)
1518
1519       o Electric Eyes. To be honest, I think  this  has  been  outclassed  by
1520       other viewers these days, which shows how far we've come.
1521
1522       Ah,  you  say,  what  of xv? Well, we've emphatically reached the point
1523       where no-one need use xv any more. Anyone using xv  these  days  really
1524       should drop that pile of ill-conceived non-Free crap and use one of the
1525       better viewers now available. It's that simple.
1526

WHY NO IMAGE-EDITING CAPABILITIES?

1528       It's a fscking viewer, dammit. If you want xv you know  where  to  find
1529       it.
1530
1531       (OTOH, if you want a decent image editor, use the Gimp.)
1532

WHY A TEXINFO MANUAL?

1534       For  years,  I maintained a conventional `man page' for zgv (which xzgv
1535       was loosely based on). But over time, I realised  just  how  impossibly
1536       confusing the zgv man page had become.
1537
1538       So  I  wanted to rewrite zgv's documentation in a more sensible way, in
1539       some other format than a man page. I wanted an  established,  well-sup‐
1540       ported format with structure and cross-referencing. I felt this made it
1541       a choice between HTML and texinfo. HTML seemed to me  to  be  a  moving
1542       target  like no other, and not as well supported on text-only terminals
1543       as Info (and thus texinfo). (This latter point is  admittedly  not  too
1544       relevant  as far as xzgv is concerned.) When I noticed that a converter
1545       existed to convert texinfo to HTML in any case, the  case  was  closed.
1546       xzgv's  documentation  was then based on zgv's --- the documentation is
1547       probably more similar than the programs are. :-)
1548
1549       Don't get me wrong --- I like man pages. And even  with  the  excellent
1550       Texinfo  documentation  and  Emacs'  very helpful Texinfo mode, writing
1551       texinfo is hardly easy. (Without Texinfo mode's node-  and  menu-update
1552       commands,  I  personally  would  find  it near-impossible!) But big man
1553       pages just aren't that good for reference, and this is  made  worse  by
1554       the relative lack of structure.
1555

WHY ONE-SPACE SENTENCE ENDS?

1557       The  conventional  way to write texinfo is to follow each sentence with
1558       two spaces after the dot (or whatever ends the sentence).  Many  people
1559       normally  write  this  way in a non-texinfo context too. But a sizeable
1560       proportion of people normally write text with only one space after  the
1561       dot --- and I'm one of them.
1562
1563       The  Texinfo  documentation gives the impression that two-space must be
1564       used; it says ``it is important to put two spaces at the  end  of  sen‐
1565       tences in Texinfo documents.'' But the only circumstance in which spac‐
1566       ing from the texinfo file is preserved at all (in any sense other  than
1567       `there  is a space here') is when the texinfo is converted to Info for‐
1568       mat. So, in fact, the decision to use  two-space  depends  on  how  the
1569       author  wants  Info  output to appear --- this is a subjective decision
1570       which should be entirely down to the preference of the author,  despite
1571       the  Texinfo  documentation's  attempt  to make two-space sound like an
1572       objective you-must-do-this kind of thing.
1573
1574       You might wonder what the problem with using one-space is, then.  Well,
1575       `makeinfo'  has to reformat paragraphs, and whenever it needs to insert
1576       space at (what appears to it to be) the end of a sentence,  it  inserts
1577       two  spaces.  This  behaviour  cannot be altered, unlike in Emacs (sen‐
1578       tence-end-double-space; see Fill Commands in the emacs info  file)  and
1579       GNU  fmt  (-u;  see  fmt  invocation in the textutils info file). Also,
1580       attempting to `fix' the output Info  with  sed  doesn't  work  properly
1581       because the `tags' used to find nodes quickly are then incorrect. These
1582       could of course also be fixed, but this would involve a lot  more  work
1583       than a simple sed invocation.
1584
1585       So  realistically,  anyone who writes texinfo with one-space has to put
1586       up with the occasional two-space sentence end being inserted into their
1587       text --- worse still, the current `makeinfo' formatting algorithm seems
1588       to insert two spaces even  after  abbreviations  (such  as  `e.g.'  and
1589       `etc.'),  which  breaks  even  two-space texinfo. (This is particularly
1590       ironic, by the way, since two-space partisans' main argument in  favour
1591       of  the practice is often the way it makes it possible to tell the dif‐
1592       ference between abbreviations and the end of a sentence.)
1593
1594       One last point may be worth noting; I am not the first person to  write
1595       texinfo  files  using  one-space. At the time of writing, it is used in
1596       the texinfo documentation for BFD,  gdbm,  GTK/GDK,  (Linux)  IPC,  and
1597       viper, and I expect there are instances I'm not aware of.
1598

BUGS AND RESTRICTIONS

1600       All (non-trivial) programs have bugs. Anyone who denies this...
1601
1602       - clearly hasn't written too many programs.
1603
1604       - is wrong. ;-)
1605
1606       It follows that xzgv, like everything else, always has some bugs.  Usu‐
1607       ally these are not too serious, or I'd have fixed them before releasing
1608       xzgv. But either way, bugs and other problems with xzgv are noted here.
1609

KNOWN BUGS

1611       -  In  zoom  mode,  it  copes  with resizing the window as a whole, but
1612       doesn't when you change the size of the  pane  (apart  from  when  hid‐
1613       ing/showing  selector or resizing from keyboard, but that's only 'cos I
1614       kludged it :-)).
1615
1616       - When scaling up and dithering, you end up with a crappy-looking  pic‐
1617       ture  if  you drag the picture around slowly (since each exposed bit is
1618       dithered independently, with no regard given to matching up to any pre‐
1619       vious error-diffusion).
1620
1621       - Scaling up is slow. Not sure if I can do much about this.
1622
1623       - Using an alignment widget to centre the viewer window results in some
1624       annoying `bounce' in certain resizing situations etc.
1625
1626       - Thumbnails don't look so great in palette-based (e.g. 8-bit) modes.
1627
1628       - When dragging an image around, if you quickly move the mouse  pointer
1629       over  from  the  image  area  to  the selector area, the image seems to
1630       `jump' a little. I think this may have something to do with  the  paned
1631       window's  window-splitting  bit,  but I'm not sure. Also, it jumps when
1632       moving across scrollbar sliders and the paned window splitter handle.
1633
1634       - It doesn't apply any tranparency mask. The practical result  of  this
1635       seems to be purple transparent bits in thumbnails and scaled-up images,
1636       and black transparent bits elsewhere. This doesn't  affect  PNG  files,
1637       though.
1638
1639       -  If a GIF file is corrupted in such a way that the decompressed image
1640       has a larger number of pixels in it, the extra pixels will  be  ignored
1641       and no error or warning will be generated.
1642
1643       -  If you look up `joe code' in a dictionary, right next to ``see zgv''
1644       it now says ``but for really in-depth insight into the joe code nature,
1645       see xzgv''. :-)
1646

SUBOPTIMAL FEATURES

1648       -  Thumbnails are given an accurate width/height `IMGINFO' comment, but
1649       are always claimed to be "RGB".
1650
1651       - xzgv doesn't duplicate zgv's behaviour of generating thumbnails under
1652       ~/.xvpics/_foo_bar_baz     if     it    can't    generate    them    in
1653       /foo/bar/baz/.xvpics. I doubt anything else supported it, and  it  com‐
1654       plicated lots of things unnecessarily. This isn't particularly subopti‐
1655       mal, but as an incompatibility with zgv it merits mention.
1656

RESTRICTIONS

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

REPORTING BUGS

1662       If  you  find  xzgv  does something wrong, which you suspect might be a
1663       fault of some sort (a bug) in the program, it is best to report it as I
1664       may  not  be aware of the problem. (But first, check it is not a `known
1665       bug'.  See Known Bugs. It is not usually helpful  to  report  a  bug  I
1666       already know about.)
1667
1668       It  is  important to include as much detail in a bug report as you can.
1669       Here are some details you should include:
1670
1671       o The version of xzgv you are running. `xzgv --version' reports this.
1672
1673       o The versions of GTK+ you are using. `xzgv --version-gtk' reports  the
1674       GTK+ version being used by xzgv.
1675
1676       o  The  bitdepth your X server is running in (common depths are 16-bit,
1677       24-bit, and 32-bit). If you don't know what depth  you're  running  in,
1678       try `xdpyinfo|grep depth'.
1679
1680       o  A  description of the bug --- what effects it has, the circumstances
1681       it occurs in, and so on. Does it only happen for certain types of file?
1682       Only when in 8-bit modes? Only when dithering is enabled? Even `irrele‐
1683       vant' details can sometimes be useful.
1684
1685       o Finally, if you are a programmer and believe you have managed to  fix
1686       the  bug yourself, patches are gratefully accepted. :-) You should gen‐
1687       erate the patch using `diff -c' or (preferably) `diff -u'.
1688
1689       Then, please file a bug report in the  SourceForge  bug  tracker.   See
1690       https://sourceforge.net/p/xzgv.
1691

REPORTING DOCUMENTATION BUGS

1693       Bugs  in  the documentation can sometimes cause as much trouble as bugs
1694       in the program; if you notice a problem in the  documentation,  it's  a
1695       good idea to report it.
1696
1697       For reports of documentation bugs, you should include these details:
1698
1699       o The version of xzgv the documentation is for.
1700
1701       o  If  it  is  a  problem in one specific section of the documentation,
1702       specify which part it is (by this I mean the heading  it  comes  under;
1703       texinfophiles should read this as `the node name' :-)).
1704
1705       o  The  format  of the documentation you saw the problem in (e.g. info,
1706       man page, HTML).
1707
1708       o A description of the problem.
1709

FUTURE CHANGES

1711       See Reporting Bugs, for details of where to send the  bug  report.   If
1712       you  want  to  suggest  a feature you'd like in xzgv, or a change to an
1713       existing feature, contact me; see See Reporting Bugs for the address.
1714
1715       Future changes etc. are listed in the TODO file.
1716

AUTHOR

1718       Russell Marks <rus@svgalib.org> and others; see  the  section  ACKNOWL‐
1719       EDGEMENTS for details.
1720

SEE ALSO

1722       zgv(1), xv(1), cjpeg(1), djpeg(1), pbm(5), pgm(5), ppm(5), mrf(5)
1723
1724
1725
1726Version 0.9                     9th August 2017                        XZGV(1)
Impressum