

Shell script Mac Apps - snihalani
http://mathiasbynens.be/notes/shell-script-mac-apps

======
Argorak
A hidden gem in this post is open(1), which is one of the best command line
utilities on the mac, especially because all of the sane default that most
Apple apps have. I think

`open -a Mail mydoc.pdf` (open Mail and create a Mail with attachment
mydoc.pdf)

is my favorite line of Mac shell magic ever.

~~~
sausagefeet
Wow! Any good collection of things you can do with open?

~~~
Someone
Here is something you can do with man: type 'man _commandname_ ' to get a
description of things you can do with _commandmame_.

This may not work as intended in cases where a command has the same name as a
function. The nicely recursive 'man man' will tell you how to work around
that.

~~~
sausagefeet
You seem to be missing that the value is in combinators. See the PDF trick
above for an example of something not covered in the man page.

~~~
Someone
"Not covered in detail". From the man page:

    
    
      "open -a /Applications/TextEdit.app '/Volumes/Macintosh HD/foo.txt'"
      opens the document in the application specified (in this case, TextEdit)
    

That is exactly what the example does. The only thing that may be slightly
surprising is what Mail.app does when you drag a .pdf on it. But that is only
slightly surprising; the only alternative I can think of is that it would beep
and do nothing else.

Also, the man page has several IMO more interesting examples than this "make a
new mail from the command line, but you will have to use the GUI to fill in
the destination address and to click 'Send'".

For example, I did not know about "open -f", "open -n -W", and "open -h".

~~~
Argorak
Actually, the there is a reason why I use the short form - the rest of the
workflow is also completely keyboard based:

`open -a Mail mypdf.pdf` opens an email window that has the focus and the
cursor in the "from" field, with address book access and all. From there on,
it is:

\- Type the first letters of the contact to sent to \- Tab to "Subject", write
Subject \- Tab to Body, write the Body \- Command-Shift-D

Includes all (legally needed, yawn...) signatures, my S/Mime-setup and has
full access to my address book. Sure, its simple and the equivalent of
dragging the pdf to the Mail icon, but damn quick.

------
jmdeldin
This seems more cumbersome than opening AppleScript Editor, writing the
following, and saving the script as an app.

    
    
      do shell script "my script"
    

Despite being an obnoxious language, AppleScript is pretty handy for
distributing shell scripts onto non-technical users' machines.

~~~
thatjoshguy
I've recently fallen in love with Automator. Although it make have a few
limitations, you can get around it by embedding AppleScript or Python.

In two minutes I made a quick and dirty system wide workflow to download the
selected URL.

------
zdw
For basic GUI interaction, there's also cocoaDialog:

<http://mstratman.github.com/cocoadialog/>

------
cleverjake
see also - <http://sveinbjorn.org/platypus>

~~~
MagerValp
Yes, please use Platypus instead, it'll save you a lot of trouble. The
article's solution is very hackish and as you can tell from the comments
you'll run into lots of issues.

------
tednaleid
It's a lot easier than the original post says (and it's mentioned in the
comments). Just rename your shell script to end in `.command` and you can have
it execute via a double click (or launch it with launchbar/quicksilver). I
have this in my .zshrc to automatically create a new .command file for the
current directory so I can easily open it up in MacVim:

<https://gist.github.com/3474341>

