show profiles in macos dock item menu

This commit is contained in:
Eugene Pankov
2018-12-16 23:02:17 +01:00
parent 85bcac1fb7
commit fe75aab724
2 changed files with 36 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ import { EditProfileModalComponent } from './components/editProfileModal.compone
import { SessionsService, BaseSession } from './services/sessions.service'
import { TerminalFrontendService } from './services/terminalFrontend.service'
import { TerminalService } from './services/terminal.service'
import { DockMenuService } from './services/dockMenu.service'
import { ButtonProvider } from './buttonProvider'
import { RecoveryProvider } from './recoveryProvider'
@@ -59,6 +60,7 @@ import { hterm } from './hterm'
SessionsService,
TerminalFrontendService,
TerminalService,
DockMenuService,
{ provide: SettingsTabProvider, useClass: AppearanceSettingsTabProvider, multi: true },
{ provide: SettingsTabProvider, useClass: ShellSettingsTabProvider, multi: true },
@@ -115,6 +117,7 @@ export default class TerminalModule {
hotkeys: HotkeysService,
terminal: TerminalService,
hostApp: HostAppService,
dockMenu: DockMenuService,
) {
let events = [
{
@@ -183,6 +186,8 @@ export default class TerminalModule {
hostApp.bringToFront()
}
})
dockMenu.update()
}
}

View File

@@ -0,0 +1,31 @@
import { NgZone, Injectable } from '@angular/core'
import { ElectronService, ConfigService, HostAppService, Platform } from 'terminus-core'
import { TerminalService } from './terminal.service'
@Injectable()
export class DockMenuService {
appVersion: string
constructor (
private electron: ElectronService,
private config: ConfigService,
private hostApp: HostAppService,
private zone: NgZone,
private terminalService: TerminalService,
) {
config.changed$.subscribe(() => this.update())
}
update () {
if (this.hostApp.platform === Platform.macOS) {
this.electron.app.dock.setMenu(this.electron.Menu.buildFromTemplate(
this.config.store.terminal.profiles.map(profile => ({
label: profile.name,
click: () => this.zone.run(() => {
this.terminalService.openTabWithOptions(profile.sessionOptions)
}),
}))
))
}
}
}