The HopperDock bunny: a pink and white rabbit with round glasses, a halo and a mint bow tie

HopperDock

A little floating toolbar for Windows that tiles your windows, remembers exactly where they go, and launches the scripts you actually use. Built for VR streamers and artists working on a small screen.

WINDOWS 10 / 11 FREE & MIT LICENSED NO INSTALLER NEEDED
Why it exists

I built this to stream VR

Streaming from a headset means juggling a pile of windows you can't see while you're in there: the headset mirror, OBS, chat, Voicemeeter, the game itself. Every session started with the same five minutes of dragging things into place — and Windows' own taskbar was no help, because you can't pin a script to it, can't group anything, and can't fit what you need.

So the dock does the two jobs the taskbar won't: put my windows back where they belong, and give me one click for the things I run constantly.

VR streaming

Open the headset mirror without digging

Oculus Mirror is what puts your headset view on stream, and it's buried in Program Files\Oculus\Support\oculus-diagnostics\. Same for the Debug Tool when you're fixing bitrate or encode lag mid-session. HopperDock finds both when you install it and puts them one click away.

VR streaming

Kill the game that didn't actually quit

Some Meta store titles — Population One is the repeat offender — leave their process running after you quit inside the headset. It keeps holding the headset, your mic and the GPU. A two-line taskkill script on the dock fixes it instantly, and that script ships as an example.

VR streaming

Rebuild the whole layout in one click

Tiling keeps OBS, chat, the mirror and your audio mixer where you expect them — which matters when you're headset-blind and reaching for a window you can't see. Save it once as a layout, restore it at the start of every stream.

Drawing

Work on a laptop or from the couch

Drawing on a Wacom away from the desk means one small screen and no room to waste. Tiling gets the reference, the canvas and the brush palette arranged properly instead of stacked, and the dock pins to the edge so a maximized canvas stops beside it rather than under it.

🧰

Honestly, the launcher outgrew the window management. The Windows taskbar can't hold a .bat file, can't group things, and runs out of room fast. Colour-coded categories that slide out of the dock turned out to be the part I use most — it's the taskbar I wanted.

What it does

Everything it puts on one strip

None of this is VR-specific — it's just as useful for editing, coding or anything else with a routine.

Send everything to one screen

One click gathers every open window onto the monitor you point at. Good for when you unplug a screen and Windows scatters things.

Tile into a grid

Two columns, three columns, 2×2 or 3×2 — on whichever monitor you choose.

Save whole layouts

Snapshot every window's position, size, maximized and minimized state. Restore the whole arrangement later in one click.

Launch your stuff

Group shortcuts into colour-coded categories that slide out of the dock. Scripts, apps, folders, even Windows settings pages.

Pin apps as icons

Click to show or hide an app; if it isn't running, it launches. Like a taskbar you built yourself.

Dock it to the edge

Pin it and Windows reserves the space, so maximized windows stop beside the dock instead of hiding behind it.

Finds your VR tools

If the Oculus runtime is installed, Oculus Mirror and the Debug Tool are added to your VR category automatically on first run.

The tour

Every button, top to bottom

This is the dock as it appears on your screen. Hover any button — or any row — to match them up.

🐰 Bunny
Drag to move the dock anywhere. Right-click opens the settings menu — that's where everything lives.
M1 M2 …
Move every open window to that monitor. One button per screen you have connected.
1 2 3 4
Your four saved layouts. Click to restore one, right-click to save, rename or give it an icon. Filled-in means something's saved there.
T
Tile your windows into columns or a grid, on any monitor.
Categories
Your shortcut groups. Click one and a panel slides out with everything inside it. Right-click to rename, recolour, or give it a picture instead of text.
Pinned apps
Individual apps as icons. Click to show or hide the app — it launches if it isn't already open.
Getting it

Two ways in

Pick the first one if you just want to use it. Pick the second if you want to poke at the code.

⬇ Just give me the app

No Python, no setup, nothing to install.

  1. Download HopperDock.exe from the releases page.
  2. Put it anywhere you like — Desktop is fine.
  3. Double-click it. Windows will show a blue warning screen — that's expected. Here's how to get past it.
  4. The bunny appears.
  5. Right-click the bunny → Start on Login so it's always there.

⚙ I want the code

Needs Python 3.10 or newer.

  1. Clone the repo.
  2. Install the three dependencies.
  3. Run run_dock.bat.
git clone https://github.com/scarylasers/HopperDock
cd HopperDock
pip install -r requirements.txt
run_dock.bat
🔎

Something wrong? Run run_dock_visible.bat instead — same program, but it keeps a console open so you can read the error.

Before you panic

“Windows protected your PC”

The first time you run HopperDock.exe, Windows will stop you with a blue box. Nothing is wrong. Here's what it looks like and how to get past it.

  1. Click the small More info link — it's easy to miss, above the button.
  2. The box expands and a Run anyway button appears at the bottom.
  3. Click Run anyway. You'll only ever do this once.

