* src/procmsg.c
[claws.git] / README.claws
1 README.claws
2 ------------
3
4 Summary:
5
6 1. What is Sylpheed Claws?
7 2. Switching between Sylpheed Claws and Sylpheed
8    * From Sylpheed to Sylpheed Claws
9    * From Sylpheed Claws to Sylpheed
10 3. Things Claws does different
11    * auto address replacement in summary view
12    * manual selection of MIME types for attachments
13    * sharing mail folders
14    * default to address for folders
15    * threading mode per folder
16    * simplify subject string
17    * pixmap themes
18    * user definable actions
19    * spell checking (with installation instructions)
20    * new cache
21    * selective download, delete messages on server
22 4. How to contribute
23 5. How to request features
24 6. Installing Claws from CVS
25 7. History
26
27
28
29 1. What is Sylpheed Claws?
30 --------------------------
31
32 Sylpheed Claws is a bleeding edge branch of Sylpheed, a light weight mail 
33 user agent for UNIX. Features in this branch may (or may not) end up in 
34 Sylpheed. 
35
36 Hiroyuki's ChangeLog is also included in the claws-branch distribution, 
37 so it should be easy to spot which features were merged with Sylpheed
38 (and which features were not).
39
40 For brevity Sylpheed Claws is referred to as Claws, and Sylpheed as either
41 Sylpheed or Main.
42
43
44
45 2. Switching between Sylpheed Claws and Sylpheed
46 ------------------------------------------------
47
48   From Sylpheed to Sylpheed Claws       
49   -------------------------------
50
51   From the user perspective Claws is just a fancy Sylpheed, so it uses the
52   same sylpheed setting files located in ~/.sylpheed.
53
54   It's always a good idea to back up all files in ~/.sylpheed in case
55   you want to switch back to Sylpheed. (You don't have to backup the
56   directories.)
57
58   There are some things that frequently come up when switching to Claws:
59
60
61   * Why does the advanced filtering system not work?
62
63     Claws uses the new filtering system as soon as you define a new rule for it.
64     Your old sylpheed filter rules will not be used. In subdirectory tools/ of
65     the distribution there is a Perl script called filter_conv.pl which converts
66     old filter rules to the claws filtering system.
67   
68
69   * What happened to the compose email and compose news buttons? 
70
71     There's a composite button for both composing mail and news. You can toggle
72     between composing mail and news by clicking on the button with the triangle.
73
74
75   * And to the Preferences and Execute buttons?
76
77     Sorry, they're not there.
78
79
80   From Sylpheed Claws to Sylpheed
81   -------------------------------
82
83   Moving from Claws to Sylpheed is also simple. Sylpheed should neglect the things
84   Claws put in the settings files. This also means that the old rules will work
85   again. 
86
87   If you want to switch back to Claws at a later time, make sure you back up at least
88   ~/.sylpheed/matcherrc (the Claws filtering rules), and ~/.sylpheed/sylpheedrc 
89   (which may have some claws specific settings).
90
91   When switching back to Sylpheed you will not lose messages or message flags (color
92   labels, read / unread status of messages). 
93
94   Switching between Sylpheed Claws and Sylpheed on a regular basis
95   ----------------------------------------------------------------
96
97   If you want to have both claws and main installed concurrently simply pass them
98   a different --prefix when doing ./configure. Then use the script 'sylpheed-switcher',
99   (which is provided in the tools directory), to launch the version you require without
100   fear of losing specific settings related to either claws or main. Further details can
101   be found in tools/README. 
102
103 3. Things Claws does different
104 ------------------------------
105
106 Claws does a lot of things different. Here a quick run-down of things that
107 are hardly noticeable, but deserve mentioning:
108
109 * auto address replacement in summary view
110 -----------------------------------
111   This matches a plain email address with a person in the address book. This
112   feature is enabled in Common Preferences | Tab Display | SummaryView Group |
113   Display sender using addressbook
114
115 * manual selection of MIME types for attachments
116 -----------------------------------
117   You can change the MIME type of an attachment by right-clicking in the
118   attachment list, selecting Property in the menu. The MIME type list
119   is a combo box with the known MIME types.
120
121 * sharing mail folders   
122  -----------------------------------
123  You can also share or use shared mail folders. Right-click a folder and
124   select Property. Change the Folder chmod setting.
125
126 * default to address for folders
127  -----------------------------------
128  Most people filter mailing list mails to separate folders. Claws allows
129   you to associate a folder with a mailing list or a person. Right-click a
130   folder, select Property and change the Default To setting. When you
131   compose a new mail, when this folder is selected the recipient address
132   will be set to this address.
133
134   (NOTE: this is also a shoot-yourself-in-the-foot-setting! If you want
135    to send a private mail, don't have a folder selected with this setting
136    set.)
137
138 * pixmap themes
139 -----------------------------------
140   To use different icon sets you need to create a directory: 
141         mkdir ~/.sylpheed/themes
142   Icon sets should be placed in this directory in their own sub-directory. 
143   They are then selectable from Pixmap Theme on the Interface tab of Commmon
144   Preferences. 
145
146 * user definable actions
147 -----------------------------------
148   The "actions" feature is a convenient way for the user to launch external 
149   commands to process a complete message file including headers and body or 
150   just one of its parts. It allows also the use of an external command to 
151   filter the whole text or just a selected part in the message window or in 
152   the compose window. This is a generic tool that allows to do any uncommon 
153   actions on the messages, and thus extends the possibilities of Sylpheed. 
154   For example, Sylpheed does not include the rot13 cyphering algorithm 
155   popular in some newsgroups. It does not support natively armored 
156   encryption or clear signing. It does not support uuencoded messages. As 
157   all these features can be handled by external programs, the actions 
158   provide a convenient way to use them from the menu bar.
159
160   a. Usage
161   --------
162
163   To create a new action, go to Configuration -> Actions.... The "Action
164   Creation" dialog offers to enter the Menu name that will trigger the 
165   command. The created menu will be found in the Tools -> Actions submenu. 
166   By inserting a slash / in the menu name, you create a submenu.
167
168   The command is entered in the Command line entry. Note that Sylpheed 
169   stores every single email in a separate file. This allows to use the 
170   following syntax for the command:
171
172     * %f denotes the file name of the selected message. If you selected more
173          than one, then the command will be launched for each message with 
174          the appropriate file name
175     * %F denotes the list of the file names of the selected message. If only
176          one message is selected, this amounts to %f, but if more messages 
177          are selected, then the command will be launched only once with the 
178          list of the file names. (You can use both %f and %F in one command: 
179          then the command will be launched for each selected message with 
180          the name of this message and with the list of all selected 
181          messages. I did not find a practical example for this.)
182     * %p denotes the current selected message part of a multipart message. 
183          The part is decoded accordingly. If the message is not a multipart 
184          message, it denotes the message body.
185     * Prepending >: this will allow you to send to the command's standard 
186          input a text that you will enter in a dialog window.
187     * Prepending *: this will allow you to send to the command's standard 
188          input a text that you will enter in a dialog window. But in 
189          contrast to prepending >, the entered text is hidden (useful when 
190          entering passwords).
191     * Appending an ampersand &: this will run the command asynchronously. 
192          That means "fire and forget". Sylpheed won't wait for the command 
193          to finish, nor will it catch its output or its error messages.
194     * Prepending the vertical bar | (pipe-in): this will send the current 
195          displayed text or the current selected text from the message view 
196          or the compose window to the command standard input. The command 
197          will silently fail if more than one message is selected.
198     * Appending the vertical bar | (pipe-out): this will replace the current 
199          displayed text or the current selected text from the message window
200          or the compose window by the command standard output. The command
201          will silently fail if more than one message is selected.
202
203   Note: It is not possible to use actions containing %f, %F or %p from the
204   compose window. 
205
206   When a command is run, and unless it is run asynchronously, Sylpheed will
207   be insensitive to any interaction and it will wait for the command to 
208   finish. If the command takes too long (5 seconds), it will popup a dialog 
209   window allowing to stop it. This dialog will also be displayed as soon as
210   the command has some output: error messages or even its standard output 
211   when the command is not a "pipe-out" command. When multiple commands are 
212   being run, they are run in parallel and each command output is separated 
213   from the outputs of the others.
214
215   a. Examples
216   -----------
217
218   Here are some examples that are listed in the same syntax as used for 
219   storing the actions list. You can copy and past the definition in your 
220   ~/.sylpheed/actionsrc file (exit Sylpheed before). The syntax is very 
221   simple: one line per action, each action contains the menu name and the 
222   command line separated by a colon and a space ": "
223
224   Purpose:      rot13 cyphering
225   Definition:   Rot13: |tr a-zA-Z n-za-mN-ZA-M|
226   Details:      This will apply the rot13 cyphering algorithm to the 
227                 (selected) text in the message/compose view.
228
229   Purpose:      Decoding uuencoded messages
230   Definition:   UUdeview: xdeview %F&
231   Details:      xdeview comes with uudeview. If an encoded file is split in 
232                 multiple messages, just select them all and run the command.
233
234   Purpose:      Display uuencoded image
235   Definition:   Display uuencoded: uudec %f&
236   Details:      Displays uuencoded files. The uudec[1] script can be found in 
237                 the 'tools' directory of the distribution package.
238  
239   Purpose:      Alter messages
240   Definition:   Edit message: gvim -f %F
241   Details:      Allows editing of any received message. Can be used to remove 
242                 unneeded message parts, etc.
243
244   Purpose:      Pretty format
245   Definition:   Par: |par 72Tbgjqw74bEe B=._A_a 72bg|
246   Details:      par is a utility that can pretty format any text. It does a 
247                 very good job in indenting quoted messages, and justifying 
248                 text. Used when composing a message
249
250   Purpose:      Browse
251   Definition:   Part/Dillo: dillo %p&
252   Details:      Browse the selected message part in Dillo.
253
254   Purpose:      Clear Sign
255   Definition:   GnuPG/Clear Sign: |gpg-sign-syl|
256   Details:      Clear sign a message. The gpg-sign-syl[2] script is responsible
257                 for asking the passphrase and for running gnupg. 
258
259   Purpose:      Verify Clear Signed
260   Definition:   GnuPG/Verify: |gpg --no-tty --verify
261   Details:      Verify clear signed messages. The result is displayed in the
262                 actions output dialog.
263
264   Purpose:      Decrypt ASCII Armored
265   Definition:   GnuPG/Decrypt: *gpg --no-tty --command-fd 0 --passphrase-fd 0 --decrypt %f|
266   Details:      Decrypt ASCII armored messages. The passphrase is entered 
267                 into the opened action's input dialog.
268
269   [1] The uudec script can be found in the 'tools' directory of the 
270   distribution package. It needs uudecode and ImageMagick's display. The 
271   latter can be replaced by any image viewer that can get input from 
272   standard input. The script could also be modified to use temporary files 
273   instead of standard input. 
274
275   [2] The gpg-sign-syl script can be found in the 'tools' directory of the 
276   distribution package. 
277
278 * Spell checker for Sylpheed-Claws
279 -----------------------------------
280   a. Requirements
281   b. Configuration and installation
282   c. Usage
283   d. Known problems
284
285   a. Requirements
286   ---------------
287
288   The spell checker in sylpheed requires the Portable Spell Checker
289   Interface Library pspell (http://pspell.sourceforge.net), version
290   0.12.2 or newer.
291
292   You will need also the actual spell checker.  There are two alternatives:
293
294      i) ispell (http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html),
295         which is found on quasi every distribution.  You have then to
296         install the pspell-ispell module found at the pspell site.
297
298     ii) aspell (http://aspell.sourceforge.net).  This spell checker
299         must be installed after installing pspell.  The version tested
300         is .33.7 alpha. It has three different suggestion modes (fast
301         -default- , normal, bad spellers), has the ability to learn
302         from mistakes (default). 
303
304   And, last but not least, do not forget to install the dictionaries. Check
305   the corresponding spell checker home page for more information on this.
306
307   b. Configuring Sylpheed
308   -----------------------
309
310   Spell checking is enabled if you configure sylpheed appropriately. Add
311   the option '--enable-pspell' when configuring. E.g.:
312
313   ./configure --enable-pspell
314
315   The configure script needs 'pspell-config' in your path.  If it is
316   in weird places, use '--with-pspell-prefix' to tell the path to
317   pspell-config.  E.g., if pspell-config is really
318   /foo/bar/pspell-config, then use:
319
320   ./configure --enable-pspell --with-pspell-prefix=/foo/bar
321
322   If you have problems with not found includes or libraries, check
323   first where these are located, and add either options:
324
325   --with-pspell-includes=/foo/bar/include
326
327   or 
328
329   --with-pspell-libs=/foo/bar/lib
330
331   as appropriate.
332
333   Configure script summarizes the options compiled in. Check that
334   configure lists 'Pspell = yes'.
335
336   Then proceed as usual, with 'make' and 'make install'.
337
338   c. Usage
339   --------
340
341   NOTE: if you upgraded from 0.7.0claws, please reselect your default
342   dictionary in the preferences.
343
344   After successful compiling, you need to tell sylpheed where your
345   dictionaries reside.  First run 'pspell-config pkgdatadir' on the
346   shell to get their path.
347
348   Then run sylpheed and go to Configuration -> Common preferences ->
349   Spell Checker.  Check the box 'Enable spell checker (EXPERIMENTAL)' and
350   use the file selector ('...' button) to select the path where the
351   dictionaries reside.  Within the file selector, go to that directory
352   and select *any* file in the file lists.  Click ok. You should then
353   be able to select your default dictionary.
354
355   When composing, misspelled words are highlighted.  Click on any
356   highlighted word with the right mouse button to get a list of
357   suggestions.  The first entry of the menu just displays the unknown
358   word.  Selecting "Accept in this session" (or hitting MOD1-Space, 
359   where MOD1 is usually the ALT key), will ignore this word and accept
360   it in this message.  Selecting the next entry "Add to dictionary", which
361   is bound to MOD1-Enter combination will add the unknown word to the
362   dictionary to learn it.  The next entries are the suggested words. 
363   The first 15 suggestions can be accessed typing one of the first letters
364   of Latin alphabet (if this does not suit your language, please send
365   a mail to melvin.hadasht@free.fr).  If you are using an aspell 
366   dictionary, you can use its 'learn from mistake' feature, by pressing
367   the MOD1 key and selecting the suggestion (with the keyboard or with
368   the mouse).  See pspell manual ยง4.7.1 for an explanation of this 
369   feature. 
370
371   If you click with the right mouse button everywhere else, or if you
372   shift-right-click even on a misspelled word, you get the
373   configuration menu.  'Check all' highlights all misspelled words.
374   With this menu, you can also change the dictionary while editing.
375   Finally, you can change the suggestion mode, and the learn from
376   misktakes feature (only when using an aspell dictionary).
377
378   Spell checking can also be done using keyboard shortcuts.  In the
379   "Edit" menu of the compose window, there are two menus "Check backwards
380   misspelled word" and "Forward to next misspelled word".  Add to them 
381   appropriate keyboard shortcuts.  "Check backwards misspelled word" 
382   checks backwards from cursor position for the first misspelled word.
383   If it finds one, it displays the suggestions lists which can be handled
384   with the keyboard as described before. When the suggestion menu is 
385   closed, the cursor returns to its original position to be able to 
386   continue editing.  The "Forward to next misspelled word" do the same 
387   thing in the other direction but moves the cursor at the end of the
388   misspelled word.  This way, you can spell check easily a whole message
389   starting from its beginning and using the "Forward to next misspelled
390   word" keyboard short cut.
391   
392
393   d. Known problems
394   -----------------
395
396     i) libtool
397
398     The only real known problems until now are configuration and
399     compilation problems  due to libtool interaction with pspell. 
400
401     If you do not compile pspell/aspell/pspell-ispell yourself, you
402     need to install them with their devel packages.
403
404     Pspell work with dynamic linking of libraries and thus uses the
405     libltdl library of libtool.  If you have weird problems when
406     configuring showing 'libtool', chances are the libtool used when
407     compiling the pspell package is not compatible with what you have
408     on your system.  The best solution, is to install the latest
409     libtool AND compile yourself pspell package.  I can't help more
410     than that in this issue.
411
412     After successfully compiled and used sylpheed with spell checking,
413     the same problem can appear if you upgrade your libtool to a
414     version which libltdl is incompatible to your older one.    The
415     symptoms are a crash when starting to compose.  Disabling spell
416     checking avoids the problem. The solution should be to recompile pspell.
417
418     ii) New installed ispell dictionary are not detected
419
420     Installing a new ispell dictionary needs an additional step. Go
421     to the 'pkgdatadir' and run 'make-ispell-pwli'.  You may need to
422     su root.
423
424 * simplify subject string
425 -----------------------------------
426     It is possible to remove parts of string from the subject line.
427     Example: [Sylpheed-claws-users] This is a test
428     becomes: This is a test
429     This is a per folder property. Right click on a folder and select
430     property, enable Simplify Subject RegExp check box. Example
431     regexp for the above is: \[Sylpheed-claws-(devel|users)\]
432     Another example for the Sylpheed mailing list (not claws!) is:
433     \[sylpheed:[0-9]{5}\]
434
435 * new cache
436 -----------------------------------
437     New cache is  a new data cache structure for sylpheed, that will
438     solve many of the problems sylpheed currently has with updates to
439     flags.  But you will also notice a large speed gain when you open
440     these folders. 
441
442     New cache uses two new configuration parameters that can be
443     adjusted in ~/.sylpheed/sylpheedrc (no gui for them available yet).
444
445     cache_max_mem_usage         (default: 4096)
446         the maximum kB of memory sylpheed should use.
447         It will try to keep the memory usage below this
448         value, but it will always use the assigned
449         amount of memory for speed gain.
450
451     cache_min_keep_time         (default: 15)
452         the minimum time in minutes sylpheed will keep
453         the folder cache in memory. If a cache is more
454         recent than this time it will not be freed even
455         if the memory usage is above the maximum. You
456         should probably set this value higher than your
457         mail check interval. Otherwise the cache will
458         always be freed between checks even if the folder
459         is accessed on every check, which will cause much
460         disk IO.
461
462     The check if memory can be freed is currently done after the
463     active folder has been changed or whenever a new cache is read,
464     i.e. triggered by mail incorporation.
465
466     New mails in MH folders are not detected automatically like before,
467     when you enter the folder. You have to update the folder manually,
468     or activate the auto update setting in the options.
469
470 There are a lot more options. If you find one, don't hesitate to
471 mention it.
472
473 * selective download, delete messages on server
474 -----------------------------------
475     The selective download window lets you select messages, that
476     should be retrieved from or deleted on the server.
477     The selection can be automated by setting up a *global*
478     filtering rule (folder based rules are ignored), e.g
479       subject match "SPAM" delete_on_server
480     Next time, you retrieve the headers using selective download,
481     all messages that matched this criteria are marked.
482
483
484
485 4. How to contribute
486 --------------------
487
488 Sylpheed Main: 
489
490         submit it to the Sylpheed ML, Hiroyuki, or Paul Mangan
491         (for incorporation on the Sylpheed Patches page,
492          <http://www.thewildbeast.co.uk/sylpheed/>)
493
494 Sylpheed Claws:
495
496         It is highly recommended to use the sourceforge project page
497         of claws. Check: 
498         http://sourceforge.net/tracker/?atid=384600&group_id=25528&func=browse
499
500         If that's too troublesome, either contact Paul Mangan or consider
501         posting to the sylpheed claws users mailing list.
502
503         Bugs can be reported in the same way; the recommended web page:
504         http://sourceforge.net/tracker/?group_id=25528&atid=384598
505
506         Of course you can also post to the sylpheed claws users
507         mailing list.
508
509 Also, we really try to incorporate good contributions, but sometimes we
510 don't have enough time. If the contribution is really big, or requires
511 a long time to stabilize, send a mail to Paul Mangan. We can probably
512 arrange access to the Claws branch.
513
514
515
516 5. How to request features
517 --------------------------
518
519 Ask around in both Sylpheed ML and Sylpheed Claws Users ML. Note
520 that some developers may already thought about your feature, may
521 perhaps be implementing it - or the feature was already discussed
522 and rejected for whatever reason.  You might want to go ahead and 
523 hack a patch for it. (That would be very cool!) Another
524 possibility is to use the Feature Request Tracker at the
525 sourceforge project page.
526
527
528
529 6. Installing Claws from CVS
530 ----------------------------
531
532   a. Downloading
533   --------------
534
535   To download the latest cvs cd to the directory where you wish to download
536   to and type the following information:
537
538   cvs -d:pserver:anonymous@cvs.sylpheed-claws.sourceforge.net:/cvsroot/sylpheed-claws login
539
540   When prompted for a password press the RETURN key.
541   After anonymously logging in:
542
543   cvs -z3 -d:pserver:anonymous@cvs.sylpheed-claws.sourceforge.net:/cvsroot/sylpheed-claws co sylpheed-claws 
544
545
546   b. Installing
547   -------------
548
549   To compile and install use the following commands:
550
551   ./autogen.sh          [add configure options as required]
552   make
553   make install          [as root]
554
555   You will need a full set of development tools installed to be able to run
556   autogen.sh. See also ac/README.
557
558 7. History
559 ----------
560
561 TODO
562