/Haxcessibility

Hackery via the AX (Accessibility) APIs

Primary LanguageObjective-CBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Haxcessibility

Haxcessibility is, above all, a horrible pun on Mac OS X’s Accessibility framework and its AX prefix. I am shameless.

Second to that, Haxcessibility is a use case–driven remote control for Mac apps by Mac apps. It enables hacks like moving and resizing another app’s windows, and there’s loads more that the AX APIs make possible that Haxcessibility could make convenient with a method or two.

Use it

Resize the focused app’s focused window to fullscreen:

[HAXSystem system].focusedApplication.focusedWindow.frame = NSScreen.mainScreen.frame

Close all windows in the focused app:

[[HAXSystem system].focusedApplication.windows makeObjectsPerformSelector:@selector(close)];

Improve it

Don’t see the feature you want? Fortunately, it’s pretty easy to add your own convenience methods. Fork Haxcessibility and send me a pull request with your code.

You’ll want to pay special attention to the HAXElement+Protected.h private header. HAXElement is the root of most functionality in Haxcessibility, and this header declares the conveniences defined for wrapping more of the Accessibility APIs’ functionality.

Thanks to

This framework would not be what it is without the help of:

  • Rob Rix for creating and curating Haxcessibility for the first five years of its existence.

  • Decimus Software for DTerm, which showed us what you can do with the Accessibility APIs

  • DEVONtechnologies, LLC for their patronage of Grid, the original raison d’être of this framework