From 7398d776bebd98fa11ac22a24fc7cbdf11435bd2 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sun, 16 May 2021 19:40:54 +0200 Subject: [PATCH] set Terminus as COMSPEC inside shells - fixes #3643 --- app/common.ts | 1 + app/lib/cli.ts | 2 +- app/lib/window.ts | 1 + app/src/entry.ts | 2 ++ scripts/vars.js | 2 +- terminus-core/src/api/index.ts | 1 + terminus-core/src/api/main-process.ts | 4 ++++ terminus-core/src/api/mainProcess.ts | 4 ++++ terminus-core/src/index.ts | 11 +++++------ terminus-local/src/session.ts | 5 +++++ 10 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 terminus-core/src/api/main-process.ts create mode 100644 terminus-core/src/api/mainProcess.ts diff --git a/app/common.ts b/app/common.ts index 1e7dc4ec..01c86f13 100644 --- a/app/common.ts +++ b/app/common.ts @@ -1,3 +1,4 @@ export interface BootstrapData { config: Record + executable: string } diff --git a/app/lib/cli.ts b/app/lib/cli.ts index 4c73aae0..910871b4 100644 --- a/app/lib/cli.ts +++ b/app/lib/cli.ts @@ -10,7 +10,7 @@ export function parseArgs (argv: string[], cwd: string): any { .command('open [directory]', 'open a shell in a directory', { directory: { type: 'string', 'default': cwd }, }) - .command('run [command...]', 'run a command in the terminal', { + .command(['run [command...]', '/k'], 'run a command in the terminal', { command: { type: 'string' }, }) .command('profile [profileName]', 'open a tab with specified profile', { diff --git a/app/lib/window.ts b/app/lib/window.ts index a3c85287..d1962bef 100644 --- a/app/lib/window.ts +++ b/app/lib/window.ts @@ -296,6 +296,7 @@ export class Window { } this.window.webContents.send('start', { config: this.configStore, + executable: app.getPath('exe'), }) }) diff --git a/app/src/entry.ts b/app/src/entry.ts index f0ca55b8..a5bdf2e2 100644 --- a/app/src/entry.ts +++ b/app/src/entry.ts @@ -54,6 +54,8 @@ async function bootstrap (plugins: PluginInfo[], bootstrapData: BootstrapData, s ipcRenderer.once('start', async (_$event, bootstrapData: BootstrapData) => { console.log('Window bootstrap data:', bootstrapData) + ;(window as any).bootstrapData = bootstrapData + let plugins = await findPlugins() if (bootstrapData.config.pluginBlacklist) { plugins = plugins.filter(x => !bootstrapData.config.pluginBlacklist.includes(x.name)) diff --git a/scripts/vars.js b/scripts/vars.js index 25462484..4dc42b9e 100755 --- a/scripts/vars.js +++ b/scripts/vars.js @@ -17,8 +17,8 @@ if (exports.version.includes('-c')) { exports.builtinPlugins = [ 'terminus-core', 'terminus-settings', - 'terminus-local', 'terminus-terminal', + 'terminus-local', 'terminus-community-color-schemes', 'terminus-plugin-manager', 'terminus-ssh', diff --git a/terminus-core/src/api/index.ts b/terminus-core/src/api/index.ts index b1d15520..eff38c10 100644 --- a/terminus-core/src/api/index.ts +++ b/terminus-core/src/api/index.ts @@ -10,6 +10,7 @@ export { Theme } from './theme' export { TabContextMenuItemProvider } from './tabContextMenuProvider' export { SelectorOption } from './selector' export { CLIHandler, CLIEvent } from './cli' +export { BootstrapData } from './main-process' export { AppService } from '../services/app.service' export { ConfigService } from '../services/config.service' diff --git a/terminus-core/src/api/main-process.ts b/terminus-core/src/api/main-process.ts new file mode 100644 index 00000000..01c86f13 --- /dev/null +++ b/terminus-core/src/api/main-process.ts @@ -0,0 +1,4 @@ +export interface BootstrapData { + config: Record + executable: string +} diff --git a/terminus-core/src/api/mainProcess.ts b/terminus-core/src/api/mainProcess.ts new file mode 100644 index 00000000..01c86f13 --- /dev/null +++ b/terminus-core/src/api/mainProcess.ts @@ -0,0 +1,4 @@ +export interface BootstrapData { + config: Record + executable: string +} diff --git a/terminus-core/src/index.ts b/terminus-core/src/index.ts index 82692c79..a0c99f0e 100644 --- a/terminus-core/src/index.ts +++ b/terminus-core/src/index.ts @@ -24,12 +24,7 @@ import { WelcomeTabComponent } from './components/welcomeTab.component' import { AutofocusDirective } from './directives/autofocus.directive' import { FastHtmlBindDirective } from './directives/fastHtmlBind.directive' -import { HotkeyProvider } from './api/hotkeyProvider' -import { ConfigProvider } from './api/configProvider' -import { Theme } from './api/theme' -import { CLIHandler } from './api/cli' -import { TabContextMenuItemProvider } from './api/tabContextMenuProvider' -import { TabRecoveryProvider } from './api/tabRecovery' +import { Theme, CLIHandler, BootstrapData, TabContextMenuItemProvider, TabRecoveryProvider, HotkeyProvider, ConfigProvider } from './api' import { AppService } from './services/app.service' import { ConfigService } from './services/config.service' @@ -115,6 +110,10 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex } } +export function getBootstrapData (): BootstrapData { + return (window as any).bootstrapData +} + export { AppRootComponent as bootstrap } export * from './api' diff --git a/terminus-local/src/session.ts b/terminus-local/src/session.ts index 7e191105..88d93a50 100644 --- a/terminus-local/src/session.ts +++ b/terminus-local/src/session.ts @@ -1,6 +1,7 @@ import * as psNode from 'ps-node' import * as fs from 'mz/fs' import * as os from 'os' +import { getBootstrapData } from 'terminus-core' import { BaseSession } from 'terminus-terminal' import { ipcRenderer } from 'electron' import { getWorkingDirectoryFromPID } from 'native-process-working-directory' @@ -115,6 +116,10 @@ export class Session extends BaseSession { ...this.config.store.terminal.environment || {}, } + if (process.platform === 'win32') { + env.COMSPEC = getBootstrapData().executable + } + delete env[''] if (process.platform === 'darwin' && !process.env.LC_ALL) {