WSL Linker
Open-source Windows GUI + CLI that links Windows Host directories straight to the WSL 2 Linux filesystem via native directory symlinks. Born the week Google's Antigravity IDE 2.0 broke the WSL Remote workflow — built to restore zero-latency, native-Linux-speed cross-platform development on a Windows desktop.
The problem
When Google's Antigravity IDE jumped to 2.0, the entire editor surface was restructured and the standard WSL Remote Plugin workflow disappeared overnight. Developers who lived inside WSL 2 (for native Linux Git, Docker, npm performance) were suddenly stranded.
Moving the code back onto the Windows host wasn't an option — cross-OS disk access (`/mnt/c/` from inside WSL) degrades Git, Docker, and npm by up to 10×. The files had to stay on the ext4 partition; only the editor's view of them needed to change.
What I built
- Native Windows directory symlinks from any host folder straight to `\\wsl.localhost\Ubuntu-24.04\home\user\project` — zero duplication, zero latency.
- Fluent Dark Mode GUI in CustomTkinter — sleek parent-directory onboarding, live path preview that turns emerald green when ready, auto-wrapping card mappings.
- CLI proxy runner. `wsl-linker run npm install` executes the command inside the corresponding WSL directory from a Windows shell — context-drop with one verb.
- Single-file .exe via PyInstaller. Compiled inside an isolated Wine + Docker container so the host stays clean. `make build-docker` and ship.
- Safe unlinker. Uses `os.rmdir` to untether the junction without ever recursing into the WSL target — the most important line of code in the project.
What I learned
A breaking IDE update is also a product opportunity. The fix didn't need to be inside the editor — a 200-line desktop utility with the right scope unblocked the entire workflow.
Open source as scratch-your-own-itch: the tool I needed for myself ships under MIT so anyone burned by the same IDE migration can clone, fork, or redistribute the .exe.
Technical Highlights
- Native Windows directory symlinks (mklink /D) targeting WSL 2 UNC paths.
- CustomTkinter-based Fluent Dark theme with live `<Configure>` event reflow.
- PyInstaller single-file build inside a Wine Docker container — reproducible, host-clean.
- CLI proxy that routes shell commands across the Windows ↔ WSL boundary.
Architecture Decisions
Symlinks instead of file copy / sync
Any sync-based bridge introduces a second source of truth and inevitable drift. A native directory junction is one filesystem entry, atomic, and the OS handles every read and write.
Ship as a single .exe, not a Python package
The people who need this most — designers, QA, junior devs — should not have to install Python, PyInstaller, or configure WSL path shares. Double-click and link.
Business Impact
- Restored developer workflows for a community stranded by an upstream IDE migration.
- Cross-functional teammates (designers, QA) can now preview and edit WSL-resident projects without learning the WSL CLI.
- Zero dependency footprint on host — MIT-licensed redistribution makes it safe to bundle into a team onboarding kit.

