SIMBL

SIMBL (short for SIMple Bundle Loader, formerly Smart InputManager Bundle Loader, and pronounced like symbol or cymbal), is a discontinued application enhancement (InputManager bundle) loader for Mac OS X developed by Mike Solomon. It helps third-party developers modify and add functionality to applications developed with the Cocoa environment without access to the source code. SIMBL loads code via the InputManager system, which was developed to support foreign input methods. Plugins using SIMBL have advantages over normal InputManager modifications such as targeted code loading into specific applications. Designed for Solomon's PithHelmet, SIMBL is now used by other developers. The most popular use of SIMBL is to add functionality to the Apple Safari web browser which did not have an Apple-authorized plugin system until version 5 in 2010.

SIMBL was developed in response to the restrictive licensing and costs of Application Enhancer and the drawbacks of loading code blindly through the InputManager mechanism.

Installation
SIMBL is installed like any other InputManager. As such, it is restricted to certain locations depending on the version of Mac OS X installed. In default installations, it is located in /Library/InputManagers. In versions of Mac OS X prior to Leopard, SIMBL could be installed per-user. In plugin installations, the SIMBL package is automatically installed. Since SIMBL injects code into running processes, buggy plugins can cause process- or even systemwide problems.

Plugins
Plugins for SIMBL are Cocoa bundles that add various functionality to Cocoa applications. They can be placed by the user manually through Finder or by an installer to /Library/Application Support/SIMBL/Plugins. It may also be placed in the user-specific home directories.

Advantages over InputManager Plugins
SIMBL bundles may be disabled by removing the plugin and restarting the application. With normal InputManager hacks, the user must log out and log in. Also, the normal InputManager mechanism is loaded for all Cocoa applications, providing the possibility of incompatibility and unexpected application behavior. SIMBL only loads bundles for specific and identified applications.

Leopard restrictions on InputManager plugins mean their installation can only be done system-wide. SIMBL plugins may be installed per-user if SIMBL is installed system-wide.

Update Compatibility
SIMBL plugins must specify which versions of the application that they will run with; running a more recent version of the application with the plugin activated will cause an error dialog to appear. Like all unsupported hacks, the amount of work required to update a plugin depends on the size of the update.

Development
Development of SIMBL plugins require knowledge of Cocoa reverse-engineering. SIMBL works only with Cocoa applications, not Carbon or other kinds of applications.

No licensing payment is required to use SIMBL, unlike APE, although a donation is suggested. The source to SIMBL is also freely available.

Alternatives

 * Application Enhancer by Unsanity
 * PlugSuit by the Afloat authors (Compatible with SIMBL plugins)
 * EasySIMBL by Norio Nomura (built upon original SIMBL plugin, compatible to 10.7 & 10.8)
 * mySIMBL by w0lfschild (macOS 10.9 and above)