Biting the Terminator bullet on Mac OS

I've long used Terminator as my only terminal emulator on Linux. On Mac OS, I've kept on using Terminal. I sometimes find myself thinking "damn, I wish I was running Terminator", usually when I need to search for something, or I'm staring at something like SourceFile.java:123 and wondering why I can't just click on it. But somehow I still keep using Terminal.

Anyway, someone recently asked what the best way to run Terminator is on Mac OS, and I didn't understand what all the fuss was about. I'd been happily running ./bin/terminator from the bash(1) prompt. I assumed that, when I was ready to switch, I'd just go into System Preferences and add the shell script as a new Startup Item.

It turns out that you System Preferences will let you choose a shell script as a Startup Item, but when you log in, nothing will seem to happen, and the console (the one in /Library/Logs/Console/elliotth/console, obviously) will say:

2004-12-31 22:31:31.361 loginwindow[1426] LSOpenFromURLSpec return err = -10814

Which here means "try again with an app bundle instead". You can find this error in the LSInfo.h header file, which suggests that an application might need to claim shell scripts before you can open them like this; experimentation with open(1) concurs.

Seems stupid to me, but I don't make the rules.

To fix the problem, I told make(1) to copy all the necessary files into terminator.app/Contents/Resources, and to write a little shell script called terminator.app/Contents/MacOS/terminator that just execs the real shell script in ../Resources. If I choose that as a Startup Item, Terminator now starts when I log in.

No more Terminal for me.

Yum! Dog food. My favorite!

And already I'm annoyed because Mac OS is still using Java 1.4, where Sun deliberately broke System.getenv, and with it my ability to click on links in Terminator. I know I'm no worse off than I was two minutes ago, when I was using Terminal, but it's a whole lot more annoying. Tantalus had no idea.

Anyway, if you want Terminator.app you'll have to type make app in the terminator directory. It'll create an app bundle in the parent directory. This doesn't sound like a permanent solution, and all the copying is especially unsuited to my situation as developer: it takes as long to make the app bundle as it does to build all the classes. Maybe I should make a hollow Terminator.app that just has symbolic links to the real project directories?