mirror of
https://github.com/Eugeny/tabby.git
synced 2025-09-24 17:16:03 +00:00
fixed conpty detection (fixes #653)
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import * as os from 'os'
|
||||
import { Component } from '@angular/core'
|
||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { Subscription } from 'rxjs'
|
||||
@@ -6,7 +5,7 @@ import { ConfigService, ElectronService, HostAppService, Platform } from 'termin
|
||||
import { EditProfileModalComponent } from './editProfileModal.component'
|
||||
import { IShell, Profile } from '../api'
|
||||
import { TerminalService } from '../services/terminal.service'
|
||||
import { UACService } from '../services/uac.service'
|
||||
import { WIN_BUILD_CONPTY_SUPPORTED, WIN_BUILD_CONPTY_STABLE, isWindowsBuild } from '../utils'
|
||||
|
||||
@Component({
|
||||
template: require('./shellSettingsTab.component.pug'),
|
||||
@@ -20,7 +19,6 @@ export class ShellSettingsTabComponent {
|
||||
private configSubscription: Subscription
|
||||
|
||||
constructor (
|
||||
uac: UACService,
|
||||
public config: ConfigService,
|
||||
public hostApp: HostAppService,
|
||||
private electron: ElectronService,
|
||||
@@ -32,10 +30,9 @@ export class ShellSettingsTabComponent {
|
||||
this.reload()
|
||||
})
|
||||
this.reload()
|
||||
this.isConPTYAvailable = uac.isAvailable
|
||||
this.isConPTYStable = hostApp.platform === Platform.Windows
|
||||
&& parseFloat(os.release()) >= 10
|
||||
&& parseInt(os.release().split('.')[2]) >= 18309
|
||||
|
||||
this.isConPTYAvailable = isWindowsBuild(WIN_BUILD_CONPTY_SUPPORTED)
|
||||
this.isConPTYStable = isWindowsBuild(WIN_BUILD_CONPTY_STABLE)
|
||||
}
|
||||
|
||||
async ngOnInit () {
|
||||
|
@@ -7,6 +7,7 @@ import { Injectable } from '@angular/core'
|
||||
import { Logger, LogService, ConfigService } from 'terminus-core'
|
||||
import { exec } from 'mz/child_process'
|
||||
import { SessionOptions } from '../api'
|
||||
import { WIN_BUILD_CONPTY_SUPPORTED, isWindowsBuild } from '../utils'
|
||||
|
||||
let macOSNativeProcessList
|
||||
try {
|
||||
@@ -118,7 +119,8 @@ export class Session extends BaseSession {
|
||||
rows: options.height || 30,
|
||||
cwd,
|
||||
env: env,
|
||||
experimentalUseConpty: this.config.store.terminal.useConPTY && 1,
|
||||
// `1` instead of `true` forces ConPTY even if unstable
|
||||
experimentalUseConpty: (isWindowsBuild(WIN_BUILD_CONPTY_SUPPORTED) && this.config.store.terminal.useConPTY) ? 1 : false,
|
||||
})
|
||||
|
||||
this.guessedCWD = cwd
|
||||
|
@@ -1,20 +1,18 @@
|
||||
import * as path from 'path'
|
||||
import * as os from 'os'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { ElectronService, HostAppService, Platform } from 'terminus-core'
|
||||
import { ElectronService } from 'terminus-core'
|
||||
import { SessionOptions } from '../api'
|
||||
|
||||
import { WIN_BUILD_CONPTY_SUPPORTED, isWindowsBuild } from '../utils'
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class UACService {
|
||||
isAvailable = false
|
||||
|
||||
constructor (
|
||||
hostApp: HostAppService,
|
||||
private electron: ElectronService,
|
||||
) {
|
||||
this.isAvailable = hostApp.platform === Platform.Windows
|
||||
&& parseFloat(os.release()) >= 10
|
||||
&& parseInt(os.release().split('.')[2]) >= 17692
|
||||
this.isAvailable = isWindowsBuild(WIN_BUILD_CONPTY_SUPPORTED)
|
||||
}
|
||||
|
||||
patchSessionOptionsForUAC (sessionOptions: SessionOptions): SessionOptions {
|
||||
|
8
terminus-terminal/src/utils.ts
Normal file
8
terminus-terminal/src/utils.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import * as os from 'os'
|
||||
|
||||
export const WIN_BUILD_CONPTY_SUPPORTED = 17692
|
||||
export const WIN_BUILD_CONPTY_STABLE = 18309
|
||||
|
||||
export function isWindowsBuild (build: number): boolean {
|
||||
return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
|
||||
}
|
Reference in New Issue
Block a user