ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/README
(Generate patch)

Comparing CV/README (file contents):
Revision 1.5 by root, Fri Mar 31 10:56:01 2006 UTC vs.
Revision 1.14 by root, Fri Aug 26 21:58:02 2022 UTC

1NAME 1NAME
2 cv - a fast gtk+ image viewer loosely modeled after XV 2 cv - a fast gtk+ image viewer loosely modeled after XV
3 3
4SYNOPSIS 4SYNOPSIS
5 cv [file...] 5 cv
6
7 cv directory
8
9 cv path...
10
11 cv -g <glob expression...>
12
13 find .. -print0 | cv -0r
14
15 cv --sort ...
6 16
7FEATURES 17FEATURES
8 CV is supposed to work similar to the venerable XV image viewer, just 18 CV is supposed to work similar to the venerable XV image viewer, just
9 faster. Why faster? 19 faster. Why faster?
10 20
11 * optimized directory scanning algorithm 21 * optimized directory scanning algorithm
22
12 The directory scanning in CV uses some tricks that - on most modern 23 The directory scanning in CV uses some tricks that - on most modern
13 filesystems - makes it possible to detect filetypes faster than 24 filesystems - makes it possible to detect filetypes faster than
14 stat()'ing every file. This makes CV suitable for directories with 25 stat()'ing every file. This makes CV suitable for directories with
15 lots of files (10000+). 26 lots of files (10000+).
16 27
20 31
21 On the positive side, it is usually many orders of magnitude faster 32 On the positive side, it is usually many orders of magnitude faster
22 than traditional scanning techniques (good for directories with 33 than traditional scanning techniques (good for directories with
23 10000 or 100000+ files). 34 10000 or 100000+ files).
24 35
25 * queuing for all time-consuming background tasks 36 * queuing for all time-consuming background tasks
37
26 All tasks, such as unlinking files or generating thumbnails, that 38 All tasks, such as unlinking files or generating thumbnails, that
27 can be done in the background will be done so - no waiting required, 39 can be done in the background will be done so - no waiting required,
28 even when changing directories. 40 even when changing directories.
29 41
30 * use of asynchronous I/O 42 * use of asynchronous I/O
43
31 CV tries to use asynchronous I/O whereever it makes sense, for 44 CV tries to use asynchronous I/O whereever it makes sense, for
32 example while scanning directories, waiting for stat data, unlinking 45 example while scanning directories, waiting for stat data, unlinking
33 files or generating thumbnails. This usually decreases scanning 46 files or generating thumbnails. This usually decreases scanning
34 times for large directories a bit (especially on RAID devices and 47 times for large directories a bit (especially on RAID devices and
35 over NFS) and makes CV much more interactive. 48 over NFS) and makes CV much more interactive.
36 49
37 * fast image loading 50 * fast image loading
51
38 The time span between the user issuing a command and displaying the 52 The time span between the user issuing a command and displaying the
39 new image should be as small as possible. CV uses optimized 53 new image should be as small as possible. CV uses optimized
40 (especially for JPEG) loading functions and sacrifices some quality 54 (especially for JPEG) loading functions and sacrifices some quality
41 (e.g no gamma correction, although this might change) to achieve 55 (e.g no gamma correction, although this might change) to achieve
42 this speed. 56 this speed.
43 57
44 * fast thumbnail creation 58 * fast thumbnail creation
59
45 Thumbnail creation uses both CPU and Disk-I/O. CV interleaves both, 60 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. 61 so on modern CPUs, thumbnailing is usually limited by I/O speed.
47 Thumbnail creation for JPEGs has been specially optimized and can 62 Thumbnail creation for JPEGs has been specially optimized and can
48 even take advantage of multiple CPUs. 63 even take advantage of multiple CPUs.
49 64
50 * minimum optical clutter 65 * minimum optical clutter
66
51 CV has no menus or other user interface elements that take up a lot 67 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 68 of screen space (or are useful for beginning users). The schnauzer
53 windows can also be somewhat crowded. 69 windows can also be somewhat crowded.
54 70
55 The point of an image viewer is viewing images, not a nice GUI. This 71 The point of an image viewer is viewing images, not a nice GUI. This
56 is similar to XV's behaviour. 72 is similar to XV's behaviour.
57 73
58 * efficient (and hard to learn) user interface 74 * efficient (and hard to learn) user interface
75
59 CV uses key combinations. A lot. If you are an experienced XV user, 76 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 77 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. 78 to use at first, but will be an efficient tool later.
62 79
63 * multi-window GUI 80 * multi-window GUI
81
64 CV doesn't force you to use a specific layout, instead it relies on 82 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 83 your window manager, thus enabling you to chose whatever layout that
66 suits you most. 84 suits you most.
67 85
68 * i18n'ed filename handling throughout 86 * i18n'ed filename handling throughout
87
69 As long as glib can recognize your filename encoding (either UTF-8 88 As long as glib can recognize your filename encoding (either UTF-8
70 or locale-specific, depending on the setting of G_BROKEN_FILENAMES) 89 or locale-specific, depending on the setting of G_BROKEN_FILENAMES)
71 and you have the relevant fonts, CV will display your filenames 90 and you have the relevant fonts, CV will display your filenames
72 correctly. 91 correctly.
73 92
74 * extensible through plug-ins 93 * extensible through plug-ins
94
75 I have weird plug-ins that access remote databases to find a 95 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. 96 directory. This is not likely to be of any use to other people.
77 Likewise, others might have weird requirements I cannot dream of. 97 Likewise, others might have weird requirements I cannot dream of.
78 98
79 * filename clustering 99 * filename clustering
100
80 Among the standard plug-ins is a filename clustering plug-in, that 101 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 102 (in case of tens of thousands images in one directory) might be able
82 to cluster similar names together. 103 to cluster similar names together.
83 104
84DESCRIPTION 105DESCRIPTION
86 You can use the following keys in the image window: 107 You can use the following keys in the image window:
87 108
88 q quit the program 109 q quit the program
89 < half the image size 110 < half the image size
90 > double the image size 111 > double the image size
91 , shrink the image by 10% 112 , shrink the image by ~9% (opposite of .)
92 . enlarge the image by 10% 113 . enlarge the image by 10%
93 n reset to normal size 114 n reset to normal size
94 m maximize to screensize 115 m maximize to screensize
95 M maximize to screensize, respecting image aspect 116 M maximize to screensize, respecting image aspect
96 ctrl-m toggle maxpect-always mode 117 ctrl-m toggle maxpect-always mode
97 ctrl-sift-m toggle using current image size as max image size 118 ctrl-sift-m toggle using current image size as max image size
98 u uncrop 119 u uncrop
99 r set scaling mode to 'nearest' (fastest) 120 r set scaling mode to 'nearest' (fastest)
100 s set scaling mode to 'bilinear' (default) 121 s set scaling mode to 'bilinear' (default)
101 shift-s set scaling mode to 'hyper' (slowest)
102 t rotate clockwise 90° 122 t rotate clockwise 90°
103 T rotate counterclockwise° 123 T rotate counterclockwise°
104 a apply all rotations loslessly to a jpeg file (using exiftran) 124 a apply all rotations loslessly to a jpeg file (using exiftran)
125 ctrl-shift-t apply current rotation for future image loads
105 ctrl-v open a new visual schnauzer window for the current dir 126 ctrl-v open a new visual schnauzer window for the current dir
106 ctrl-c clone the current image window 127 ctrl-c clone the current image window
107 ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image 128 ctrl-e run an editor ($CV_EDITOR or "gimp") on the current image
108 ctrl-p fire up the print dialog 129 ctrl-p fire up the print dialog
130 ctrl-shift-p same as ctrl-p, but automatically selects "ok"
109 escape cancel a crop action 131 escape cancel a crop action
110 132
111 And when playing movies, these additional keys are active: 133 And when playing movies, these additional keys are active:
112 134
113 left rewind by 10 seconds 135 left rewind by 10 seconds
149 end move to last file 171 end move to last file
150 172
151 ctrl-a select all files 173 ctrl-a select all files
152 ctrl-shift-a select all files currently displayed in the schnauzer window 174 ctrl-shift-a select all files currently displayed in the schnauzer window
153 ctrl-d delete selected files WITHOUT ASKING AGAIN 175 ctrl-d delete selected files WITHOUT ASKING AGAIN
154 ctrl-g force generation of thumbnais for the selected files 176 ctrl-g force generation of thumbnails for the selected files
177 ctrl-shift-g remove thumbnails for the selected files
155 ctrl-s rescan current direcory or files updates/deletes etc. 178 ctrl-s rescan current direcory or files updates/deletes etc.
156 ctrl-u update selected (or all) icons if neccessary 179 ctrl-u update selected (or all) icons if neccessary
157 ctrl-l don't use, will become a plug-in eventually 180 ctrl-- unselected thumbnailed images
181 ctrl-+ keep only thumbnailed images, deselect others
158 182
159 ^ go to parent directory (caret). 183 ^ go to parent directory (caret).
160 184
161 0-9, 185 0-9,
162 a-z find the first filename beginning with this letter 186 a-z find the first filename beginning with this letter
203 or require "/fs/cv/cvplugin.pl"; 227 or require "/fs/cv/cvplugin.pl";
204 228
205 This will load a plug-in, but only if the machine *ether* is reachable 229 This will load a plug-in, but only if the machine *ether* is reachable
206 (supposedly the plug-in is networked in some way :). 230 (supposedly the plug-in is networked in some way :).
207 231
208ENVIRONMENT 232ENVIRONMENT VARIABLES
209 CV_EDITOR 233 CV_EDITOR
210 The program that gets executed when the user presses "CTRL-e" in the 234 The program that gets executed when the user presses "CTRL-e" in the
211 Schnauzer or image window. The default is "gimp". 235 Schnauzer or image window. The default is "gimp".
212 236
237 CV_AUDIO_PLAYER
238 EXPERIMENTAL: audio playback is now via mpv, this variable is
239 currently ignored.
240
241 Program used to play all sorts of audio (wav, aif, mp3, ogg...),
242 default "play". Will be called like "$CV_AUDIO_PLAYER -- <path>".
243
244 CV_MPLAYER
245 Program used to play all sorts of video files. Unlike
246 "CV_AUDIO_PLAYER", this really must be some version of the "mpv"
247 programs, or something that is very command-line compatible to them.
248
249 Note: for video-thumbnailing, mplayer is still used (and hardcoded).
250
213 CV_PRINT_DESTINATION 251 CV_PRINT_DESTINATION
214 The default (perl-style) destination to use in the print dialog. 252 The default (perl-style) destination to use in the print dialog.
215 253
216 CV_TRASHCAN 254 CV_TRASHCAN
217 When set, must point to a directory where all files that are deleted 255 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 256 by the "Delete Physically" (ctrl-d) action are moved to (other
219 deleted. 257 deletion actions still delete!). If unset, files that are deleted
258 are really being deleted.
259
260SIGNALS
261 Sending CV a SIGUSR1 signal will cause all image viewers to reload the
262 currently loaded image. This is useful if you use CV as a viewer for
263 changing data - just run it in the background with some path and each
264 time the image changes, send it a SIGUSR1.
220 265
221SECURITY CONSIDERATIONS 266SECURITY CONSIDERATIONS
222 CV uses Pixbuf to load non-JPEG images. Pixbuf is not considered safe 267 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): 268 for this purpose, though (from the gtk-2.2 release notes):
224 269

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines