diff --git a/src/renderer/components/+preferences/default-shell.injectable.ts b/src/renderer/components/+preferences/default-shell.injectable.ts new file mode 100644 index 0000000000..a8d33fe627 --- /dev/null +++ b/src/renderer/components/+preferences/default-shell.injectable.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import isWindowsInjectable from "../../../common/vars/is-windows.injectable"; + +const defaultShellInjectable = getInjectable({ + id: "default-shell", + + instantiate: (di) => { + const isWindows = di.inject(isWindowsInjectable); + + return ( + process.env.SHELL || + process.env.PTYSHELL || + (isWindows ? "powershell.exe" : "System default shell") + ); + }, + + causesSideEffects: true, +}); + +export default defaultShellInjectable; diff --git a/src/renderer/components/+preferences/terminal.tsx b/src/renderer/components/+preferences/terminal.tsx index 7d09fcd536..08adb55ee3 100644 --- a/src/renderer/components/+preferences/terminal.tsx +++ b/src/renderer/components/+preferences/terminal.tsx @@ -8,7 +8,6 @@ import { observer } from "mobx-react"; import type { UserStore } from "../../../common/user-store"; import { SubTitle } from "../layout/sub-title"; import { Input, InputValidators } from "../input"; -import { isWindows } from "../../../common/vars"; import { Switch } from "../switch"; import { Select } from "../select"; import type { ThemeStore } from "../../theme.store"; @@ -16,21 +15,15 @@ import { Preferences } from "./preferences"; import { withInjectables } from "@ogre-tools/injectable-react"; import userStoreInjectable from "../../../common/user-store/user-store.injectable"; import themeStoreInjectable from "../../theme-store.injectable"; +import defaultShellInjectable from "./default-shell.injectable"; interface Dependencies { userStore: UserStore; themeStore: ThemeStore; + defaultShell: string; } -const NonInjectedTerminal = observer(({ userStore, themeStore }: Dependencies) => { - const defaultShell = process.env.SHELL - || process.env.PTYSHELL - || ( - isWindows - ? "powershell.exe" - : "System default shell" - ); - +const NonInjectedTerminal = observer(({ userStore, themeStore, defaultShell }: Dependencies) => { return (
@@ -102,6 +95,7 @@ export const Terminal = withInjectables( getProps: (di) => ({ userStore: di.inject(userStoreInjectable), themeStore: di.inject(themeStoreInjectable), + defaultShell: di.inject(defaultShellInjectable), }), }, );