Snapplr progress

This year I’ve been on a trip to Rome during new year. I’ve visited Michele and we spent pretty much most of the time coding on Snapplr. After one week of rewriting the screenshot selection from scratch, we had a new beta of Snapplr available. We’re proud to say that the selection is now exactly like in Mac OS X, except that you can still decide what to do with the screenshot after it is taken.

In the previous beta one could not make screenshots of menus or utility windows. The problem was that Snapplr always activated and thus deactivated the frontmost application. That was needed because Snapplr needs the keyboard input for best usability. The system’s screen capture tool doesn’t need to activate and still receives the keyboard events. We thought that if this tool can do that, Snapplr can do that as well.

NSApplications can’t capture all keyboard events when they’re not active. This seems to only works for command line applications… and only if you do an animal sacrifice at new moon ;-). So we ended up extracting the screenshot selection into a new terminal tool that is now called by Snapplr upon activation. Unfortunately that also ment porting the NSView UI to a CoreGraphics UI.

During this week we really noticed that it totally pays out if you keep refactoring your code and if you have a good design. We could just drop a couple of classes in the main application and extract their functionality into the terminal tool without much effort.

We also updated the server-side of Snapplr. As of now it is not required to have accounts anymore. We decided that accounts are just too much of an inconvenience for the user.

The new beta is available to all existing beta users. The previous beta should automatically load the new version on launch.

Stay tuned, Snapplr just made a huge step towards final release.

Karsten

Snapplr Screenshot Small

2 Responses to “Snapplr progress”

  1. Scott Says:

    What library/calls are you using to fetch global evens in the command line app? And does this work when Terminal is the frontmost app?

    I’ve used quartz event taps for this, which works… with some drawbacks, including no keyboard events sent if Terminal is frontmost. I’d be curious if there’s another way.

  2. Karsten Says:

    We use mach_ports and lots of private CGS stuff… and yes, it also works when the terminal is frontmost 🙂