On 1-Sep-2010, at 20:17, Macs R We wrote:
> 
> On Sep 1, 2010, at 6:07 PM, LuKreme wrote:
> 
>> Overall, I prefer mail.app and have taken the time to get around some of its 
>> limitations. For example, I don't like how mail.app handles signatures, so I 
>> wrote a script that uses fortune to generate a random signature for me out 
>> of a plain text fortune file.
> 
> Share?

Sure. There's a couple of parts to it. First, you need to get fortune installed 
(I installed it originally via ports, but I keep the binaries for it in 
$HOME/bin/). Remember you will need the fortune executable and the strfile 
executable.

Create your fortune file. I have mine up for easy stealing at 
http://home.kreme.com/mysigs.txt it's around a thousand entries to date culled 
from an eclectic field: some are comedians, some are geeks, some are 
philosophers, some are songs, some are movie quotes. Heck, some I made up 
myself. There's more than a fair lot of Discworld, fair warning. If you haven't 
worked with a fortune file, take a look at it, as the formatting is important 
and stfile will not work properly with a malformed file, and it won't give you 
an error either. Google 'man strfile' for details.

Then you need to make the fortune data file using strfile.

% ~/strfile /path/to/signatures

I use a shell script and a launchagent to do the magic, they set a signature in 
Mail.app named "Fortune" ever few seconds to a random sig. You can change the 
interval of the launchagent to whatever you want if you want the signatures to 
change less often. I would very strongly recommend not going below 12 seconds, 
however. OS X does not like things that try to fire 'too often' and its 
definition of too often is 10 seconds, and it's a rather loose 10 seconds. 11 
doesn't always work, 12 does.

cerebus:~ kreme$ cat $HOME/bin/randsig
#!/bin/bash
SIGHOME="$HOME/.signature"
$HOME/bin/fortune $HOME/mysigs > $SIGHOME

MAIL=`ps -U"$USER" -co command | grep "\bMail\b"`

# Don't bother setting mail's random sig if mail is not running for my user name
if [ "$MAIL" ]; then

# I did this as two steps as a troubleshooting step, then left it.
# It seems something else I used wanted the escaped signature too

     cat $SIGHOME | sed -e 's/"/\\"/g' > $HOME/.mail_signature
     MYSIG="$(<$HOME/.mail_signature)"
     osascript <<EOF
          tell application "Mail" to set content of signature "Fortune" to "-- 
" & return & "$MYSIG"
EOF
fi

This COULD be simpler, but I use $HOME/.signature for slrn as well. I tried to 
use it for ThunderBird, but it would only read the signature file once at 
launch.

Then here's the launchagent that calls the above script:

cerebus:~ kreme$ cat ~/Library/LaunchAgents/com.kreme.home.randsig.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <false/>
        <key>Label</key>
        <string>com.kreme.home.randsig</string>
        <key>ProgramArguments</key>
        <array>
                <string>/Users/kreme/bin/randsig</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>12</integer>
</dict>
</plist>

hnever you make edits to the mysig file, you have to rerun strfile or else it 
all goes pear shaped.

-- 
"It's like those French have a different word for *everything*" - Steve
Martin


_______________________________________________
MacOSX-talk mailing list
[email protected]
http://www.omnigroup.com/mailman/listinfo/macosx-talk

Reply via email to