A fork of CVHub520/X-AnyLabeling that restores WSL2 directory visibility in native Windows folder picker dialogs.
Training on WSL2 is standard practice for Windows-based ML engineers — CUDA GPU-PV, ext4 filesystems, and training frameworks all work natively.
The GUI side, however, has a known tradeoff. WSLG (WSL GUI) delivers noticeably blurry rendering on high-DPI displays due to its RDP-based pipeline. The upstream maintainer has explicitly recommended running X-AnyLabeling natively on Windows rather than inside WSLG (#811).
When running X-AnyLabeling on Windows natively, the standard folder picker dialog hides \\wsl.localhost and all its child directories. This is not a bug in X-AnyLabeling or Qt — it is a known Windows Shell API behavior: QFileDialog.getExistingDirectory sets the FOS_FORCEFILESYSTEM flag, which suppresses non-filesystem namespace entries. Microsoft has acknowledged this limitation (microsoft/WSL#9079, open since 2021).
The FOS_FORCEFILESYSTEM flag is removed from the dialog options. The WSL Linux node then appears in the sidebar naturally — the same dialog, the same behavior, no extra dependencies.
The same approach is used by JetBrains across IntelliJ, PyCharm, and all other IDEs (JBR PR #497).
All folder picker dialogs across the application now use the modern Windows native dialog. Previously, 8 dialogs used the native picker (but without WSL support), while 13 used Qt's custom dialog — creating an inconsistent look and feel. Now all 21 dialogs are unified under a single native implementation:
| Dialog | Location | Previously |
|---|---|---|
| Open Folder / Change Output Dir / Compare View | Main labeling interface | Native |
| CSV Export / AI Chat Export / Classifier Export / Video Cls Output | Various dialogs | Native |
| Training Dataset (Classify tasks) | Training dialog | Native |
| YOLO Import (all formats) | Upload dialog | Qt custom |
| Export (all formats) | Export dialog | Qt custom |
| Crop Save Directory | Crop dialog | Qt custom |
The result: a consistent, modern, native dialog across the entire application — no visual fragmentation between Qt custom dialogs and Windows system dialogs.
No behavioral change, but you will see the modern Windows folder dialog everywhere instead of a mix of Qt custom and native dialogs. Linux and macOS run the standard QFileDialog.getExistingDirectory — identical to upstream. Windows without WSL also sees no behavioral difference.
git clone https://github.com/laimingguang/X-AnyLabeling-WSL.git
cd X-AnyLabeling
uv tool install --editable .
python anylabeling/app.pyEverything except the folder picker fix is identical to the original repository. To sync:
git remote add upstream https://github.com/CVHub520/X-AnyLabeling.git
git fetch upstream
git rebase upstream/mainThe application defaults to JetBrains Mono 12pt for clean, readable UI text.
