[Media] LeopardWM: a scroll-first tiling window manager for Windows
![[Media] LeopardWM: a scroll-first tiling window manager for Windows](https://i.redd.it/xy4gh3qh0v7h1.gif)
I've been building a tiling WM for Windows that works differently from the usual ones. Instead of BSP/tree tiling (GlazeWM, komorebi), windows live on an infinite horizontal strip and you scroll through them. If you've used niri or PaperWM on Linux, same idea columns you scroll, not a grid you subdivide. As far as I can tell nobody's done the scroll model properly on Windows.
Why I bothered: I wanted niri's workflow on Windows and the existing options are all tree-based. I also didn't want it fighting the OS. It runs its own workspace model instead of leaning on Windows' virtual-desktop COM APIs, which are flaky and can break on each other release of Windows.
Some Rust/Win32 bits that were fun or painful:
- Animations are driven off DwmFlush on a dedicated worker so scrolling/retiling stays smooth and doesn't block the event loop.
- It's a workspace of crates: a platform-agnostic layout engine, a Win32 layer, a named-pipe IPC protocol, the daemon, and a CLI. The layout engine has no windows crate dependency, so it's actually unit-testable.
- Win32 has plenty of "documented but lies to you" moments e.g. SetWindowRgn is silently ignored by apps that manage their own regions (Chromium/Firefox), and DWMWA_CLOAK returns access-denied on windows you don't own. Hiding off-screen windows ended up being the only reliable approach.
It's open source. There are more demo videos in the README so you can see it in action before trying.
Happy to answer anything about the layout engine or the Win32 side. Feedback and bug reports welcome. It's early but stable enough that I run it daily.