Unfortunately, for a number of reasons, I’ve been far too busy to follow up my previous post to use Mac OS X’s launchd to detect when the Sony eReader connects. There’s a lot of good launchd stuff on the Web, though, and it promises to be pretty easy once I sit down and actually write a plist for it.
In the mean time, here’s a revised script for moving the printed PDF files from a spooling directory to the eReader on connection. The setup is the same as before; simply kick the script with a Folder Action.
#!/usr/bin/env sh PATH=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin export PATH readermain="/Volumes/PRS 700" readercard="/Volumes/700 CARD" spool="/Users/kf6gpe/.cups-pdf-spool" pdfdest="$readercard/PDFs/" growl() { message="$*" which growlnotify > /dev/null if [ $? -eq 0 ]; then echo $message | growlnotify -t "eReader" -p -2 -a /Applications/Preview.app fi } if [ -f "/tmp/prs-busy" ]; then exit 0; fi if [ -d "$readercard" ]; then touch /tmp/prs-busy growl "Device detetected."; for f in `ls $spool/*.pdf` do cp $f "$pdfdest" if [ $? -eq 0 ]; then rm -f $f growl "Transferred `basename $f`." fi done growl "PDF transfer complete."; rm /tmp/prs-busy else rm /tmp/pre-busy 2>&1 /dev/null fi
exit 0
The changes are pretty self-explanatory. In brief:
- Have use Preview’s icon, in case Calibre isn’t installed.
- Only look for the eReader’s card; there’s really no reason to look for both volumes.Â
- Use the lock file /tmp/prs-busy to ensure that the actual movement of the files doesn’t occur while it’s actually running.Â
Of these changes, (3) was certainly the most important, because if you mounted another volume (say, a digital camera) while the script was doing things, weird things could happen. In practice, I never saw anything amiss, but this makes me sleep better at night.