Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tsto/notmuchfs
A virtual maildir file system for notmuch queries
https://github.com/tsto/notmuchfs
Last synced: 5 days ago
JSON representation
A virtual maildir file system for notmuch queries
- Host: GitHub
- URL: https://github.com/tsto/notmuchfs
- Owner: tsto
- License: other
- Created: 2012-09-29T12:03:41.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2018-10-10T23:40:51.000Z (about 6 years ago)
- Last Synced: 2024-08-02T12:24:24.604Z (3 months ago)
- Language: C
- Size: 40 KB
- Stars: 89
- Watchers: 7
- Forks: 11
- Open Issues: 4
-
Metadata Files:
- Readme: README.MUTT.md
- License: COPYING
Awesome Lists containing this project
- awesome-starred - tsto/notmuchfs - A virtual maildir file system for notmuch queries (others)
README
notmuchfs - A virtual maildir file system for notmuch queries
=============================================================Notmuchfs is free software, released under the GNU General Public
License version 3 (or later).Copyright © 2012 Tim Stoakes
Quick start - using notmuchfs with mutt
---------------------------------------
Super quick start:
* Add 'notmuchfs/mutt/bin' to $PATH.
* Add 'source /path/to/notmuchfs/mutt/.muttrc' to the top of your '.muttrc', and
edit that file to taste, etc.
* Mount notmuchfs, being sure to pass the option '-o mutt_2476_workaround'.
* Run mutt!Longer - using notmuchfs with mutt
----------------------------------
Notmuchfs was developed because I wanted to use mutt with notmuch, but the mutt
codebase was... difficult.Mutt understands maildirs, so the simplest thing I could think of was to
emulate maildirs on top of notmuch, and point mutt at them. See mutt/.muttrc
for a complete example.It is assumed that notmuchfs is up and running already. If not, get started
by reading README.md, for example:~~~ sh
$ mkdir ~/my_notmuchfs_backing
$ cd ~/my_notmuchfs_mountpoint
$ mkdir "tag:unread and not tag:spam"
$ ln -s "tag:unread and not tag:spam" inbox
$ notmuchfs ~/my_notmuchfs_mountpoint \
-o backing_dir=~/my_notmuchfs_backing \
-o mail_dir=~/.maildir \
-o mutt_2476_workaround
~~~Now, just like any other maildir, simply point the 'folder' variable at
notmuchfs and our new notmuchfs inbox:~~~
set folder=~/my_notmuchfs_mountpoint/
set spoolfile=+inbox/
~~~When the search results have changed e.g. delivery of new mail, mutt will not
automatically notice. So we need to reload the inbox - with a handy macro such
as:
~~~
macro index "#" '^' "Reload mailbox"
~~~It may be nice to colorise messages with particular flags in the index,
perhaps something like:
~~~
color index red default "~h '^X-Label: .*interesting_tag.*$'"
~~~This is however, essentially read-only - not so useful.
(The following section assumes that notmuchfs/mutt/bin/ is in your $PATH, and
'formail' is installed on the system.)Remembering that notmuchfs queries are just directories, making a new search is
simple. With a macro like this, use the included 'mutt/bin/prompt_mkdir' script
to create new query directories from within mutt:~~~
macro index "S" "prompt_mkdir $folder ?" "Create a new notmuchfs query mailbox"
~~~Now we need a way to modify the tags on messages. Again, with a macro like
this, use the included 'notmuch_tag' script to alter the tags on a single
message, or a (mutt) tagged set of messages interactively:~~~
macro index,pager ",T" "formail -d -xMessage-id: -s | tr -d \"<>\" | notmuch_tag" "Manage notmuch tags"
~~~Find yourself entering the same interactive tag modifications over and over?
Perhaps add new macros to taste:~~~
macro index,pager ",tw" "formail -d -xMessage-id: -s | tr -d \"<>\" | notmuch_tag +watch" "Add 'watch' tag"
~~~Mutt bug 2476
-------------
Mutt is not compliant with the maildir specification, see:
* http://dev.mutt.org/trac/ticket/2476
* http://notmuchmail.org/pipermail/notmuch/2011/004833.htmlNotmuchfs can work around this issue, if mounted with the
~~~ sh
'-o mutt_2476_workaround'
~~~
mount option. If you use mutt, you want to use this option. Mutt is basically
unusable without it.