Skip to content

About

Make room. Keep your place. Native macOS window shading, live pinned previews, and lid-driven desktop effects.

Topics

Resources

Stars

22 stars

Watchers

0 watching

Forks

Repository files navigation

WindowShade

WindowShade

Roll it up. Keep its place.
Double-click a title bar and the window rolls up into a thin bar, right where it was.
Double-click again and it’s back. Rest the pointer on the bar to glance at it without unrolling.
A free, open-source window utility for Mac.

Release macOS Apple Silicon License

Download for Mac · Website · Intro video (Bilibili, in Chinese) · Window stories · 简体中文

The Reference window rolled up into a thin bar where it was, uncovering the draft behind it

The interactive illustration from the website: Reference rolls up, and the draft behind it shows through. Try it yourself →

Three ways to move a window aside. Only one never makes you look for it.

When a window covers something, you probably close it or minimize it. Both work. Getting it back just takes a little effort.

Where the window goes Getting it back
Close It’s gone Open it again, then find your place again
Minimize Into the Dock Spot it in the Dock first
Roll up A thin bar, right where it was Double-click the bar

Unlike minimizing, the window never leaves the desktop. Drag the bar somewhere else and the window opens there.

Download

Get the latest ZIP from Releases, unzip it, drag WindowShade.app into Applications and open it, then follow the permission prompts. It lives in the menu bar and stays out of your Dock.

  • Needs macOS 14 or later and Apple Silicon. There’s no Intel build.
  • 1.0.15 download: 4.06 MB ZIP; the extracted app contains 7.98 MB of files (decimal MB; filesystem allocation may differ).
  • Not notarized yet. If macOS blocks the first launch, go to System Settings → Privacy & Security and choose Open Anyway. You don’t need to turn off any system security.
  • Every release ships with a SHA-256 checksum file; for what changed in each version, see the release notes.

What it does

Roll up. Double-click a title bar or press ⌃⌘C and the window rolls up into a thin bar; double-click the bar to unroll it. The bar can keep the window’s own look, or use one consistent title bar. While a bar is in front, ⌘W, ⌘M, ⌘H, ⌘Q and ⌘N go to the window and app behind it; ⌘Q puts the window back down first, so any “save changes?” question is where you can see it.

Title-bar gestures. Put the pointer on a title bar and swipe with two fingers: push up to roll up, pull down to fill the screen between the menu bar and the Dock, push up again to put it back. Nothing happens until you let go, so pulling back halfway undoes it, and a panel styled like the system volume indicator says what letting go will do. Swipe sideways for half the screen; keep swiping the same way for two thirds, then one third, and once more moves the window to the display on that side. Turn down or up after a sideways swipe to take that corner. Spreading two fingers also fills the screen, and pinching undoes the last placement. Drag a title bar, throw it and let go, and the window glides the way you threw it — up rolls up, down fills, the sides walk the same steps, and a throw aimed at a corner takes it. With an ordinary mouse, three notches of the wheel on a title bar count as one swipe; Magic Mouse support is still being checked on real hardware. Details are in the gesture notes.

Glance. Rest the pointer on the bar and a card drops down beneath it, showing the window's content at its own size; move away and it rolls back up. Click the card to unroll the window for real; on a Force Touch trackpad, pressing firmly on the bar also glances, and letting go puts it away. The bar stays put and the card hangs just below it, so it reads as a preview, not the window itself. A glance never switches the app you’re in and never moves a window. A window that was minimized when it rolled up can’t be shown live, so you see how it looked then, and the corner says so. Details are in the glance notes.

Carry and pin. Press ⌃⌘G to carry the current window to every desktop: it stays where it is, and its bar appears in the top-right corner of your other desktops. Rest on the bar for a live picture — if the window is hidden or minimized, a labelled snapshot appears instead — and click it to go there; press ⌃⌘G again to put it down. Press ⌃⌘P to pin a window, so it stays uncovered while you switch to anything else; the menu bar lists every pinned window and can unpin them all at once.

Window browsing. Rest the pointer on an app’s icon in the Dock and every window that app has open is listed, each with a picture and a title. The panel is for looking: a window changes only when you press a button on its card; Space gives a large preview without bringing the window forward; placement shows where the window will go and moves it only when you agree, and you can undo afterwards. You can also open it from Choose window… in the menu bar, or with a hot key you set — the Dock entry is off by default. The panel is temporary: it does not replace the Dock or take over Command-Tab. Details are in the window browsing notes.

An extra: close the lid, and the desktop stays put.

As the MacBook lid closes, the desktop seems to stay where it was, darker and blurrier toward the top

On an Apple Silicon MacBook with a hinge sensor, the screen closes but the desktop seems to stay where it was, like a page behind glass, growing darker and blurrier toward the top. Open the lid and it’s back. Three styles: gentle, standard and frosted. It’s only an extra: rolling up and pinning work without it.

