SIMBL
Links and Downloads
SIMBL-0.9.6c.zip(Snow Leopard)
SIMBL-0.8.2.tbz(Leopard and Tiger)
- 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.
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
- 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.
- 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:- You can use SIMBL for anything you like.
- 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.
- 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!
- There is no warranty of any kind. (I'll do my best to help you if a problem surfaces, but no guarantees...)
- 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>
- fixed installer to repair even worse permissions (repackaged on 2009-09-20 due to another permissions bug)
- injection mechanism is now much more efficient - only affect applications that have plugins
v0.9.5 - released 2009-09-10
- fixed installer to repair bad permissions
- added uninstaller
v0.9.4 - released 2009-09-08
- fixed event targeting - no more dialog asking for missing applications
v0.9.3 - released 2009-09-07
- fixed for garbage collected applications
- fixed installer to remove old conflicting SIMBL InputManager
v0.9.2 - released 2009-09-06
- Snow Leopard compatible
v0.8.2 - released 2006-10-17
- minor fixes to error messages
- Leopard compatible
v0.8.1 - released 2006-03-01
- rebuilt as a universal binary
v0.8 - released 2005-06-01
- improved 10.4.x Tiger compatibility
- better error handling in some extreme corner cases
- warning on deprecated SIMBL interface
- changed the installation package at the request of an informant I shall refer to only as "Deep Throat"
v0.5 - released 2004-08-12
- Fixed version checking bug
v0.4 - released 2004-07-02
- Added version as a new match criteria
- Implemented legacy compatibility for old plugins
v0.3 - unreleased
- Added preflight load mechanism to schedule bundle loading once all system libraries have been initialized
v0.2 - released 2003-06-23
- Changed the search paths
- Added conflict resolution
- Built an actual installer
v0.1 - released 2003-02-03
- Designed to prevent runtime load errors after installing PithHelmet






