macOS 14+ · menu-bar app

⌘-Tab, scoped to
what you're doing.

Ninobino carves your windows into named contexts, grouped into workspaces, and gives you a switcher that cycles only the ones in the context you're in. Nothing gets hidden or moved. It just stops showing you everything at once.

Download for macOS Free · Swift + AppKit · no dependencies
switcher — hold ⌘ to cycle
Tab next context confine release to focus
context = pinned rules match legacy muted

A window belongs to a context because you pinned it, or because a rule matches it — minus anything you've muted when a rule gets greedy. Rules re-evaluate live, so they survive relaunches and title changes for free. Prefer them over pins for anything you want to keep.

What it actually does

No virtual desktops, no window rearranging. A soft filter over the windows you already have open.

01contexts

Group windows into named sets

A context can hold specific windows, whole apps, or windows matched by a rule. Cycle only the ones in the context you're working in.

02rules

Declare it once, forget it

Say app is Slack or title ends with — Jira and matching windows join automatically — even after you quit and relaunch.

03follow-focus

The switcher tracks where you are

Switch to a window and Ninobino can silently move you into its context, so what you see always matches what you're actually doing.

04indicator

Active context, at a glance

A color-coded status item in the menu bar tells you which context is live — like the one at the top of this page. Change it above and watch it move.

Grab it and go.

Unzip, drop Ninobino.app in /Applications, and grant Accessibility on first launch. It keeps itself updated in place — the grant survives every update.

Download for macOS
macOS 14 Sonoma+ · Accessibility permission