diff --git a/terminus-terminal/src/tabContextMenu.ts b/terminus-terminal/src/tabContextMenu.ts index 7cc1eb61..3c0e0652 100644 --- a/terminus-terminal/src/tabContextMenu.ts +++ b/terminus-terminal/src/tabContextMenu.ts @@ -2,6 +2,8 @@ import { Injectable, NgZone } from '@angular/core' import { ToastrService } from 'ngx-toastr' import { ConfigService, BaseTabComponent, TabContextMenuItemProvider } from 'terminus-core' import { TerminalTabComponent } from './components/terminalTab.component' +import { UACService } from './services/uac.service' +import { TerminalService } from './services/terminal.service' /** @hidden */ @Injectable() @@ -10,6 +12,8 @@ export class SaveAsProfileContextMenu extends TabContextMenuItemProvider { private config: ConfigService, private zone: NgZone, private toastr: ToastrService, + private uac: UACService, + private terminalService: TerminalService, ) { super() } @@ -18,7 +22,7 @@ export class SaveAsProfileContextMenu extends TabContextMenuItemProvider { if (!(tab instanceof TerminalTabComponent)) { return [] } - return [ + const items: Electron.MenuItemConstructorOptions[] = [ { label: 'Save as profile', click: () => this.zone.run(async () => { @@ -38,5 +42,19 @@ export class SaveAsProfileContextMenu extends TabContextMenuItemProvider { }), }, ] + + + if (this.uac.isAvailable) { + items.push({ + label: 'Duplicate as administrator', + click: () => this.zone.run(async () => { + this.terminalService.openTabWithOptions({ + ...tab.sessionOptions, + runAsAdministrator: true, + }) + }), + }) + } + return items } }