-good page on how to set it up.
-4. a reasonably fast connection. (This isn't really *neccessary*, but
-if your connection is too slow, this won't be very pleasant to use,
-and certainly won't seem transparent.)
-
-##Write a wrapper shell script##
-
-/!\ Now that notmuch (>=0.5) allows for "raw" downloading of messages, a lot
-of the hacks in the older script, posted in 2010, are no longer necessary.
-
-Now we will need to write a simple shell script that does two things:
-
-1. replaces the call to the notmuch binary with a call to notmuch
-over ssh.
-2. caches messages when the entire raw message is downloaded. This
-avoids the need to constantly download large attachments over and
-over. (NB: this just checks to see if a message with the same id
-has already been cached. If you delete an attachment on the server,
-that could lead to an out-of-date cache. It would probably make more
-sense in the future to concatenate a hash of the message id and a hash
-of the message.)
-
-Note that this shell script also pauses briefly after every message
-entries. This is currently necessary so that the emacs process-filter
-doesn't chop off messages. It's an obvious hack, and hopefully won't
-be necessary in the furture.
-
- #!/usr/bin/env bash
- SSH_BIN="/path/to/ssh/on/client"
- USER="user_name"
- SSH_HOST="server_name"
- NOTMUCH_REMOTE_BIN="/path/to/notmuch/on/server"
- CACHE="${HOME}/.notmuch-cache.d"
-
- hash_name ()
- {
- echo -n ${1} | sha1sum | awk '{print $1}'
- }
-
- check_for_file_name ()
- {
- [ -f "${CACHE}/${1}" ]
- }
-
- notmuch_run ()
- {
- [ -d "${CACHE}" ] || mkdir -p "${CACHE}"
- CMD=$1
- shift
- # we need to a little sanitizing of msg ids so the shell
- # doesn't mangle them
- printf -v ARGS "%q " "$@"
- $SSH_BIN $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN ${CMD} ${ARGS}
- }
-
- notmuch_search ()
- {
- notmuch_run search $@ |
- while read line; do
- sleep 0.02 # Workaround a bug (missing lines) in the emacs interface
- # NOTE: This workaround is no longer necessary as of
- # git rev eead2382. You can just run
- # `notmuch_run search $@'
- echo "${line}"
- done
- }
-
-
- notmuch_show ()
- {
- if [ ${1} = "--format=raw" ]; then
- hashed=`hash_name ${2}`
- check_for_file_name ${hashed} ||
- notmuch_run show --format=raw ${2} > "${CACHE}/${hashed}"
- cat "${CACHE}/${hashed}"
- else
- notmuch_run show $@
- fi
- }
-
-
- if [ ${1} = "search" ]; then
- shift
- notmuch_search $@
- elif [ ${1} = "show" ]; then
- shift
- notmuch_show $@
- else
- notmuch_run $@
- fi
-
-
-Save this to a file, "remote-notmuch.sh", in your path.
-
-Now you can run "remote-notmuch.sh new". You can call the script
-anything you like. I actually have $HOME/bin/notmuch linked to that
-script, so I can transparent
-usage. (Since I run "new" from an emacs keybinding, I've never
-bothered with this renaming.)
-
-##Configure your emacs client##
-
-The only thing you need to do is tell your emacs client to use the
-script. Add the following to your .emacs (this is on your client
-machine):