ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/README
Revision: 1.3
Committed: Wed Sep 7 17:17:39 2005 UTC (18 years, 8 months ago) by root
Branch: MAIN
Changes since 1.2: +158 -57 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     u uncrop
98     r set scaling mode to 'nearest' (fastest)
99     s set scaling mode to 'bilinear' (default)
100     shift-s set scaling mode to 'hyper' (slowest)
101     t rotate clockwise 90°
102     T rotate counterclockwise°
103     ctrl-v open a new visual schnauzer window for the current dir
104     ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image
105     ctrl-p fire up the print fialog
106     escape cancel a crop action
107 root 1.1
108 root 1.2 And when playing movies, these additional keys are active:
109    
110 root 1.3 left rewind by 10 seconds
111     right forward by 10 seconds
112     down rewind by 60 seconds
113     up forward by 60 seconds
114     pg_up rewind by 600 seconds
115     pg_down forward by 600 seconds
116     o toggle on-screen display
117     p pause/unpause
118     escape stop playing
119     9 turn volume down
120     0 turn volume up
121 root 1.2
122 root 1.3 Any other keys will be sent to the default schnauzer window, which can
123     be toggled on and off by right-clicking into the image window.
124 root 1.1
125 root 1.3 Left-clicking into the image window will let you crop the image (usually
126     to zoom into large images that CV scales down).
127 root 1.1
128     THE VISUAL SCHNAUZER
129     You can use the following keys in the schnauzer window:
130    
131 root 1.3 ctrl-space,
132     space move to and display next image
133     ctrl-backspace,
134     backspace move to and display previous image
135     ctrl-return,
136     return display selected picture, or enter directory
137    
138     cursor keys move selection
139     page-up move one page up
140     page-down move one page down
141     home move to first file
142     end move to last file
143    
144     ctrl-a select all files
145     ctrl-shift-a select all files currently displayed in the schnauzer window
146     ctrl-d delete selected files WITHOUT ASKING AGAIN
147     ctrl-g force generation of thumbnais for the selected files
148     ctrl-s rescan current direcory or files updates/deletes etc.
149     ctrl-u update selected (or all) icons if neccessary
150     ctrl-l don't use, will become a plug-in eventually
151    
152     ^ go to parent directory (caret).
153    
154     0-9,
155     a-z find the first filename beginning with this letter
156    
157     Right-clicking into the schnauzer window displays a pop-up menu with
158     additional actions.
159    
160     FILES
161     When starting, CV runs the .cvrc file in your $HOME directory as if it
162     were a perl script. in that, you will mostly load plug-ins.
163    
164     Example:
165    
166     system "fping -q -t 10 ether"
167     or require "/fs/cv/cvplugin.pl";
168    
169     This will load a plug-in, but only if the machine *ether* is reachable
170     (supposedly the plug-in is networked in some way :).
171 root 1.1
172     ENVIRONMENT
173 root 1.2 CV_EDITOR
174     The program that gets executed when the user presses "CTRL-e" in the
175     Schnauzer or image window. The default is "gimp".
176    
177 root 1.1 CV_PRINT_DESTINATION
178     The default (perl-style) destination to use in the print dialog.
179    
180 root 1.2 CV_TRASHCAN
181     When set, must point to a directory where all files that are deleted
182     are moved to. If unset, files that are deleted are really being
183     deleted.
184    
185 root 1.1 SECURITY CONSIDERATIONS
186 root 1.3 CV uses Pixbuf to load non-JPEG images. Pixbuf is not considered safe
187     for this purpose, though (from the gtk-2.2 release notes):
188 root 1.1
189     "While efforts have been made to make gdk-pixbuf robust against invalid
190     images, using gdk-pixbuf to load untrusted data is not recommended, due
191     to the likelyhood that there are additional problems where an invalid
192     image could cause gdk-pixbuf to crash or worse."
193    
194     BUGS/TODO
195 root 1.3 Lots of functionality is missing.
196    
197     Pixbuf doesn't always honor G_BROKEN_FILENAMES, so accessing files with
198     names incompatible with utf-8 might fail.
199 root 1.1
200     rotate on disk
201     lots of ui issues
202     save(?)
203     preferences
204    
205     AUTHOR
206     Marc Lehmann <cv@plan9.de>.
207