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