diff options
| author | Filip <[email protected]> | 2026-02-26 09:39:55 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-26 16:39:55 +0800 |
| commit | 6b021658ad514255c7398983b088c1636caaa5e4 (patch) | |
| tree | 17a453e1f8bac7893021be22a77bcf3210bfc271 /packages/desktop/src | |
| parent | 799b2623cbb1c0f19e045d87c2c8593e83678bc0 (diff) | |
| download | opencode-6b021658ad514255c7398983b088c1636caaa5e4.tar.gz opencode-6b021658ad514255c7398983b088c1636caaa5e4.zip | |
fix(app): open in powershell (#15112)
Diffstat (limited to 'packages/desktop/src')
| -rw-r--r-- | packages/desktop/src/bindings.ts | 1 | ||||
| -rw-r--r-- | packages/desktop/src/index.tsx | 11 |
2 files changed, 11 insertions, 1 deletions
diff --git a/packages/desktop/src/bindings.ts b/packages/desktop/src/bindings.ts index 6d05bfc56..8e1b4127a 100644 --- a/packages/desktop/src/bindings.ts +++ b/packages/desktop/src/bindings.ts @@ -18,6 +18,7 @@ export const commands = { checkAppExists: (appName: string) => __TAURI_INVOKE<boolean>("check_app_exists", { appName }), wslPath: (path: string, mode: "windows" | "linux" | null) => __TAURI_INVOKE<string>("wsl_path", { path, mode }), resolveAppPath: (appName: string) => __TAURI_INVOKE<string | null>("resolve_app_path", { appName }), + openInPowershell: (path: string) => __TAURI_INVOKE<null>("open_in_powershell", { path }), }; /** Events */ diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx index 983fe3945..188a37eb8 100644 --- a/packages/desktop/src/index.tsx +++ b/packages/desktop/src/index.tsx @@ -118,7 +118,6 @@ const createPlatform = (): Platform => { async openPath(path: string, app?: string) { const os = ostype() if (os === "windows") { - const resolvedApp = (app && (await commands.resolveAppPath(app))) || app const resolvedPath = await (async () => { if (window.__OPENCODE__?.wsl) { const converted = await commands.wslPath(path, "windows").catch(() => null) @@ -127,6 +126,16 @@ const createPlatform = (): Platform => { return path })() + const resolvedApp = (app && (await commands.resolveAppPath(app))) || app + const isPowershell = (value?: string) => { + if (!value) return false + const name = value.toLowerCase().replaceAll("/", "\\").split("\\").pop() + return name === "powershell" || name === "powershell.exe" + } + if (isPowershell(resolvedApp)) { + await commands.openInPowershell(resolvedPath) + return + } return openerOpenPath(resolvedPath, resolvedApp) } return openerOpenPath(path, app) |
