mirror of
https://github.com/Eugeny/tabby.git
synced 2025-08-23 09:41:55 +00:00
show profiles in macos dock item menu
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
31
terminus-terminal/src/services/dockMenu.service.ts
Normal file
31
terminus-terminal/src/services/dockMenu.service.ts
Normal 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)
|
||||
}),
|
||||
}))
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user