Another day, another Bunch

[Tweet : nvALT]

I should probably eventually try to make money off of Bunch. But for now it’s just what I’m going to do to stretch my fingers (and brain) in the morning before I start my day’s work on nvUltra (I’ll post an update on that soon, things are going quite well).

Automatic Updates

First things first, I finally added automatic updates (Sparkle) to Bunch. Now it will ask you if you want to check for updates and will just let you install new versions with the click of a button. Adding this meant admitting to myself that I was going to keep updating it, but it’s hard to deny that at this point.

This also means I’ll stop overloading my blog with notes on every update. The project page will continue to be updated with the changelog, and I’ll only post about “big” changes.


I added a new syntax for running commands that are built in to Bunch. You just put the line in parenthesis and if the enclosed string matches a valid command, Bunch will execute it. Commands are mostly going to be shortcuts to system events. Right now, the only commands are “hide dock” and “show dock.” I’ll add more as I need to.

Quitting Bunches

Next new feature is the ability to quit Bunches. There’s an option in the Preferences submenu (also under Bunch in the menu bar) called “Toggle Bunches” that will set a preference for you. When enabled, when you launch a bunch, its menu item gets a checkmark showing that it’s active. Clicking a checked Bunch will reverse it, quitting any apps it launched, ignoring lines for files, focus, quit, and AppleScript.

There’s also a submenu called “Quit Apps in Bunch…” that contains a list of all of your Bunches so you can quit the apps for any Bunch, even if you haven’t activated the Bunch previously.

Finally, there’s a mode called “Single Bunch Mode.” You can toggle it in the menu bar under Bunch->Single Bunch Mode. When this is active, launching a Bunch will quit apps in the last Bunch prior to launching the new Bunch. If the new Bunch contains apps existing in the previous Bunch, those apps will be ignored.

If two Bunches have overlapping apps, nothing happens to those apps when switching Bunches (so the app doesn’t quit and relaunch). Same with Dock Commands, they won’t be doubled up.

A tip for using Toggle/Single Bunch Mode: Don’t include apps in your Bunch that you generally always have running anyway. That way when you quit apps in a Bunch, you won’t have to relaunch them.

Hiding Apps

In the same vein, I thought it would be nice to hide all open apps when launching a bunch. You can now include a line with just “@@” on it, probably at the top of your bunch file, and it will just breeze through all open apps and ask them to hide. The only ones it misses are menu bar apps like Dash or nvALT. Not much I can do about those if they’re not running in the Dock.

I had previously included a feature where putting an underscore after an app name, e.g. Slack_, would hide it after launch. It’s not perfect. Slack is actually a great example of its imperfection… Bunch waits a few seconds and hides it, but Slack takes long enough to launch that it becomes active again when it’s finished loading. I’ll see if I can find an efficient way to handle that, but I note that even Login Items with “Hide” checked often fail to do so.

As always, have fun, and enjoy the ease of automatic updates (assuming they work as well in the wild as they did in testing…). Download and updated docs on the Bunch page.