ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/README
Revision: 1.4
Committed: Fri Oct 28 13:53:16 2005 UTC (18 years, 6 months ago) by root
Branch: MAIN
CVS Tags: rel-1_1
Changes since 1.3: +36 -1 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     t rotate clockwise 90°
103     T rotate counterclockwise°
104     ctrl-v open a new visual schnauzer window for the current dir
105 root 1.4 ctrl-c clone the current image window
106 root 1.3 ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image
107 root 1.4 ctrl-p fire up the print dialog
108 root 1.3 escape cancel a crop action
109 root 1.1
110 root 1.2 And when playing movies, these additional keys are active:
111    
112 root 1.3 left rewind by 10 seconds
113     right forward by 10 seconds
114     down rewind by 60 seconds
115     up forward by 60 seconds
116     pg_up rewind by 600 seconds
117     pg_down forward by 600 seconds
118     o toggle on-screen display
119     p pause/unpause
120     escape stop playing
121     9 turn volume down
122     0 turn volume up
123 root 1.2
124 root 1.3 Any other keys will be sent to the default schnauzer window, which can
125     be toggled on and off by right-clicking into the image window.
126 root 1.1
127 root 1.3 Left-clicking into the image window will let you crop the image (usually
128     to zoom into large images that CV scales down).
129 root 1.1
130     THE VISUAL SCHNAUZER
131 root 1.4 Any image-loading action in a schnauzer window acts on the
132     "last-recently-activated" imagewindow, which currently is simply the
133     last image window that received a keypress.
134    
135 root 1.1 You can use the following keys in the schnauzer window:
136    
137 root 1.3 ctrl-space,
138     space move to and display next image
139     ctrl-backspace,
140     backspace move to and display previous image
141     ctrl-return,
142     return display selected picture, or enter directory
143    
144     cursor keys move selection
145     page-up move one page up
146     page-down move one page down
147     home move to first file
148     end move to last file
149    
150     ctrl-a select all files
151     ctrl-shift-a select all files currently displayed in the schnauzer window
152     ctrl-d delete selected files WITHOUT ASKING AGAIN
153     ctrl-g force generation of thumbnais for the selected files
154     ctrl-s rescan current direcory or files updates/deletes etc.
155     ctrl-u update selected (or all) icons if neccessary
156     ctrl-l don't use, will become a plug-in eventually
157    
158     ^ go to parent directory (caret).
159    
160     0-9,
161     a-z find the first filename beginning with this letter
162    
163     Right-clicking into the schnauzer window displays a pop-up menu with
164     additional actions.
165    
166 root 1.4 SELECTION
167     You can select entries in the Schnauzer in a variety of ways:
168    
169     Keyboard
170     Moving the cursor with the keyboard will first deselect all files
171     and then select the file you moved to.
172    
173     Clicking
174     Clicking on an entry will select the one you clicked and deselect
175     all others.
176    
177     Shift-Clicking
178     Shift-clicking will toggle the selection on the entry under the
179     mouse.
180    
181     Dragging
182     Dragging will select all entries between the one selected when
183     pushing the button and the one selected when releasing the button.
184     If you move above or below the schnauzer area while drag-selecting,
185     the schnauzer will move up/down one row twice per second. In
186     addition, horizontal mouse movement acts as a kind of invisible
187     horizontal scrollbar.
188    
189     Hint: double-click works while click-selecting
190     You can double-click any image while click-selecting to display it
191     without stopping the selection process. This will act as if you
192     normally double-clicked the image to display it, and will toggle the
193     selection twice, resulting in no change.
194    
195 root 1.3 FILES
196     When starting, CV runs the .cvrc file in your $HOME directory as if it
197     were a perl script. in that, you will mostly load plug-ins.
198    
199     Example:
200    
201     system "fping -q -t 10 ether"
202     or require "/fs/cv/cvplugin.pl";
203    
204     This will load a plug-in, but only if the machine *ether* is reachable
205     (supposedly the plug-in is networked in some way :).
206 root 1.1
207     ENVIRONMENT
208 root 1.2 CV_EDITOR
209     The program that gets executed when the user presses "CTRL-e" in the
210     Schnauzer or image window. The default is "gimp".
211    
212 root 1.1 CV_PRINT_DESTINATION
213     The default (perl-style) destination to use in the print dialog.
214    
215 root 1.2 CV_TRASHCAN
216     When set, must point to a directory where all files that are deleted
217     are moved to. If unset, files that are deleted are really being
218     deleted.
219    
220 root 1.1 SECURITY CONSIDERATIONS
221 root 1.3 CV uses Pixbuf to load non-JPEG images. Pixbuf is not considered safe
222     for this purpose, though (from the gtk-2.2 release notes):
223 root 1.1
224     "While efforts have been made to make gdk-pixbuf robust against invalid
225     images, using gdk-pixbuf to load untrusted data is not recommended, due
226     to the likelyhood that there are additional problems where an invalid
227     image could cause gdk-pixbuf to crash or worse."
228    
229     BUGS/TODO
230 root 1.3 Lots of functionality is missing.
231    
232     Pixbuf doesn't always honor G_BROKEN_FILENAMES, so accessing files with
233     names incompatible with utf-8 might fail.
234 root 1.1
235     rotate on disk
236     lots of ui issues
237     save(?)
238     preferences
239    
240     AUTHOR
241     Marc Lehmann <cv@plan9.de>.
242