MacOS Minimize Animation
Brings the classic macOS genie effect to Windows. When you minimize a window
it warps and flows down into the taskbar; when you restore it, it flows back out.
Definitely not inspired from MacOS.
Maintenance note: the current round of fixes - the translucent-window (grey
capture) fix, the taskbar capture fixes, the renderer quality / frame pacing
improvements and the tile-count setting - was contributed entirely by
Potassiumuncher (v1.5 of his engine). I'm not actively working on issues at
the moment and will be unavailable for a month or more; in the meantime his
contributions are keeping this mod moving - thank you!
Animation style
There are two genie styles, selectable in the settings (Animation style):
- Modern (default) - the Direct2D genie engine contributed by Potassiumuncher:
a smooth mesh warp that necks the window down into the taskbar:

- Classic - this mod's original strip-based genie: lighter, with a slightly
different look. Kept because some people preferred it:

Credits
The Modern genie style - the Direct2D genie rendering engine (a configurable
mesh warp driven by the macOS "lamp" curve), the UI Automation taskbar-button
targeting, and the taskbar auto-hide handling - was contributed by
Potassiumuncher - https://github.com/Potassiumuncher. As of v3.0.0 the
default animation is his engine, integrated into this mod's hardening (multi-hook
capture, flash-free cloak restore, safe unload, first-frame sync). The fixes in
v3.1.1 are his as well (from v1.5 of his engine): the translucent-window capture
fix that stops acrylic / Mica windows going grey, the window-only capture that
keeps the taskbar out of the animation, the smoother mask / mesh rendering, the
frame pacing (since reshaped into a high-resolution 2x-refresh timer in v3.1.2),
and the tile-count setting. The modern-genie demo GIF above is also his, from his
own MacOS-Animation-for-windows
repo. Huge thanks for building this, sharing the recording, and generously handing
it all over - this mod wouldn't look nearly this good without him. The Classic
style is the mod's original renderer.
The Firefox-family first-window check in the app-launch animation (v3.1.7) is
ported from ReDrag's Windows Animations
mod, which found that hiding a Gecko browser's first window with a DWM cloak can
make it open a second window. Thanks!
Known issues
- On multi-monitor setups (especially the secondary display), the genie can
briefly slide sideways / to the left for a frame or two at the very start of a
minimize or restore before it flows toward the taskbar. The animation still
completes correctly; this is a known issue being worked on. If you spot anything
else, please report it on the mod's GitHub issue thread.
- If an app reopens (or restores a saved session) at coordinates left over from a
monitor that's no longer connected (e.g. an HDMI display you've since unplugged),
the window can appear off-screen or the genie can play oddly / land on the wrong
spot. This is a Windows/app placement quirk outside the mod's control, not
something the mod can reliably detect and fix.
- Translucent (acrylic / Mica) windows are captured much more faithfully as of
v3.1.1 - transparent regions now stay transparent instead of turning grey - but
some apps may still show a flat or slightly-off backdrop during the genie,
because the live blur effect itself can't be carried into a static snapshot.
- On NON-primary monitors specifically, Windows often refuses to hand over the
Mica / acrylic backdrop at all (the capture comes back fully transparent
there). The mod detects this and falls back to an opaque dark backdrop for the
animation instead of letting the window background vanish - so translucent
windows on a secondary display animate with the older dark look. A proper fix
needs deeper investigation.
- A repeating / looping animation has been reported on Zen Browser
(Firefox-based). It's under investigation; if it hits you, add the browser to
the mod's Excluded programs setting as a workaround and please share
details on the GitHub issue thread.
See it in action
- Compile the mod with the button on the left or with Ctrl+B.
- Enable the mod and open any normal window (Explorer, a browser, Notepad...).
- Minimize it with the title bar
[-] button or Win+Down and watch it warp
and pour into the taskbar.
- Restore it from the taskbar and watch the genie play in reverse.
- Tweak the Animation duration in the settings to taste, and switch the
Animation style between the modern (Potassiumuncher) and classic genie.
Features
- Real genie warp. The window is rendered as a Direct2D mesh whose vertices
follow the macOS lamp curve, so the whole frame necks down and funnels into the
taskbar icon instead of just shrinking.
- Actually smooth. Progress is driven by real elapsed time, and frames are
paced at twice the display's refresh rate (via a high-resolution timer), so the
compositor always has a fresh frame ready at each vsync. No system animation
competes with it, so it stays smooth at any duration you set. In v3.1.3 the
modern genie's render canvas shrank from the full virtual desktop to a tight
bounding box around the window and dock target, which removed a large per-frame
UpdateLayeredWindow cost that made the modern style stutter on AMD GPUs
(reported on a 6900 XT and a Vega 8 iGPU; the classic style was already using
the tight canvas).
- Smoothstep easing instead of a linear ramp, so it eases in and out.
- Accurate targeting. The mod locates the app's actual taskbar button via UI
Automation and aims the genie at it (with a per-process fallback cache), instead
of guessing from the cursor.
- Pixel-aligned capture. The window is measured by its DWM extended frame
bounds (not the legacy window rect), so keyboard / AutoHotkey minimizes are no
longer spatially shifted.
How it works
The mod hooks ShowWindow, ShowWindowAsync, SetWindowPlacement, CloseWindow,
SetWindowPos and DefWindowProcW to catch minimize / restore / first-show
requests - including apps with custom title bars (e.g. Zed) and Store/UWP apps,
whose minimize buttons bypass the classic paths. It snapshots the window, then on
a dedicated high-priority thread it draws a transparent layered "ghost" window that
warps the snapshot frame by frame into the taskbar, leaving the real window to
minimize behind it without the system's own animation getting in the way.
Settings
- Animation duration - how long the effect lasts (50-2000 ms).
- Animate window restore (open) - also play the reverse genie when restoring.
- Animate app launch (experimental) - also play the genie when an application
window first opens. Experimental and off by default: it may briefly flash the
window before animating, may not catch borderless apps, and can occasionally fire
on splash / dialog windows. Leave it off and the mod behaves exactly like plain
minimize / restore.
- Multi-monitor support (experimental) - play the genie on the monitor the
window is on, targeting that monitor's taskbar edge, instead of always the
primary monitor's. Experimental and off by default.
- Unhide taskbar (for taskbar auto-hide) - if your taskbar is set to
auto-hide, briefly reveal it during the minimize so the genie has a visible dock
to flow into, then let it slide back once the animation finishes.
- Taskbar unhide duration - how long (ms) to keep the taskbar revealed before
performing the deferred minimize on the auto-hide path.
- Animation style - Modern (Potassiumuncher's Direct2D engine, default) or
Classic (this mod's original renderer).
- Animation tile count - mesh resolution of the modern genie (8-96, default
35). Higher is smoother but costs more per frame. Contributed by Potassiumuncher.
- Excluded programs - windows owned by these processes never animate. Use
this rather than Windhawk's per-mod process exclusion: that list only stops the
mod from loading INTO a process, but a window's animation is often driven from
a different process (Explorer's taskbar, the shell), so the app would still
animate. Example: for Windows Terminal's Quake mode, exclude
WindowsTerminal.exe (the window's owner) - excluding powershell.exe has no
effect, since the terminal window doesn't belong to PowerShell.
Notes
- Works on all top-level windows; child / tiny / hidden windows are skipped.
- DWM transitions are temporarily disabled on the animated window and restored
afterwards, so the system's own minimize/restore animation doesn't fight ours.
- Minimize snapshots are captured from the window itself, so the taskbar and other
windows never bleed into the animation (even for maximized / fullscreen apps).
Since v3.1.1 the capture preserves per-pixel transparency (Potassiumuncher's
fix), so translucent windows keep their see-through regions during the genie
instead of flattening to grey.
Getting started
Check out the documentation
here.