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.
Resize the focused app’s focused window to fullscreen on a 27" iMac:
[HAXSystem system].focusedApplication.focusedWindow.size = NSMakeRect(0, 0, 2560, 1440);
Close all windows in the focused app:
[[HAXSystem system].focusedApplication.windows makeObjectsPerformSelector:@selector(close)];
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.
This framework would not be what it is without the help of:
-
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
-
Scott Perry for his industrious work on Haxcessibility, which modernized it and increased its functionality greatly; and also for his project Switch, a window-based context switcher that motivated a lot of this effort