summaryrefslogtreecommitdiff
path: root/USAGE.md
diff options
context:
space:
mode:
Diffstat (limited to 'USAGE.md')
-rw-r--r--USAGE.md214
1 files changed, 214 insertions, 0 deletions
diff --git a/USAGE.md b/USAGE.md
new file mode 100644
index 00000000..375d5ec9
--- /dev/null
+++ b/USAGE.md
@@ -0,0 +1,214 @@
+Usage
+=====
+In all views, arrows, page-up/down, j,k and space can be used to move the focus.
+Escape cancels prompts. You can hit ":" at any time and type in commands
+to the prompt. Any commandline can be mapped by using the "MODE-maps" sections
+in the config file. These are the default keymaps:
+
+ [global-maps]
+ @ = refresh
+ I = search tag:inbox AND NOT tag:killed
+ L = taglist
+ shift tab = bprevious
+ U = search tag:unread
+ tab = bnext
+ \ = 'prompt search '
+ d = bclose
+ $ = flush
+ m = compose
+ o = 'prompt search '
+ q = exit
+ ';' = bufferlist
+ colon = prompt
+
+ [bufferlist-maps]
+ x = closefocussed
+ enter = openfocussed
+
+ [search-maps]
+ a = toggletag inbox
+ & = toggletag killed
+ l = retagprompt
+ O = refineprompt
+ enter = openthread
+ | = refineprompt
+
+ [envelope-maps]
+ a = prompt attach ~/
+ y = send
+ s = 'prompt subject '
+ t = 'prompt to '
+ enter = reedit
+
+ [taglist-maps]
+ enter = select
+
+ [thread-maps]
+ C = fold --all
+ E = unfold --all
+ H = toggleheaders
+ P = print --thread
+ S = save --all
+ a = toggletag inbox
+ g = groupreply
+ f = forward
+ p = print
+ s = save
+ r = reply
+ enter = select
+ | = 'prompt pipeto '
+
+Config
+------
+Just like offlineimap or notmuch itself, alot reads a config file in the "INI" syntax:
+It consists of some sections whose names are given in square brackets, followed by
+key-value pairs that use "=" or ":" as separator, ';' and '#' are comment-prefixes.
+
+The default location for the config file is `~/.config/alot/config`.
+You can find a complete example config with the default values in
+`alot/defaults/alot.rc`.
+
+Note that since ":" is a separator for key-value pairs you need to use "colon" to bind
+commands to ":".
+
+Here is a key for the interpreted sections:
+
+ [general]
+ global settings: set your editor etc
+
+ [account X]
+ defines the account X: realname, email address, sendmail
+
+ [X-maps]
+ defines keymaps for mode X. possible modes are:
+ envelope, search, thread, taglist, bufferlist and global.
+ global-maps are valid in all modes.
+
+ [tag-translate]
+ defines a map from tagnames to strings that is used when
+ displaying tags. utf-8 symbols welcome.
+
+ [Xc-theme]
+ define colour palette for colour mode. X is in {1, 16, 256}.
+
+All configs are optional, but if you want to send mails you need to
+specify at least one account section.
+A sample gmail section looks like this:
+
+ [account gmail]
+ realname = Patrick Totzke
+ address = patricktotzke@gmail.com
+ aliases = patricktotzke@googlemail.com
+ gpg_key = D7D6C5AA
+ sender_type = sendmail
+ sendmail_command = msmtp --account=gmail -t
+
+I use this for my uni-account:
+
+ [account uoe]
+ realname = Patrick Totzke
+ address = ...
+ aliases = foobar@myuni.uk;f.bar@myuni.uk;f.b100@students.myuni.uk
+ sender_type = sendmail
+ sendmail_command = msmtp --account=uoe -t
+ sent_box = maildir:///home/pazz/mail/uoe/Sent
+ draft_box = maildir:///home/pazz/mail/uoe/Drafts
+ signature = ~/my_uni_vcard.vcs
+ signature_filename = p.totzke.vcs
+ abook_command = abook --mutt-query
+
+
+Caution: Sending mails is only supported via sendmail for now. If you want
+to use a sendmail command different from `sendmail`, specify it as `sendmail_command`.
+
+`send_mailbox` specifies the mailbox where you want outgoing mails to be stored
+after successfully sending them. You can use mbox, maildir, mh, babyl and mmdf
+in the protocol part of the url.
+
+The file specified by `signature` is attached to all outgoing mails from this account, optionally renamed to
+`signature_filename`.
+
+If you specified `abook_command`, it will be used for tab completion in queries (to/from)
+and in message composition. The command will be called with your prefix as only argument
+and its output is searched for name-email pairs. The regular expression used here
+defaults to `(?P<email>.+?@.+?)\s+(?P<name>.+)`, which makes it work nicely with `abook --mutt-query`.
+You can tune this using the `abook_regexp` option (beware Commandparsers escaping semantic!).
+
+
+Hooks
+-----
+Hooks are python callables that live in a module specified by
+`hooksfile` in the `[global]` section of your config. Per default this points
+to `~/.config/alot/hooks.py`.
+For every command X, the callable 'pre_X' will be called before X and 'post_X' afterwards.
+
+When a hook gets called, it receives instances of
+
+ * ui: `alot.ui.UI`, the main user interface object that can prompt etc.
+ * dbm: `alot.db.DBManager`, the applications database manager
+ * aman: `alot.account.AccountManager`, can be used to look up account info
+ * log: `logging.Logger`, to write to logfile
+ * config: `alot.settings.config`, a configparser to access the users config
+
+An autogenerated API doc for these can be found at http://pazz.github.com/alot/ ,
+the sphinx sources live in the `docs` folder.
+As an example, consider this pre-hook for the exit command,
+that logs a personalized goodby message:
+
+```python
+def pre_exit(aman=None, log=None, **rest):
+ accounts = aman.get_accounts()
+ if accounts:
+ log.info('goodbye, %s!' % accounts[0].realname)
+ else:
+ log.info('goodbye!')
+```
+
+Apart from command pre and posthooks, the following hooks will be interpreted:
+ * `reply_prefix(realname, address, timestamp, **kwargs)`
+ Is used to reformat the first indented line in a reply message.
+ Should return a string and defaults to 'Quoting %s (%s)\n' % (realname, timestamp)
+
+ * `forward_prefix(realname, address, timestamp, **kwargs)`
+ Is used to reformat the first indented line in a inline forwarded message.
+ Returns a string and defaults to 'Forwarded message from %s (%s)\n' % (realname, timestamp)
+ * `pre_edit_translate(bodytext, **kwargs)`
+ can be used to manipulate a messages bodytext before the editor is called.
+ Receives and returns a string.
+ * `post_edit_translate(bodytext, **kwargs)`
+ can be used to manipulate a messages bodytext after the editor is called
+ Receives and returns a string.
+
+
+
+Theming
+-------
+You can change the colour settings in the section `[Xc-theme]`, where X is the
+colour mode you use. This defaults to 256, but 16 and 1 are also possible.
+The colourmode can be changed in the globals section or given as a commandline
+parameter (-C).
+The keys in this section should be self explanatory. In 16c and 256c modes you can define Y_fg and
+Y_bg for the foreground and background of each keyword Y. These can define colorcodes and flags
+like `underline` or `bold`, comma separated if you want more than one. See urwids doc on Attributes:
+http://excess.org/urwid/reference.html#AttrSpec
+Urwid privides a neat script that makes choosing colours easy, which can be found here:
+http://excess.org/urwid/browser/palette_test.py
+
+See `data/example.full.rc` for a complete list of widgets that can be themed.
+Moreover, keywords that start with "tag_" will be used to display specific tags. For instance, you
+can use the following to always display the "todo" tag in white on red, when in 256c-mode.
+
+ [256c-theme]
+ tag_todo_bg = #d66
+ tag_todo_fg = white
+
+You can translate tag strings before displaying them using the [tag-translate] section.
+A key=value statement in this section is interpreted as:
+Always display the tag `key` as string `value`. Utf-8 symbols are welcome here.
+See e.g. http://panmental.de/symbols/info.htm
+I personally display my maildir flags like this:
+
+ [tag-translate]
+ flagged = ⚑
+ unread = ✉
+ replied = ⇄