{"record":{"id":"ae92faa14a6b4602","repo":"gitbutlerapp/gitbutler","slug":"for-wsl2-projects-install-the-linux-version-of-gi","errorCode":null,"errorMessage":"For WSL2 projects, install the Linux version of GitButler inside of your WSL2 distro.","messagePattern":"For WSL2 projects, install the Linux version of GitButler inside of your WSL2 distro\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"info","filePath":"apps/desktop/src/lib/project/projectsService.ts","lineNumber":175,"sourceCode":"\t\t}\n\t}\n\n\tasync getValidPath(): Promise<string | undefined> {\n\t\tconst path = await this.promptForDirectory();\n\t\tif (!path) return undefined;\n\t\tif (!this.validateProjectPath(path)) return undefined;\n\t\treturn path;\n\t}\n\n\tvalidateProjectPath(path: string) {\n\t\t// These two paths represent unsupported-configuration guidance, not\n\t\t// runtime errors. Surface them as info toasts so they don't pollute\n\t\t// error telemetry — they previously accounted for 53 + many events\n\t\t// of noisy toast:show_error captures.\n\t\tif (/^\\\\\\\\wsl.localhost/i.test(path)) {\n\t\t\tconst message =\n\t\t\t\t\"For WSL2 projects, install the Linux version of GitButler inside of your WSL2 distro.\";\n\t\t\tconsole.warn(message);\n\t\t\tshowToast({\n\t\t\t\tstyle: \"info\",\n\t\t\t\ttitle: \"Use the Linux version of GitButler\",\n\t\t\t\tmessage,\n\t\t\t});\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif (/^\\\\\\\\/i.test(path)) {\n\t\t\tconst message =\n\t\t\t\t\"Using git across a network is not recommended. Either clone \" +\n\t\t\t\t\"the repo locally, or use the NET USE command to map a \" +\n\t\t\t\t\"network drive.\";\n\t\t\tconsole.warn(message);\n\t\t\tshowToast({\n\t\t\t\tstyle: \"info\",\n\t\t\t\ttitle: \"UNC paths are not directly supported\",","sourceCodeStart":157,"sourceCodeEnd":193,"githubUrl":"https://github.com/gitbutlerapp/gitbutler/blob/caf1f223d3cfb94488c9198ad34487c6006c648f/apps/desktop/src/lib/project/projectsService.ts#L157-L193","documentation":"validateProjectPath rejects Windows paths under \\\\wsl.localhost (access to the WSL2 VM filesystem over the 9P bridge). Git and file-watching through that bridge are slow and inotify events do not propagate, so the Windows build declines the project: console.warn plus an info toast advising the Linux build inside the distro, and the function returns false so the project is not added.","triggerScenarios":"Adding or validating a project whose path matches /^\\\\\\\\wsl.localhost/i in the Windows desktop app (apps/desktop/src/lib/project/projectsService.ts:175), for example \\\\wsl.localhost\\\\Ubuntu\\\\home\\\\user\\\\repo.","commonSituations":"Developers keeping repos inside WSL2 while opening the Windows app; VS Code WSL workflows pasting \\\\wsl.localhost paths into dialogs.","solutions":["Install the GitButler Linux build inside the WSL2 distro and open the project there","Or move the repository to the Windows filesystem (for example C:\\\\dev\\\\repo) and add it in the Windows app","Do not attempt to bypass the check — watcher correctness is the reason it exists"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"function isWslUncPath(path: string): boolean {\n\treturn /^\\\\\\\\wsl.localhost/i.test(path);\n}\n// run before opening a folder picker or adding a project","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Filter WSL roots out of folder pickers before the user selects them","Document the Linux-in-distro requirement during onboarding","Keep the check case-insensitive; \\\\wsl$ variants fall through to the generic UNC check"],"tags":["typescript","windows","wsl2","path-validation","toast"],"backgroundTag":"wsl-path-unsupported","analyzedSha":"caf1f223d3cfb94488c9198ad34487c6006c648f","analyzedAt":"2026-08-20T07:55:40.983Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}