Core S2 Software Solutions

WindowSnaps!

Logo

Cheesy logo for an awesome desktop app!

I’ve loved the Window’s “window snapping” feature since they introduced it in Windows Vista. The feature is completely intuitive and incredibly helpful for programmers, where you constantly have to pull up documents, texts, images, and other resources, and have them be compared side-by-side. The feature basically is “drag any window by its top bar into the left or right screen edge for it to fill that half of the screen, or drag it to the top to fill the entire screen”. A simple drag and snap to get two windows in parallel without a single precious pixel lost is amazingly helpful when looking up documents; significantly more-so than just alt-tabbing.

OSX doesn’t have this built-in (I’m sure it’ll appear in some future update), and since I’ve yet programmed in Objective-C on OSX proper (the platform is so similar to iOS programming after all), I decided to write my own! Apple engineers did a great job keeping applications in a “sandbox”: there is no formal way, outside of writing a kernal extension, to “extend” the OS (more correctly, the “shell” people see). Thus, my application is truly just an app running in user-space, and gets its control of other windows and user events by using the OSX accessibility API. Though this requires the user to give permission, it is very flexible and pretty all-encompassing. At-times I found it frustrating to entangle C code and Objective-C code, but Apple does a good job of at least keeping the programming approach and designs extremely similar. All of the C code is crystal clear, and the memory-management system is the exact same as Obj-C, so nothing new has to be learned, nor do I have to heavily rely on managing my own memory.

Check out my app, titled “WindowSnaps” on Github here! I’ll be publishing the app for free on the Apple store shortly.

This entry was posted in News & Updates. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

Sites map