Message Indicator

I find that I commonly open chats in Messages on my computer to make the 'unread' indicator go away. However, if there's any delay in answering them back, it's quite common that I'll simply forget to respond to the text for a while. I've already addressed this on my iPhone using a Cydia tweak (post coming eventually) that adds a gray indicator to chats if I wasn't the last person to respond. So I figured out how to port it to macOS.

I first read about SIMBL (a plugin manager for macOS) in pursuing a different project of being able to easily rename desktop spaces in Mission Control. Similar to Cydia, SIMBL hooks into existing applications and hijacks the call requests to certain classes so that they first get filtered by your own code. I used a project called colorfulSidebar9 as a launching point.

Because I'd already figured out the general process on iOS, it was a simple job of swapping some bundle IDs to target the right app, figuring out the corresponding (but remarkably similar) classes and functions to overwrite, and swapping out instances of UIView for the macOS NSView equivalent. In figuring out what classes and functions were relevant, F-Script was uniquely useful. You can load it into applications with mySIMBL, the particular flavor of SIMBL that I'm using (and the only one so far that seems to work with Sierra). Then it allows you to inspect visual elements, and dive in through headers, superclasses, etc.

Then it was just a matter of combining it and packaging it. The finished product looks like this:

Preview

which simply adds a gray indicator if you weren't the last person to respond (and it's not a group chat). You can check out the source code here, which also includes installation instructions. I've also made a request for it to be included in the default packages for mySIMBL, which would make it even easier to install.

Hopefully this will serve as a strong launch point for other macOS modifications I want to do in the future. Like most technologies, you're never really comfortable with them until you've jumped in and messed around.