mirror of
https://github.com/Eugeny/tabby.git
synced 2026-08-24 10:14:31 -05:00
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { Injectable } from '@angular/core'
|
|
import promiseIpc, { RendererProcessType } from 'electron-promise-ipc'
|
|
import { HostAppService, Platform, TranslateService } from 'tabby-core'
|
|
|
|
import { ShellProvider, Shell } from '../api'
|
|
|
|
/** @hidden */
|
|
@Injectable()
|
|
export class MacOSDefaultShellProvider extends ShellProvider {
|
|
private cachedShell?: string
|
|
|
|
constructor (
|
|
private hostApp: HostAppService,
|
|
private translate: TranslateService,
|
|
) {
|
|
super()
|
|
}
|
|
|
|
async provide (): Promise<Shell[]> {
|
|
if (this.hostApp.platform !== Platform.macOS) {
|
|
return []
|
|
}
|
|
return [{
|
|
id: 'default',
|
|
name: this.translate.instant('OS default'),
|
|
command: await this.getDefaultShellCached(),
|
|
args: ['--login'],
|
|
hidden: true,
|
|
env: {},
|
|
}]
|
|
}
|
|
|
|
private async getDefaultShellCached () {
|
|
if (!this.cachedShell) {
|
|
this.cachedShell = await this.getDefaultShell()
|
|
}
|
|
return this.cachedShell
|
|
}
|
|
|
|
private async getDefaultShell (): Promise<string> {
|
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
return (promiseIpc as RendererProcessType).send('get-default-mac-shell') as Promise<string>
|
|
}
|
|
}
|