Why it happens

SmartScreen warns about any program it hasn't seen many people run before. Publishers avoid it by buying a code-signing certificate — a few hundred dollars a year, renewed forever. HopperDock is free and made by one person, so it doesn't have one. That's the whole story: the warning is about a missing receipt, not about anything found in the app.

Don't take my word for it

Fair enough — you're downloading an .exe from the internet. Any of these are reasonable:

If you want to…Do this
Check the file is the real one Compare its SHA-256 against the one below. Run Get-FileHash HopperDock.exe in PowerShell.
Have it scanned by ~70 antivirus engines Upload it to VirusTotal — free, no account.
Skip the .exe entirely Run it from source instead. It's one readable Python file you can look through first — see the other install option above.
Read what it actually does All the code is right here. It's MIT licensed.

SHA-256 — HopperDock.exe v1.5.3

00EA314CDBB5FB8914F279862A10B29A8D0CBEE17BD1DE5977048F68C5C05EED
🧹

Don't want it any more? Delete the .exe, then delete %USERPROFILE%\WindowDock\. If you turned on Start on Login, turn it off from the bunny menu first — that's the one thing it writes outside its own folder.

First five minutes

Making it yours

Save your first layout

Arrange your windows how you like them. Right-click layout slot 1Save Layout Here. That's it — clicking 1 later puts everything back, including anything that was minimized. Right-click again to Rename it to something like “Streaming”, or give it an icon.

💡

Layouts find your windows by their title. So an app has to be open for its window to be moved back — and apps that rename their own title bar (a music player showing the current track) can drift. Re-save the slot if that happens.

Drag things onto the dock

The fastest way to fill it up. What you drop decides what you get:

Drop thisYou get
A file or shortcut A pinned app icon at the bottom of the dock — an .exe, a .lnk from your Start Menu, a script, anything. It arrives wearing the app's own icon, pulled straight out of the program (Microsoft Store apps included).
A folder A whole new category, with every file inside it added as a shortcut. The quickest way to build a group in one go.

Add a shortcut by hand

To put something in a specific category:

  1. Click a category button to open its panel.
  2. Click the ✏ pencil in the panel header to start editing.
  3. Click + Add Shortcut and pick your file.
  4. Click the when you're done.

Shortcuts can point at almost anything:

You point it atWhat happens
.exe / .lnkLaunches the program.
.bat / .cmdRuns the script.
.pyRuns it with pythonw, no console window.
.ps1Runs it through PowerShell.
A folderOpens it in Explorer.
A link like steam://run/250820Hands it to Windows — which is how the built-in SteamVR and sound-settings shortcuts work.
🎵

Microsoft Store apps (Spotify, WhatsApp…) have no normal Program Files path. Point at C:\Users\<you>\AppData\Local\Microsoft\WindowsApps\Spotify.exe instead.

🥽

Already set up for VR. If you have the Oculus runtime installed, your VR category arrives with Oculus Mirror and the Debug Tool already in it, plus a Kill Stuck Game script for titles that don't close properly. If you don't have the runtime, those are quietly skipped rather than left as dead shortcuts.

Pin it to the edge

Right-click the bunny → 📌 Pin to Edge. Windows now reserves that strip of screen, exactly like it does for the taskbar, so maximized windows stop at the dock instead of vanishing behind it. Vertical docks pin right; horizontal docks pin to the top.

If something's off

Troubleshooting

Windows says it “protected your PC” and won't run it

Expected, and harmless — click More info then Run anyway. There's a full explanation with a checksum further up the page if you'd like to verify the download first.

My antivirus flagged it

Occasionally an engine flags PyInstaller-built apps generically, because malware authors also use PyInstaller — it's the packaging method being recognised, not the program. Verify with the SHA-256, scan it on VirusTotal, or just run it from source instead.

The dock starts, then disappears

Run run_dock_visible.bat to see the error, and check the log at %USERPROFILE%\WindowDock\logs\window_dock.log.

A layout didn't bring some windows back

Windows are matched by title, so the app has to be open and showing roughly the same title. If a program was closed, it can't be restored — reopen it and re-save the layout.

Maximized windows still hide behind the dock

The dock is floating rather than pinned. Right-click the bunny → 📌 Pin to Edge.

A pinned app relaunches instead of showing/hiding

Its Window Title doesn't match the real window. Right-click the icon → Edit and either correct it or clear the field. Clearing it is the right move for apps that rewrite their own title bar, like media players.

Some windows won't move at all

They're probably running as administrator. Windows won't let a normal program move an elevated one — run HopperDock as administrator too, and it can.

Dragging files onto the dock does nothing

The optional drag-and-drop package isn't installed. Run pip install tkinterdnd2 and restart. Everything else works without it.