surfine/WindowShade
surfine/WindowShade has 32 GitHub stars and 3 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 19:56 UTC. Last push 2026-11-13.
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Make room. Keep your place. Native macOS window shading, live pinned previews, lid-driven desktop effects.
ProductivityREADME.md
OriginalWindowShade
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.
Current release: 1.0.21 · build 20261110.01 · 2026-11-10 · Release notes
Download for Mac · Website · Intro video (Bilibili, in Chinese) · Window stories · 简体中文 · 繁體中文
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 DMG from Releases, open it, drag WindowShade.app onto Applications, then open it and follow the permission prompts. (The ZIP is the same app and is what in-app updates use.) It lives in the menu bar and stays out of your Dock.
- Needs macOS 15 or later. Apple Silicon is the main build.
- Intel Macs (experimental, from 1.0.21). Releases also has a separate ZIP whose name ends in
-intel.zip. It has not been tried on a real Intel Mac, only in a Rosetta smoke test, so expect rough edges. Face unlock, voiceprint and the lid-close desktop effect are off and hidden on Intel; pinned previews, Picture in Picture and everything else work the same. The Intel build updates from its own feed, so it is never offered the Apple Silicon ZIP, and Apple Silicon Macs are never offered the Intel one. If something goes wrong, please open an issue. - 1.0.21 download (decimal MB): 22.49 MB ZIP, or a 23.54 MB DMG for a first install. The experimental Intel ZIP is 11.24 MB.
- Notarized by Apple. macOS checks it on first launch, so there’s nothing to override.
- Updating from 1.0.16 or earlier: download this one by hand, then reopen Accessibility (and Screen Recording, if you had turned it on) in System Settings → Privacy & Security. From here on, updates install from the menu.
- With Homebrew:
brew install --cask surfine/tap/windowshade. - 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 on by default and can be switched off in Settings. The panel is temporary: it does not replace the Dock or take over Command-Tab. Details are in the window browsing notes.
Launchpad. Record a shortcut (for example ⌃⌘L) to open the Home grid: every app, with the App Library on the last page. Drag an icon to a screen edge for Slide Over, with a split handle. It opens even when the notch is off. Details are in the Launchpad notes.
More layouts and actions. Magic Tiling, the scroll strip, Picture in Picture (a window shrinks to a live picture that floats in a screen corner), ⌥-Tab to switch by window, and Dock click-to-hide (on by default, off for people who said they come from Windows or iPad; there is a switch in Settings). Settings → Shortcuts can bring Rectangle’s key set over in one click.
The notch (on by default; you can turn it off in Settings). It brings live activities, the file shelf, accessory battery notices, the volume/brightness display and “Move this app aside”, each with its own switch. For a careful action such as turning off automatic update checks, the notch opens around the system fingerprint prompt so you confirm with Touch ID; it does not unlock macOS. Details
Interface language. Settings → Advanced → Interface language: follow the system, 简体中文, 繁體中文 or English. It takes effect immediately, no restart. English covers the whole Settings window and the notch sentences; menus, Window Browser, privacy and a few more are still being translated.
An extra: close the lid, and the desktop stays put.

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.20 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: one required, one optional. Accessibility (required; called Device Control and Data Access in System Settings from macOS 27): finding, moving and restoring windows. Screen Recording (optional): turn it on to see live window pictures in Glance, in window browsing and in pinned previews; leave it off and WindowShade still works, with previews showing icons and titles instead. “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. WindowShade collects no usage data and does no analytics or reporting; checking for updates goes online. Everything it reads is listed under Privacy in Settings and on the privacy page.
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.
Removing it completely
WindowShade changes one system setting: the Dock’s minimize effect. When it needs to, it switches it to Scale and writes down the old value first; it puts the old value back when you quit, and after an unexpected quit it does so on the next launch. Quit WindowShade from its menu before deleting it and that setting is already back. Then:
- Drag
WindowShade.appto the Trash. If you turned on “Open at login”, remove it in System Settings → General → Login Items. - Delete the files it created in your account:
~/Library/Application Support/WindowShade/(recovery records, file shelf, device key)~/Library/Logs/WindowShade/(activity log)~/Library/Caches/com.windowshade.prototype/,~/Library/HTTPStorages/com.windowshade.prototype/~/Library/Preferences/com.windowshade.prototype.plist,~/Library/Preferences/com.windowshade.prototype.update-guard.plist
- If you used face unlock or the iPhone remote, search Keychain Access for
WindowShadeand delete theWindowShade.FaceScan.templatesandWindowShade.Remote.peersitems. - To clear the permissions too, remove WindowShade from Accessibility (Device Control and Data Access from macOS 27) and Screen Recording in System Settings → Privacy & Security.
In development
The current download is 1.0.21. Everything described above is in it; this version adds an experimental Intel package and aligns the notch’s transition springs and empty expanded width with the macOS 27.3 system island. The Intel package has not been tried on a real Intel Mac. Release notes
What comes next is WindowShade 2: your Mac’s windows taking direction, and answering to the devices at hand. The notch's new look and gestures ship in 1.0.19; the conductor, remote and coding sessions remain behind a preview switch — not shown in Settings and not running:
- Conductor mode and coding sessions — the state and approvals of several coding sessions in one place.
- Remote control — drive this Mac from an iPhone or similar device, including mute control.
- CarPlay reception — put the iPhone’s picture on the whole screen.
- Mouse and trackpad — finer settings such as side buttons.
A few more are still experimental or device-limited: face scanning, presence locking, remote control and CarPlay. None of this claims macOS face unlock or complete CarPlay reception.
Build and contribute
Requires macOS 15+, the full Xcode app with its Metal toolchain (the command line tools alone cannot build it), and an Apple Development signing certificate.
git clone https://github.com/surfine/WindowShade.git
cd WindowShade/prototype
./build.sh --check # optimized compile and link, plus localization, privacy and copy checks
./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. The full rules are in CONTRIBUTING.md; questions and ideas go to Discussions.
If WindowShade earns a place on your Mac, a ⭐ on GitHub helps other people find it.
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/.
Contributors: @Maimai-l — repository audit and macOS window-behavior fixes (PR #1).