mirror of
https://github.com/Eugeny/tabby.git
synced 2025-08-26 03:01:54 +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 { SessionsService, BaseSession } from './services/sessions.service'
|
||||||
import { TerminalFrontendService } from './services/terminalFrontend.service'
|
import { TerminalFrontendService } from './services/terminalFrontend.service'
|
||||||
import { TerminalService } from './services/terminal.service'
|
import { TerminalService } from './services/terminal.service'
|
||||||
|
import { DockMenuService } from './services/dockMenu.service'
|
||||||
|
|
||||||
import { ButtonProvider } from './buttonProvider'
|
import { ButtonProvider } from './buttonProvider'
|
||||||
import { RecoveryProvider } from './recoveryProvider'
|
import { RecoveryProvider } from './recoveryProvider'
|
||||||
@@ -59,6 +60,7 @@ import { hterm } from './hterm'
|
|||||||
SessionsService,
|
SessionsService,
|
||||||
TerminalFrontendService,
|
TerminalFrontendService,
|
||||||
TerminalService,
|
TerminalService,
|
||||||
|
DockMenuService,
|
||||||
|
|
||||||
{ provide: SettingsTabProvider, useClass: AppearanceSettingsTabProvider, multi: true },
|
{ provide: SettingsTabProvider, useClass: AppearanceSettingsTabProvider, multi: true },
|
||||||
{ provide: SettingsTabProvider, useClass: ShellSettingsTabProvider, multi: true },
|
{ provide: SettingsTabProvider, useClass: ShellSettingsTabProvider, multi: true },
|
||||||
@@ -115,6 +117,7 @@ export default class TerminalModule {
|
|||||||
hotkeys: HotkeysService,
|
hotkeys: HotkeysService,
|
||||||
terminal: TerminalService,
|
terminal: TerminalService,
|
||||||
hostApp: HostAppService,
|
hostApp: HostAppService,
|
||||||
|
dockMenu: DockMenuService,
|
||||||
) {
|
) {
|
||||||
let events = [
|
let events = [
|
||||||
{
|
{
|
||||||
@@ -183,6 +186,8 @@ export default class TerminalModule {
|
|||||||
hostApp.bringToFront()
|
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