]> git.cworth.org Git - sup/blob - doc/UserGuide.txt
tab completion for label editing
[sup] / doc / UserGuide.txt
1 Welcome to Sup! Here's how to get started.
2
3 First, try running 'sup'. Since this is your first time, you'll be
4 confronted with a mostly blank screen, and a notice at the bottom that
5 you have no new messages. That's because Sup doesn't hasn't loaded
6 anything into its index yet, and has no idea where to look for them
7 anyways.
8
9 If you want to play around a little at this point, you can press 'b'
10 to cycle between buffers and 'x' to kill a buffer. There's probably
11 not too much interesting there, but there's a log buffer with some
12 cryptic messages. You can also press '?' at any point to get a list of
13 keyboard commands, but in the absence of any email, these will be
14 mostly useless. When you get bored, press 'q' to quit.
15
16 To actually use Sup for email, we need to load messages into the
17 index. The index is where Sup stores all message state (e.g. read or
18 unread, any message labels), and all information necessary for
19 searching and for threading messages. Sup only knows about messages in
20 its index.
21
22 We can add messages to the index by telling Sup about the "source"
23 where the messages reside. Sources are things like IMAP folders, mbox
24 folders, maildir directories, and Gmail accounts (in the future). Sup
25 doesn't duplicate the actual message content in the index; it only
26 stores whatever information is necessary for searching, threading and
27 labelling. So when you search for messages or view your inbox, Sup
28 talks only to the index (stored locally on disk). When you view a
29 thread, Sup requests the full content of all the messages from the
30 source.
31
32 The easiest way to set up all your sources is to run "sup-config".
33 This will interactively walk you through some basic configuration,
34 prompt you for all the sources you need, and optionally import
35 messages from them. Sup-config uses two other tools, sup-add and
36 sup-sync, to load messages into the index. In the future you may make
37 use of these tools directly (see below).
38
39 Once you've run sup-config, you're ready to run 'sup'. You should see
40 the most recent unarchived messages appear in your inbox.
41 Congratulations, you've got Sup working!
42
43 If you're coming from the world of traditional MUAs, there are a
44 couple differences you should be aware of at this point. First, Sup
45 has no folders. Instead, you organize and find messages by a
46 combination of search and labels (knowns as 'tags' everywhere else in
47 the world). Search and labels are an integral part of Sup because in
48 Sup, rather than viewing the contents of a folder, you view the
49 results of a search. I mentioned above that your inbox is, by
50 definition, the set of all messages that aren't archived. This means
51 that your inbox is nothing more than the result of the search for all
52 messages with the label "inbox". (It's actually slightly more
53 complicated---we omit messages marked as killed, deleted or spam.)
54
55 You could replicate the folder paradigm easily under this scheme, by
56 giving each message exactly one label and only viewing the results of
57 simple searches for those labels. But you'd quickly find out that life
58 can be easier than that if you just trust the search engine, and use
59 labels judiciously for things that are too hard to find with search.
60 The idea is that a labeling system that allows arbitrary, user-defined
61 labels, supplemented by a quick and easy-to-access search mechanism
62 provides all the functionality that folders does, plus much more, at a
63 far lower cost to the user. (The Sup philosophical treatise has a
64 little more on this.)
65
66 Now let's take a look at your inbox. You'll see that Sup groups
67 messages together into threads: each line in the inbox is a thread,
68 and the number in parentheses is the number of messages in that
69 thread. (If there's no number, there's just one message in the
70 thread.) In Sup, most operations are on threads, not individual
71 messages. The ideais that you rarely want to operate on a message
72 independent of its context. You typically want to view, archive, kill,
73 or label all the messages in a thread at one time.
74
75 Use the up and down arrows to highlight a thread. ('j' and 'k' do the
76 same thing, and 'J' and 'K' will scroll the whole window. Even the
77 left and right arrow keys work.) By default, Sup only loads as many
78 threads as it takes to fill the window; if you'd like to load more,
79 press 'M'. You can hit tab to cycle between only threads with new
80 messages.
81
82 Highlight a thread and press enter to view it. You'll notice that all
83 messages in the thread are displayed together, laid out graphically by
84 their relationship to each other (replies are nested under parents).
85 By default, only the new messages in a thread are expanded, and the
86 others are hidden. You can toggle an individual message's state by
87 highlighting a green line and pressing enter. You can use 'E' to
88 expand or collapse all messages or 'N' to expand only the new
89 messages. You'll also notice that Sup hides quoted text and
90 signatures. If you highlight a particular hidden chunk, you can press
91 enter to expand it, or you can press 'o' to toggle every hidden chunk
92 in a particular message. (Remember, you can hit '?' to see the full
93 list of keyboard commands at any point.)
94
95 A few other useful commands while viewing a thread. Press 'd' to
96 toggle a detailed header for a message. If you've scrolled too far to
97 the right, press '[' to jump all the way to the left. Finally, you can
98 press 'n' and 'p' to jump forward and backward between open messages,
99 aligning the display as necessary.
100
101 Now press 'x' to kill the thread view buffer. You should see the inbox
102 again. If you don't, you can cycle through the buffers by pressing
103 'b', or you can press 'B' to see a list of all buffers and simply
104 select the inbox.
105
106 There are many operations you can perform on threads beyond viewing
107 them. To archive a thread, press 'a'. The thread will disappear from
108 your inbox, but will still appear in search results. If someone
109 replies an archived thread, it will reappear in your inbox. To kill a
110 thread, press '&'. Killed threads will never come back to your inbox,
111 even if people reply, but will still be searchable. (This is useful
112 for those interminable threads that you really have no interest in,
113 but which seem to pop up on every mailing list.)
114
115 If a thread is spam, press 'S'. It will disappear and won't come back.
116 It won't even appear in search results, unless you explicitly search
117 for spam.
118
119 You can star a thread by pressing '*'. Starred threads are displayed
120 with a little yellow asterisk next to them, but otherwise have no
121 special semantics. But you can also search for them easily---we'll see
122 how in a moment.
123
124 To edit the labels for (all the messages in) a thread, press 'l'. Type
125 in the labels as a sequence of space-separated words. To cancel the
126 input, press Ctrl-G.
127
128 Many of these operations can be applied to a group of threads. Press
129 't' to tag a thread. Tag a couple, then press ';' to apply the next
130 command to the set of threads. ';t', of course, will untag all tagged
131 messages.
132
133 Ok, let's try using labels and search. Press 'L' to do a quick label
134 search. You'll be prompted for a label; simply hit enter to bring up
135 scrollable list of all the labels you've ever used, along with some
136 special labels (Draft, Starred, Sent, Spam, etc.). Highlight a label
137 and press enter to view all the messages with that label.
138
139 What you just did was actually a specific search. For a general
140 search, press "/". Now type in your query (again, Ctrl-G to cancel at
141 any point.) You can just type in arbitrary text, which will be matched
142 on a per-word basis against the bodies of all email in the index, or
143 you can make use of the full Ferret query syntax:
144
145 - Phrasal queries using double-quotes, e.g.: "three contiguous words"
146 - Queries against a particular field using <field name>:<query>,
147   e.g.: label:ruby-talk, or from:matz@ruby-lang.org. (Fields include:
148   body, from, to, and subject.)
149 - Force non-occurrence by -, e.g. -body:"hot soup"
150
151 You can combine those all together. For example:
152      label:ruby-talk subject:\[ANN\] -rails
153
154 Play around with the search, and see the Ferret documentation for
155 details on more sophisticated queries (date ranges, "within n words",
156 etc.)
157
158 At this point, you're well on your way to figuring out all the cool
159 things Sup can do. By repeated application of the '?' key, see if you
160 can figure out how to:
161  - List some recent contacts
162  - Easily search for all mail from a recent contact
163  - Easily search for all mail from several recent contacts
164  - Add someone to your address book
165  - Postpone a message (i.e., save a draft)
166  - Quickly re-edit a just-saved draft message
167  - View the raw header of a message
168  - Star an individual message, not just a thread
169
170 There's one last thing to be aware of when using Sup: how it interacts
171 with other email programs. As I described at the beginning of the
172 document, Sup stores data about messages in the index, but doesn't
173 duplicate the message contents themselves. The messages remain on the
174 source. If the index and the source every fall out of sync, e.g. due
175 to another email client modifying the source, then Sup will be unable
176 to operate on that source. For example, for mbox files, Sup stores a
177 byte offset into the file for each message. If a message deleted from
178 that file by another client, or even marked as read (yeah, mbox
179 sucks), all succeeding offsets will be wrong.
180
181 That's the bad news. The good news is that Sup is pretty good at being
182 able to detect this type of situation, and fixing it is just a matter
183 of running sup-sync --changed on the source. Sup will even tell you
184 how to invoke sup-sync when it detects a problem. This is a
185 complication you will almost certainly run in to if you use both Sup
186 and another MUA on the same source, so it's good to be aware of it.
187
188 Have fun, and let me know if you have any problems. --William
189
190 Appending A: sup-add and sup-sync
191 ---------------------------------
192
193 Instead of using sup-config to add a new source, you can manually run
194 'sup-add' with a URI pointing to it. The URI should be of the form:
195 - mbox://path/to/a/filename, for an mbox file on disk.
196 - maildir://path/to/a/filename, for a maildir directory on disk.
197 - imap://imap.server/folder for an unsecure IMAP folder.
198 - imaps://secure.imap.server/folder for a secure IMAP folder.
199 - mbox+ssh://remote.machine/path/to/a/filename for a remote mbox file.
200
201 Before you add the source, you need make three decisions. The first is
202 whether you want Sup to regularly poll this source for new messages.
203 By default it will, but if this is a source that will never have new
204 messages, you can specify --unusual. Sup polls only "usual" sources.
205
206 The second is whether you want messages from the source to be
207 automatically archived. An archived message will not show up in your
208 inbox, but will be found when you search. (Your inbox in Sup is, by
209 definition, the set of all all non-archived messages). Specify
210 --archive to automatically archive all messages from the source. This
211 is useful for sources that contain, for example, high-traffic mailing
212 lists that you don't want polluting your inbox.
213
214 The final decision is whether you want any labels automatically
215 applied to messages from this source. You can use --labels to do this.
216
217 If Sup requires account information, e.g. for IMAP servers and remote
218 mbox files, sup-add will ask for it.
219
220 Now that you've added the source, let's import all the current
221 messages from it, by running sup-sync with the source URI. You can
222 specify --archive to automatically archive all messages in this
223 import; typically you'll want to specify this for every source you
224 import except your actual inbox. You can also specify --read to mark
225 all imported messages as read; the default is to preserve the
226 read/unread status from the source.
227
228 sup-sync will now load all the messages from the source into the
229 index. Depending on the size of the source, this may take a while.
230 Don't panic! It's a one-time process.
231
232 Appending B: Handling high-volume mailing lists
233 -----------------------------------------------
234
235 Here's what I recommend:
236 1. Use procmail to filter messages from the list into a distinct source.
237 2. Add that source to Sup as a usual source with auto-archive turned
238    on, and with a label corresponding to the mailing list name.
239    (E.g.: sup-add mbox:/home/me/Mail/ruby-talk -a -l ruby-talk)
240 3. Voila! Sup will load new messages into the index but not into the
241    inbox, and you can browse the mailing list traffice at any point by
242    searching for that label.
243
244
245