XV: The Visual Schnauzer, part 1/2

# The Visual Schnauzer

## What's a Visual Schnauzer?

Hint: it's not a smallish seeing-eye dog of Germanic descent.

Probably the most exciting new feature in Version 3.00 was the Visual Schnauzer, and while it hasn't changed dramatically in Version 3.10, it's still plenty exciting. The Visual Schnauzer gives you a visual interface to the UNIX file system. It lets you view tiny 'thumbnail' representations of your image files, directories, and other files. It lets you create directories, rename files, move and copy files to different directories, delete files, view image files, view text files, and just generally nose around.

In short, it's cool, and it should be of some use for those of us who have large numbers of GIF and JPEG files with non-descriptive MS-DOS-style '8+3' filenames.

Note: Unlike most xv windows, schnauzer windows are resizable. You can decide how many (or few) icons you'd like displayed by changing the size of the schnauzer window. It also should be pointed out that there are more command buttons available than are shown at the default schnauzer size. If you make the window larger, you will be given additional command buttons. All the commands are always available from the Misc. Commands menu.

## Operating the Schnauzer

Click on the Visual Schnauzer button in the xv controls window, or type a <Ctrl> v inside any active xv window. This will open a schnauzer window. The window will display the contents of the directory that you were in when you started xv. (Though this behavior, like so many things, can be overridden. See the description of the '`-dir`' command-line option in "Miscellaneous Options".)

The first time you open an image directory with the schnauzer, you'll find that your image files are not displayed as spiffy little thumbnail icons, but instead are shown as generic icons showing the file format used. This is because the icons need to be generated from the image files. Displaying a thumbnail icon would normally require loading the entire image, compressing it down to a small 80x60-ish image, and dithering it with some set of colors. This is a very time-consuming operation. To avoid doing this every single time you open a schnauzer window, xv lets you do this operation once, and it maintains the results in a hidden subdirectory ('`.xvpics`') for each directory. This subdirectory contains one small (2k) file for each file in the parent directory. The icons are in an 8-bit per pixel format, pre-dithered with a 332 RGB colormap.

So, assuming that there are some image files in the current directory, the first thing you should do is generate some icons. (If there aren't any image files in the current directory, exit xv and start it again from a directory that does have image files. We'll discuss navigating via the schnauzer later.)

### Generating Image Icons

To generate icons for all the images in the current directory, issue the select All files command from the Misc. Commands menu. All the icons in the current directory should 'light up' in some way to signify that they are selected, with the possible exception of the `<parent>` directory.

Next, issue the Generate icons command from the Misc. Commands menu. xv will begin the process of generating icon files for the selected files. This process can be quite time-consuming, particularly if you have a large number of files in the directory, or the image files are in the JPEG format. During this time, xv is effectively 'out-to-lunch', as it will not be paying attention to any X events. There isn't any way to stop it either, though if you kill the xv process from another window, you will succeed in stopping the icon generation. You will not lose any computed icons by doing this, as icon files are written out as they are computed, so it's perfectly safe to stop the generation via this method.

Also, you'll note that xv displays a bar-graph 'progress meter' at the top of the schnauzer window while it's doing this, so you can gauge roughly how long it will take. Icons will be displayed as they are generated, in an attempt to make the process as entertaining as possible.

### Changing Directories

The name of the current directory is displayed in a button at the top-center of the schnauzer window. You can change to any higher-level directory in the current path by pulling down this menu button. The names of the parent directories will be shown in the pull down menu.

You can also go up one level by double-clicking on the `<parent>` directory icon.

You can go down to any subdirectory by double-clicking on the appropriate subdirectory icon.

The Change Directory command gives you a more direct route: you just type the pathname of the directory you'd like to go to.

### Scrolling the Schnauzer

You can scroll the schnauzer by operating the vertical scroll bar, which operates exactly as described in "Operating a List Window" .

You can also scroll the window a page at a time by using the <PageUp> and <PageDown> keys on your keyboard (which may be labeled <Prev> and <Next> on some keyboards). The <Home> and <End> keys will take you to the beginning and end of the list, respectively. (If your keyboard doesn't have Home and End keys, <Shift> <PageUp> and <Shift> <PageDown> may also work.) You can scroll the list a line at a time by using the up and down arrow keys. Note, however, that the arrow keys move the indicator that shows the currently selected file. Likewise, the left and right arrow keys move the selection indicator left and right, wrapping at the edges of the window.

Also, if you type a normal, alphabetic character into the schnauzer window, it will attempt to scroll the window so that the first file beginning with that character will be visible. Note that this behavior keeps you from typing normal xv keyboard equivalents into this window, so don't even try it.

### Selecting Files

Double-click on an image file's icon. The image should be loaded, and the full path name of the image should be added to the bottom of the xv controls window's name list. You can also double-click on text files to view them in a TextView window. (See "The TextView Window" for more information.)

It is possible to select more than one file at a time. The easiest way to do so is to hold down the <Shift> key and click on icons. When the <Shift> key is held down, any icons clicked on are simply toggled between being selected, and being not selected. All other files remain as they were. If you type <Shift> <Space>, xv will keep all currently 'lit' files lit, and light (and load) the file after the last lit file it finds. This can be useful for building up a big list of files to delete by <Shift> <Space>-ing your way through the list, and manually unselecting any files you want to keep.

You can also select files by drawing a rectangle around icons that you want selected. To do so, simply click in the space in between the icons, and drag. A rectangle will be drawn, and all icons that are inside (or partially inside) the rectangle will be selected. Note that if you drag the rectangle off the top or bottom of the window, the window will automatically scroll. Also, if you hold down the <Shift> key while you draw a rectangle, any previously selected icons will continue to remain lit.

Finally, you can also select files by using the select All files command from the menu (or by typing a <Ctrl> a) to select all the icons in the current directory. If you want most of the files selected, it might be easiest to select all the files, hold down the <Shift> key, and selectively turn off the ones you don't want selected.

If you double-click on a selected file while there are multiple files selected, the clicked-on file will be displayed, and all selected filenames will be copied into the xv controls window's list.

### File Management

Once you have some files selected, you can move them to other directories by clicking on a lit icon and dragging it into one of the subdirectories. When you press the mouse button, the cursor will change to a 'files' cursor to indicate that you are potentially moving files around. If you move the cursor near the top or bottom edge of the window, the window will scroll up or down accordingly. Necessary, as the subdirectory folders are always shown at the top of the window. When you move the cursor on top of a folder (either the `<parent>` directory, or one of the subdirectories), the folder will light up to acknowledge your selection. If you release the mouse button while a folder is lit, all currently selected files (and folders) will be moved into the lit folder.

Note that, using only one schnauzer window, it's only possible to move files up or down one directory level. If you want to move files to completely unrelated directories, you can easily accomplish this by opening a second schnauzer window (via the open new Window command in the menu, or <Ctrl> w). Get the second schnauzer window aimed at the desired destination directory, and simply drag the files from the first window into the second window.

Also, when you drag files around, xv normally 'moves' the files from one directory to another. If you'd like, you can copy files instead of moving them. Just press (and hold down) the <Ctrl> key while dragging the files. The 'files' cursor will change to display 'CPY' as well, to signify that you are copying files instead of moving them.

The remaining file-management commands (renaming files, deleting files, and creating subdirectories) are discussed below.