ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/README
Revision: 1.5
Committed: Fri Mar 31 10:56:01 2006 UTC (18 years, 1 month ago) by root
Branch: MAIN
CVS Tags: rel-1_3, rel-1_2, rel-1_4
Changes since 1.4: +3 -2 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.3 cv - a fast gtk+ image viewer loosely modeled after XV
3 root 1.1
4     SYNOPSIS
5     cv [file...]
6    
7 root 1.3 FEATURES
8     CV is supposed to work similar to the venerable XV image viewer, just
9     faster. Why faster?
10    
11     * optimized directory scanning algorithm
12     The directory scanning in CV uses some tricks that - on most modern
13     filesystems - makes it possible to detect filetypes faster than
14     stat()'ing every file. This makes CV suitable for directories with
15     lots of files (10000+).
16    
17     This algorithm is quite unprecise - it doesn't make a difference
18     between files, device nodes, symlinks and the like, and filetype
19     detection is done using the file extension only.
20    
21     On the positive side, it is usually many orders of magnitude faster
22     than traditional scanning techniques (good for directories with
23     10000 or 100000+ files).
24    
25     * queuing for all time-consuming background tasks
26     All tasks, such as unlinking files or generating thumbnails, that
27     can be done in the background will be done so - no waiting required,
28     even when changing directories.
29    
30     * use of asynchronous I/O
31     CV tries to use asynchronous I/O whereever it makes sense, for
32     example while scanning directories, waiting for stat data, unlinking
33     files or generating thumbnails. This usually decreases scanning
34     times for large directories a bit (especially on RAID devices and
35     over NFS) and makes CV much more interactive.
36    
37     * fast image loading
38     The time span between the user issuing a command and displaying the
39     new image should be as small as possible. CV uses optimized
40     (especially for JPEG) loading functions and sacrifices some quality
41     (e.g no gamma correction, although this might change) to achieve
42     this speed.
43    
44     * fast thumbnail creation
45     Thumbnail creation uses both CPU and Disk-I/O. CV interleaves both,
46     so on modern CPUs, thumbnailing is usually limited by I/O speed.
47     Thumbnail creation for JPEGs has been specially optimized and can
48     even take advantage of multiple CPUs.
49    
50     * minimum optical clutter
51     CV has no menus or other user interface elements that take up a lot
52     of screen space (or are useful for beginning users). The schnauzer
53     windows can also be somewhat crowded.
54    
55     The point of an image viewer is viewing images, not a nice GUI. This
56     is similar to XV's behaviour.
57    
58     * efficient (and hard to learn) user interface
59     CV uses key combinations. A lot. If you are an experienced XV user,
60     you will find most of these keys familiar. If not, CV might be hard
61     to use at first, but will be an efficient tool later.
62    
63     * multi-window GUI
64     CV doesn't force you to use a specific layout, instead it relies on
65     your window manager, thus enabling you to chose whatever layout that
66     suits you most.
67    
68     * i18n'ed filename handling throughout
69     As long as glib can recognize your filename encoding (either UTF-8
70     or locale-specific, depending on the setting of G_BROKEN_FILENAMES)
71     and you have the relevant fonts, CV will display your filenames
72     correctly.
73    
74     * extensible through plug-ins
75     I have weird plug-ins that access remote databases to find a
76     directory. This is not likely to be of any use to other people.
77     Likewise, others might have weird requirements I cannot dream of.
78    
79     * filename clustering
80     Among the standard plug-ins is a filename clustering plug-in, that
81     (in case of tens of thousands images in one directory) might be able
82     to cluster similar names together.
83    
84 root 1.1 DESCRIPTION
85     THE IMAGE WINDOW
86     You can use the following keys in the image window:
87    
88 root 1.3 q quit the program
89     < half the image size
90     > double the image size
91     , shrink the image by 10%
92     . enlarge the image by 10%
93     n reset to normal size
94     m maximize to screensize
95     M maximize to screensize, respecting image aspect
96     ctrl-m toggle maxpect-always mode
97 root 1.4 ctrl-sift-m toggle using current image size as max image size
98 root 1.3 u uncrop
99     r set scaling mode to 'nearest' (fastest)
100     s set scaling mode to 'bilinear' (default)
101     shift-s set scaling mode to 'hyper' (slowest)
102 root 1.5 t rotate clockwise 90°
103     T rotate counterclockwise°
104     a apply all rotations loslessly to a jpeg file (using exiftran)
105 root 1.3 ctrl-v open a new visual schnauzer window for the current dir
106 root 1.4 ctrl-c clone the current image window
107 root 1.3 ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image
108 root 1.4 ctrl-p fire up the print dialog
109 root 1.3 escape cancel a crop action
110 root 1.1
111 root 1.2 And when playing movies, these additional keys are active:
112    
113 root 1.3 left rewind by 10 seconds
114     right forward by 10 seconds
115     down rewind by 60 seconds
116     up forward by 60 seconds
117     pg_up rewind by 600 seconds
118     pg_down forward by 600 seconds
119     o toggle on-screen display
120     p pause/unpause
121     escape stop playing
122     9 turn volume down
123     0 turn volume up
124 root 1.2
125 root 1.3 Any other keys will be sent to the default schnauzer window, which can
126     be toggled on and off by right-clicking into the image window.
127 root 1.1
128 root 1.3 Left-clicking into the image window will let you crop the image (usually
129     to zoom into large images that CV scales down).
130 root 1.1
131     THE VISUAL SCHNAUZER
132 root 1.4 Any image-loading action in a schnauzer window acts on the
133     "last-recently-activated" imagewindow, which currently is simply the
134     last image window that received a keypress.
135    
136 root 1.1 You can use the following keys in the schnauzer window:
137    
138 root 1.3 ctrl-space,
139     space move to and display next image
140     ctrl-backspace,
141     backspace move to and display previous image
142     ctrl-return,
143     return display selected picture, or enter directory
144    
145     cursor keys move selection
146     page-up move one page up
147     page-down move one page down
148     home move to first file
149     end move to last file
150    
151     ctrl-a select all files
152     ctrl-shift-a select all files currently displayed in the schnauzer window
153     ctrl-d delete selected files WITHOUT ASKING AGAIN
154     ctrl-g force generation of thumbnais for the selected files
155     ctrl-s rescan current direcory or files updates/deletes etc.
156     ctrl-u update selected (or all) icons if neccessary
157     ctrl-l don't use, will become a plug-in eventually
158    
159     ^ go to parent directory (caret).
160    
161     0-9,
162     a-z find the first filename beginning with this letter
163    
164     Right-clicking into the schnauzer window displays a pop-up menu with
165     additional actions.
166    
167 root 1.4 SELECTION
168     You can select entries in the Schnauzer in a variety of ways:
169    
170     Keyboard
171     Moving the cursor with the keyboard will first deselect all files
172     and then select the file you moved to.
173    
174     Clicking
175     Clicking on an entry will select the one you clicked and deselect
176     all others.
177    
178     Shift-Clicking
179     Shift-clicking will toggle the selection on the entry under the
180     mouse.
181    
182     Dragging
183     Dragging will select all entries between the one selected when
184     pushing the button and the one selected when releasing the button.
185     If you move above or below the schnauzer area while drag-selecting,
186     the schnauzer will move up/down one row twice per second. In
187     addition, horizontal mouse movement acts as a kind of invisible
188     horizontal scrollbar.
189    
190     Hint: double-click works while click-selecting
191     You can double-click any image while click-selecting to display it
192     without stopping the selection process. This will act as if you
193     normally double-clicked the image to display it, and will toggle the
194     selection twice, resulting in no change.
195    
196 root 1.3 FILES
197     When starting, CV runs the .cvrc file in your $HOME directory as if it
198     were a perl script. in that, you will mostly load plug-ins.
199    
200     Example:
201    
202     system "fping -q -t 10 ether"
203     or require "/fs/cv/cvplugin.pl";
204    
205     This will load a plug-in, but only if the machine *ether* is reachable
206     (supposedly the plug-in is networked in some way :).
207 root 1.1
208     ENVIRONMENT
209 root 1.2 CV_EDITOR
210     The program that gets executed when the user presses "CTRL-e" in the
211     Schnauzer or image window. The default is "gimp".
212    
213 root 1.1 CV_PRINT_DESTINATION
214     The default (perl-style) destination to use in the print dialog.
215    
216 root 1.2 CV_TRASHCAN
217     When set, must point to a directory where all files that are deleted
218     are moved to. If unset, files that are deleted are really being
219     deleted.
220    
221 root 1.1 SECURITY CONSIDERATIONS
222 root 1.3 CV uses Pixbuf to load non-JPEG images. Pixbuf is not considered safe
223     for this purpose, though (from the gtk-2.2 release notes):
224 root 1.1
225     "While efforts have been made to make gdk-pixbuf robust against invalid
226     images, using gdk-pixbuf to load untrusted data is not recommended, due
227     to the likelyhood that there are additional problems where an invalid
228     image could cause gdk-pixbuf to crash or worse."
229    
230     BUGS/TODO
231 root 1.3 Lots of functionality is missing.
232    
233     Pixbuf doesn't always honor G_BROKEN_FILENAMES, so accessing files with
234     names incompatible with utf-8 might fail.
235 root 1.1
236     rotate on disk
237     lots of ui issues
238     save(?)
239     preferences
240    
241     AUTHOR
242     Marc Lehmann <cv@plan9.de>.
243