Ruby, JavaScript, Sass, iOS. Stinky Cheese & Beer Advocate. Working at CustomInk and loving it!

Visor Terminal on Snow Leopard

This is a similar process that I had to go through back in the day when I had to hack visor terminal in Leopard. Basically the steps are pretty easy. First you just install SIMBL and the Visor.bundle as a SIMBL plugin in ~/Library/Application Support/SIMBL/Plugins/Visor.bundle. Once that is done here is the process to get this working in Snow Leopard.

First, you are going to need a copy of the Terminal.app from Leopard. I have provided a copy in the resources section below. This copy has a few key things changed in the app's Info.plist file. First I have changed the bundle identifiers and display names to VisorTerminal. This is how we are going to scope visor to use this particular app. It also allows us to set things like the LSUIElement to 1 so that this app does not show in the dock. A summary of the changes I made are below, all these are done already in the download file I provide. If you want to do these on your own copy of Leopard's Terminal.app then just right click on the app, show package contents, and edit the Info.plist file. Remember to rename the app to VisorTerminal.app.

<key>CFBundleDisplayName</key>
<string>VisorTerminal</string>
...
<key>CFBundleIdentifier</key>
<string>com.apple.VisorTerminal</string>
...
<key>CFBundleName</key>
<string>VisorTerminal</string>
...
<key>LSUIElement</key>
<string>1</string>

Now we need to edit the installed ~/Library/Application Support/SIMBL/Plugins/Visor.bundle so that it focuses on the old Leopard's terminal app (now VisorTerminal.app). Again right click on it and show the package contents, here is the complete plist below. You can see where I changed 3 places to VisorTerminal.

<?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>CFBundleDevelopmentRegion</key>
  <string>English</string>
  <key>CFBundleExecutable</key>
  <string>Visor</string>
  <key>CFBundleIdentifier</key>
  <string>com.blacktree.visor</string>
  <key>CFBundleInfoDictionaryVersion</key>
  <string>6.0</string>
  <key>CFBundleName</key>
  <string>Visor</string>
  <key>CFBundlePackageType</key>
  <string>BNDL</string>
  <key>CFBundleSignature</key>
  <string>????</string>
  <key>CFBundleVersion</key>
  <string>Custom</string>
  <key>GoogleML</key>
  <dict>
    <key>TargetApplications</key>
    <array>
      <dict>
        <key>BundleIdentifier</key>
        <string>com.apple.VisorTerminal</string>
        <key>BundleVersionsRE</key>
        <array>
          <string>.*</string>
        </array>
        <key>ExecPattern</key>
        <string>*/VisorTerminal.app/Contents/MacOS/Terminal</string>
      </dict>
    </array>
  </dict>
  <key>NSPrincipalClass</key>
  <string>Visor</string>
  <key>SIMBLTargetApplications</key>
  <array>
    <dict>
      <key>BundleIdentifier</key>
      <string>com.apple.VisorTerminal</string>
    </dict>
  </array>
</dict>
</plist>

Now when you launch VisorTerminal, it will be hidden from the dock and be the app that Visor.bundle focuses on. I really like how this app is removed from the doc too. More so I am just stoked it is working in Snow Leopard. As a last step, yoyou can add this to your login items so that it opens up automatically. I have found that it is a bit sticky when it first launches, but a few clicks in and out on first launch fixes that. One last note, I found it is easier to edit the custom properties for this terminal window like it's default color, font size, etc, if I turn off the LSUIElement.

UPDATE: Thanks to Raptor007 for reminding us that if you want to get a head start on your terminal preferences looking the same for your VisorTerminal, you should copy ~/Library/Preferences/com.apple.Terminal.plist to ~/Library/Preferences/com.apple.VisorTerminal.plist. Thanks!

Resources