SIMBL

Links and Downloads

Development Related News

SIMBL-0.9.6c.zip(Snow Leopard)
SIMBL-0.8.2.tbz(Leopard and Tiger)

SIMBL source code

Problem:
Some applications do about 90% of what I want.
Solution:
Develop my own applications.
Better Solution:
Patch the application myself...

Recent News

2009-09-10 - SIMBL for Snow Leopard

SIMBL-0.9.6c works for both 32-bit and 64-bit applications running on Snow Leopard (Mac OS X 10.6).

Existing plugins that are 32-bit and run in 32-bit applications will work fine, but 64-bit applications will require a new 64-bit versions of the plugins. Please direct your 64-bit questions to the plugin developers themselves not to me!

This should be considered beta quality and there will likely be updates in the near future. If you are having a problem, you can check the list of current bugs.

If you are interested in a more in-depth technical explanation, you can can read the SIMBL developement notes.

SIMBL-0.9.6c.zip

What It Does

SIMBL (SIMple Bundle Loader) - pronounced like "symbol" or "cymbal" - allows you to build hacks for Cocoa applications and apply the code selectively based on an application's unique identifier. It's not really all that smart, or even clever, but it's smarter than just blindly loading code into an application.

For example, Safari's application identifier is com.apple.Safari. You can use this to prevent bundles that link against application-specific frameworks from bombing on startup when they encounter another application that does not support those libraries. You can also use the application's bundle version to further specify when your plugin should load.

How To

Once you've installed SIMBL, you need to drop some bundles into the Plugins folder. (/Library/Application Support/SIMBL/Plugins) SIMBL scans this folder for bundles each time an application launches. It will check both the Local and User domain for this special folder.

This means that it will check ~/Library/Application Support/SIMBL/Plugins before looking in /Library/Application Support/SIMBL/Plugins. Additionally, SIMBL detects if you have two conflicting plugins and prevents potentially undesirable behavior by only loading one.

SIMBL plugins are nothing more than standard Cocoa bundles created by XCode, with the addition of one key in the Info.plist. For further information, you can read the SIMBL section in my brief tutorial on Cocoa hacking.

SIMBL was originally created when I was working on PithHelmet, but here are now a bunch of SIMBL plugins available. If you don't see yours listed, feel free to edit the list on the wiki.

Caveats

  1. Given the amount of flexibility Cocoa gives you for loading arbitrary code, you can shoot yourself in the foot pretty easily. Luckily, removing SIMBL from the InputManagers folder will remove any problems you may experience.
  2. It seems like this functionality would have been built into Mac OS X already, so I may be duplicating some native functionality - I hope not, as that would be a waste of time.

Questions | Comments | Feedback

Please feel free to contact me via email - I'm interested to here your criticisms and thoughts.

You can always read about my current projects in my development journal.

Licensing

A few people have asked about licensing terms, etc. SIMBL is licensed under the GNU GPL v2

Let me explain in terms I understand:

  1. You can use SIMBL for anything you like.
  2. You can include the SIMBL.pkg with your distribution, but you need to include the original license and ReadMe files so people know what they are getting.
  3. If you want more from SIMBL, check out the source and make change suggestions. You can modify the code, but if you release it, you must release the source code as well. On a more general note, please do not distribute a modified version of the code under the SIMBL name -- it would make my life a nightmare. If we can't work your changes into the real SIMBL, give it another fairly different sounding name!
  4. There is no warranty of any kind. (I'll do my best to help you if a problem surfaces, but no guarantees...)
  5. If you are using SIMBL in a commercial product, please make a donation to support this project.

The point of the license is to be as flexible as possible - basically, it shouldn't get in the way of writing some cool hack. One of the main reasons I wrote SIMBL was because I didn't like the somewhat draconian terms of the APE license.

Revision History

v0.9.6 - released 2009-09-16/i>

v0.9.5 - released 2009-09-10

v0.9.4 - released 2009-09-08

v0.9.3 - released 2009-09-07

v0.9.2 - released 2009-09-06

v0.8.2 - released 2006-10-17

v0.8.1 - released 2006-03-01

v0.8 - released 2005-06-01

v0.5 - released 2004-08-12

v0.4 - released 2004-07-02

v0.3 - unreleased

v0.2 - released 2003-06-23

v0.1 - released 2003-02-03