This double-click is older than your Mac

In the ’90s, most Mac users knew this trick. Then the system changed course, sent windows to the Dock, and the trick was slowly forgotten. We wrote its story as a long read you can operate — Window stories: seven chapters, four hands-on experiments, 14 primary sources. It ends at a working System 7.5, Mac OS 8 or Mac OS X 10.1, run by Infinite Mac, where you can find the setting through the original menus yourself.

Today’s WindowShade is an independent Swift / AppKit app: the old name and the old idea, with code written from scratch. It is not an Apple product, and it uses no code from Rob Johnston, Apple, or Unsanity’s WindowShade X.

Shortcuts

Record your own in Settings → Shortcuts, or bring Rectangle’s key set over in one click. 1.0.16 (in preparation) presets none of these for new setups; setups upgraded from 1.0.15 or earlier keep the combinations below. Every shortcut can be changed or turned off, and if another app already uses a combination, WindowShade tells you once.

Shortcut (upgraded setups) What it does
⌃⌘C Roll up or unroll the current window
⌃⌘P Pin or unpin the current window
⌃⌘G Carry the current window to every desktop; press again to put it down
⌃⌘1…9 Unroll a rolled-up window, in menu order
⌃⌘0 Line up the bars, or switch to a focus layout
⌃⌘← ⌃⌘→ ⌃⌘↑ ⌃⌘↓ Place the current window: to the sides, one size down, one size up

Double-click a title bar to roll up; double-click the bar to unroll.

Your windows stay on your Mac

WindowShade asks for two permissions. Accessibility: finding, moving and restoring windows. Screen Recording: taking the window pictures used for previews. “Screen Recording” is just the name the system gives that permission — everything is processed on your Mac and nothing is uploaded. If the app ever quits unexpectedly, your windows go back to how they were.

Regular windows all roll up. Stickies rolls up in its own system way; apps like Adobe’s that draw their own title bars are handled separately. Full screen, Split View, Stage Manager and multiple displays still have a few gaps — try it once with the apps you use. If something goes wrong, please report it with your macOS version, the app, and the steps.

In development (not in the current download)

The current download is 1.0.15. These additions live in the repository and in preview builds; website scenes are interactive illustrations, not evidence that any build has passed device testing.

  • 1.0.16 preview — tucked windows, Now Playing, a file shelf and accessory battery notices brought together at the notch, plus a three-step welcome, scroll-strip overview and a “What WindowShade reads” privacy page. On a new installation, the notch, live activities, file shelf, accessory notices, volume/brightness display and Dock click-to-hide are off until enabled in Settings. Candidate notes · defaults · acceptance report
  • Live activities — the notch and the Launchpad Today page share up to three: music, AirPods, shares and routes started here, and Voice Memos microphone use. Details
  • Touch ID in the notch — expands the notch around the system fingerprint prompt to confirm a WindowShade request; it does not unlock macOS. Details
  • Launchpad and new gestures — the Home grid with the App Library (⌃⌘L), Magic Tiling, the scroll strip, Picture in Picture, Slide Over with a split handle, ⌥-Tab by window, Rectangle key import, Dock click-to-hide, and more. Launchpad · title-bar gestures
  • Experimental or device-limited — face scanning, presence locking, remote control and CarPlay have experimental and device limits; none of this claims macOS face unlock or complete CarPlay reception.

Build and contribute

Requires macOS 14+, Xcode command line tools with the Metal compiler, and an Apple Development signing certificate.

git clone https://github.com/surfine/WindowShade.git
cd WindowShade/prototype
./build.sh --check   # Swift type checking and Metal compilation
./build.sh           # build and sign with your configured identity
open WindowShade.app

Set WINDOWSHADE_CODESIGN_IDENTITY or use an untracked prototype/local-codesign.env. See DEVELOPMENT.md for signing, isolated builds, and release instructions; interface and website copy follows the copy guide.

In the repository Purpose
prototype/ Native app: window policies, capture, overlays, effects, and recovery
tests/ State, recovery, frame, Metal, and paper-component checks
site/ Bilingual website and window stories, hosted on Cloudflare Pages
docs/performance.md Measurements and approaches that did or did not work
docs/releases/ Preserved release notes
WindowShade.md Original design rationale and research notes

For changes to window behavior, include the affected window type, what happened before and after, and the checks you ran.

Credits and license

MIT for this project's code. Historical names and software belong to their respective authors. The window stories credit Infinite Mac, Marcin Wichary's Frame of preference, and AI System 6 for its era-rendering reference. Bundled font and reference-asset licenses are retained in site/public/fonts/.

About

Make room. Keep your place. Native macOS window shading, live pinned previews, and lid-driven desktop effects.

Topics

Resources

Stars

22 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages