Contain

All your windows, in one window

Contain gathers the windows you already have open — a document, a browser, a terminal — into one window with tabs. Click a tab to switch. Click ↗ to send a window back to the desktop, exactly where it was. Nothing is copied or mirrored: it is your real window, just kept somewhere tidier.

macOS app · v0.4.0 · macOS 13 or laterPublic beta — free, no accountBuild expires 20 August 2026

This is a free beta, and it has an end date

Contain 0.4.0 stops working on 20 August 2026. On that day it tells you the preview has ended, points you at the current version and closes — putting every window it was holding back where it belongs first, so nothing is left hidden. Settings counts down to the date, a new beta resets it, and since Contain updates itself, staying current takes nothing on your part.

Your windows become tabs.

Windows, not applications. Three documents from one editor are three separate tabs, and each one keeps its own place in the container.

TextEdit — Notes.txt
TextEdit — draft.md
Safari — Release notes
+

Contained window

Your actual TextEdit window, held right here.

Type in it. It is not a screenshot.

One task, one window

Editor, terminal and browser as three tabs in a single window you can park wherever suits you.

Less hunting around

Stop cycling through ⌘-Tab to find the window you had a minute ago. Click its tab instead.

Tidy up, then undo it

Gather what you need for an hour of work, then let it all go — every window returns to where it came from.

Getting started

Three clicks from a cluttered desktop.

There is nothing to configure, no rules to write and no keyboard language to learn. Contain works with the windows you already have on screen.

  1. 1

    Open the windows you want

    Anything already running works — a document, a browser, a terminal, a chat. There is nothing to install alongside it and no list of supported apps.

  2. 2

    Click the Contain window and pick one

    You get a grid of everything currently open, each tile showing the app icon plus the app and window name. Click a tile and that window becomes a tab.

  3. 3

    Work — and let go when you are done

    Click a tab to switch windows. Click ↗ (or press ⌘W) to release one back to the desktop, or just quit Contain to release them all at once.

Picking a window

Everything open, shown as tiles you can recognise rather than a long list to read. Windows you have already contained drop out, and an app you hid yourself is offered as one entry that brings it back first.

Click the empty window — or + in the tab bar

TextEditNotes.txt
SafariRelease notes
Terminalcontain — zsh
Musicshow windows…

What it does

Small app, careful about your stuff

Contain gathers, holds and lets go — and does nothing you did not ask for.

01

One tab per window, not per app

Three documents from the same editor are three separate tabs, so you can move between them directly. Clicking a tab brings that window to the front and moves the rest out of the way.

02

Pick from a grid of what is open

Click the empty Contain window — or + in the tab bar — and every open window appears as a tile you can recognise at a glance, four to a row. Pick one and it is a tab. No relaunching, no setup.

03

Windows stay where you put them

Apps sometimes move their own windows, and drags go astray. Contain puts a window that has drifted back within a second, so the layout you set up in the morning is still there in the afternoon.

04

Move it, resize it — the window comes too

Drag the container across the screen or pull an edge, and the window it holds travels with it, in front and in step. Zoom it big and back down again and the window follows all the way, instead of keeping the size it had at the widest point.

05

One window contained, the rest left alone

Contain one of three documents from the same app and the other two carry on as they were, out on the desktop. Contain only tucks an app away when it holds every window that app has open.

06

Put back exactly as found

Contain remembers the position, size and screen a window had before you contained it, and puts it back there the moment you release it — or when you quit. It never closes an app for you, and leaves nothing behind.

07

The real window, still live

Nothing is copied, mirrored or streamed. What you see inside the container is the genuine app window: type in it, scroll it, drop files onto it, exactly as before.

08

Tells you when something is missing

Contain needs one macOS permission to move windows, and that permission is easy to lose after an update. Settings (⌘,) shows you at a glance whether it is still granted, with a button straight to the place to fix it.

09

Explains its own edges, where you hit them

The handful of behaviours macOS forces on Contain read as bugs without an explanation. A Limitations pane in Settings, and a ? beside the version in the tab bar, give you the same list you will find further down this page — right where you met the behaviour.

10

Keeps itself up to date

New versions arrive quietly in the background and install with a click, and you can check whenever you like. Every update is verified before it is installed.

11

What you have open stays with you

The list of apps and windows you contain never leaves your Mac — no app names, no window titles, nothing. The few anonymous counts Contain does send are named one by one in Settings, with a switch that stops them the moment you click it.

12

Live previews, only if you ask

Picker tiles can show a live thumbnail of each window instead of an icon. That needs a much broader permission, so Contain never asks for it on its own — and works perfectly well on icons if you would rather not.

Requirements

What it needs

  • macOS 13 or later, on Apple Silicon or Intel
  • Accessibility permission — this is what lets Contain move windows for you. macOS asks the first time you launch it, and Contain does nothing at all until you say yes
  • Screen Recording — optional, and only if you want live thumbnails in the picker. Contain never asks for it on its own
  • Nothing else — no account, no sign-up, no background helper, nothing added to your login items

You can grant or check the permission any time under System Settings → Privacy & Security → Accessibility (add Contain with + if it is not listed). Contain's own Settings tells you whether it is still in place.

Installing

Safe to install

Contain is signed and notarized by Apple, so it opens like any other app — no warning to click past, no workaround needed. Open the disk image, drag Contain to your Applications folder, and that is the whole install. It keeps itself up to date from there.

You will not find it on the Mac App Store. Apps there run walled off from the rest of the system in a way that blocks the one thing Contain does — moving another app's windows — so a store version simply would not work. We publish it directly instead, and always sign it the same way, so an update never costs you the permission you already granted.

Download v0.4.0

Open the disk image, drag Contain to Applications, launch it, and say yes when macOS asks about Accessibility. That is it — from then on Contain updates itself.

Free, with no account and nothing to sign up for. This beta build stops working on 20 August 2026. See the changelog for what is new in this release.

Good to know

Where macOS draws the line

A few things behave differently to what you might expect — usually because macOS itself allows nothing else. These are the ones you will actually notice, and the same list is in the app: Settings → Limitations, or the ? beside the version in the tab bar.

The green button fills the screen, not full screen

Proper full screen would move the container to a desktop of its own and leave everything it holds behind on the old one — macOS gives no way around that. So the green button zooms Contain to fill the screen instead, and the windows inside follow along.

Some windows will not shrink

A few apps refuse to go below a size of their own — System Settings is one. Contain makes room for them when you first add them, as far as the screen allows, and centres them neatly when it cannot.

Two windows from the same app

macOS can only tuck away a whole app, never a single window. So when one app has several windows contained, the ones you are not looking at sit directly behind the selected one instead of disappearing — and an app that still has a window open outside Contain is left on screen entirely, rather than taking that window away with it.

Apps you hid yourself

An app you hid before Contain ever saw it appears in the picker as one entry that brings it back first — then its windows are pickable as usual.

The window inside trails a drag

Drag the Contain window quickly across the screen and the window inside runs a fraction behind it — macOS only lets Contain move another app's window by asking, and the answer takes a moment. It catches up as soon as you slow down.

Open the window first

Contain works with windows that already exist — it does not launch apps for you. Open what you need, then contain it.

Public beta

Try it on a window you already have open

Contain is at v0.4.0 — small, free, and still finding its edges. It borrows a window you already have open and gives it back the moment you ask, exactly where it found it, so trying it costs you nothing but the download. The beta runs until 20 August 2026.