Just a quick note. The cmus project has been restarted recently, and
they are working on a new release. This one should have better
integration with things like PulseAudio.
I tend to work over VPN, which we know can be flaky at times, Since I
work on server, I spend a lot of time ssh’ed into hosts. I was getting
tired of the lost time having to restart what I was working on every
time the VPN dropped (which could be as much as every 15 minutes on a
bad day). While I already used screen to handle the lack of terminals
(Alas, I am forced to use a Windows laptop to VPN in with), I thought
there could be an easier way to do this.
The way I tend to work is that I ssh into a jump server, fire up screen,
then ssh into the hosts I need to work on, and fire up screen on those
hosts.
Now, this is nice, but it can get a bit tiring to do it all over again.
So, I found a tool called autossh
which will automatically restart your ssh session if it drops for any
reason but a graceful disconnect. (Well, there are others, but this is
basically it). Combine this with your ssh-agent, and you can re-attach
with easy. I also use keychain to help
manage my ssh-agent when I log in.
Now that the connection will come back, I need a way to re-attach to my
screen session, or if there is not one, to start one for me. To do
that, I have this is my .bashrc file:
test -x $STY && screen -xR
This will check to make sure that we are not already inside a screen
session on the local host (test -x $STY), and if we are not, then
either attach to an existing screen session or start a new one (screen
-xR)
I have define this function in my .bashrc to spawn a new ssh connection
in a separate screen window:
One of the features that most of the pretty GUI mailers offer you is the ability to search your email. While this is not a feature I use regularly, it is one which when you need it, you really need it. I have used grepmail (was at grepmail.sf.net) in the past, but it slow for me (it scans the mail files every time) and the big thing for me is that is only supports mbox files, and I use maildir since I use offlineimap.
I recently found mairix. While I have not been using it long, so far I am very impressed with it. It uses an index to speed up the search process, and it smartly adds only new or changed files to the index. The first indexing run was only a few seconds on my archive of almost 15,000 mail messages. I have it scheduled to update the index every 15 minutes, and I never notice the load this will put on the system.
To integrated mairix with mutt, I wrote a quick little script to search from within (or without) mutt:
#!/bin/bash
#===============================================================================
#
# FILE: mailsearch.sh
#
# USAGE: ./mailsearch.sh
#
# DESCRIPTION: search mail stuff
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Don Harper (), duck@duckland.org
# COMPANY: Don Harper
# VERSION: 1.0
# CREATED: 05/25/2009 07:03:30 PM CST
# REVISION: ---
#===============================================================================
rm -rf $HOME/Maildir/mfolder
echo " t::word
Match word in the To: header.
c::word
Match word in the Cc: header.
f::word
Match word in the From: header.
s::word
Match word in the Subject: header.
m::word
Match word in the Message-ID: header.
b::word
Match word in the message body.
d::[start-datespec]--[end-datespec]
Match messages with Date: headers lying in the specific range.
z::[low-size]--[high-size]
Match messages whose size lies in the specified range.
n::word
Match word occurring as the name of an attachment in the mes-
sage. Since attachment names are usually long, this option
F::flags
Match messages with particular flag settings.
s meaning seen,
r meaning replied
f meaning flags
prefixed by a - to negate its sense.
The a:: search pattern is an abbreviation for tcf:
Match words
The word argument to the search strings can take various forms.
~word
Match messages not containing the word.
word1,word2
This matches if both the words are matched in the specified message part.
word1/word2
This matches if either of the words are matched in the specified message part.
substring=
Match any word containing substring as a substring
substring=N
Match any word containing substring, allowing up to N errors in
the match. For example, if N is 1, a single error is allowed,
where an error can be
* a missing letter
* an extra letter
* a different letter.
^substring=
Match any word containing substring as a substring, with the
requirement that substring occurs at the beginning of the
matched word.
d::start-end
Specify both start and end explicitly
"
echo -n "Enter your search string: "
read string
mairix $string
mutt -f=mfolder
rm -rf $HOME/Maildir/mfolder
Then, I bound this to “S'’ from within mutt:
macro index,pager S "!mailsearch\n"
This will give me a reminder of the search command, run the search, and then give me the search results in a new mutt session.