Skip to content
fauzul.
Active build · OSS · Solo · 2026

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.

Open sourceCreator · Solo build2026 — presentDhaka · OSS, MIT licensed
MIT
Fully open source
10×
Build speed vs /mnt/c
1
Single-file .exe
Role
Creator · Solo build
Period
2026 — present
Location
Dhaka · OSS, MIT licensed
Stack
PythonCustomTkinterPyInstallerWine + DockerPowerShellWSL 2Windows
§ Context

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.

§ Outcomes

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.
§ Reflection

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.

§ Engineering

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.
§ Logic

Architecture Decisions

Decision

Symlinks instead of file copy / sync

Rationale

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.

Decision

Ship as a single .exe, not a Python package

Rationale

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.

§ Impact

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.
§ Gallery

Visual Showcase

WSL Linker — Workspace Manager. Active registry mappings on the left, Link New Workspace flow on the right, live activity console at the bottom.
WSL Linker — Workspace Manager. Active registry mappings on the left, Link New Workspace flow on the right, live activity console at the bottom.
Downstream payoff — a WSL-Linker symlink showing up as a Claude Desktop "Linked Directory" at `\\wsl.localhost\ubuntu-24.04\home\fauzul\code\OSS\wsl-linker`. Native host tools see the WSL repo as a local folder.
Downstream payoff — a WSL-Linker symlink showing up as a Claude Desktop "Linked Directory" at `\\wsl.localhost\ubuntu-24.04\home\fauzul\code\OSS\wsl-linker`. Native host tools see the WSL repo as a local folder.
Open to: senior FDE · Director of Eng · fractional CTO · EU/UK/Canada