diff --git a/tabby-core/src/utils.ts b/tabby-core/src/utils.ts index 61abb796ff..ba67ecad32 100644 --- a/tabby-core/src/utils.ts +++ b/tabby-core/src/utils.ts @@ -7,8 +7,13 @@ export const WIN_BUILD_CONPTY_STABLE = 18309 export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763 export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063 +export function getWindows10Build (): number|undefined { + return process.platform === 'win32' && parseFloat(os.release()) >= 10 ? parseInt(os.release().split('.')[2]) : undefined +} + export function isWindowsBuild (build: number): boolean { - return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build + const b = getWindows10Build() + return b !== undefined && b >= build } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types diff --git a/tabby-terminal/package.json b/tabby-terminal/package.json index cb359e5115..ff091c7590 100644 --- a/tabby-terminal/package.json +++ b/tabby-terminal/package.json @@ -28,15 +28,15 @@ "ngx-colors": "^3.4.0", "patch-package": "^6.5.0", "runes": "^0.4.2", - "xterm": "^5.1.0", - "xterm-addon-canvas": "^0.4.0-beta.9", + "xterm": "^5.2.0", + "xterm-addon-canvas": "^0.4.0", "xterm-addon-fit": "^0.7.0", - "xterm-addon-image": "^0.3.1", + "xterm-addon-image": "^0.4.1", "xterm-addon-ligatures": "^0.6.0", - "xterm-addon-search": "^0.11.0", - "xterm-addon-serialize": "^0.9.0", + "xterm-addon-search": "^0.12.0", + "xterm-addon-serialize": "^0.10.0", "xterm-addon-unicode11": "^0.5.0", - "xterm-addon-webgl": "^0.14.0", + "xterm-addon-webgl": "^0.15.0", "zmodem.js": "^0.1.9" }, "peerDependencies": { diff --git a/tabby-terminal/patches/xterm+5.1.0.patch b/tabby-terminal/patches/xterm+5.1.0.patch deleted file mode 100644 index 4104418742..0000000000 --- a/tabby-terminal/patches/xterm+5.1.0.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/xterm/src/common/CircularList.ts b/node_modules/xterm/src/common/CircularList.ts -index 8ab80d5..622a1ef 100644 ---- a/node_modules/xterm/src/common/CircularList.ts -+++ b/node_modules/xterm/src/common/CircularList.ts -@@ -4,7 +4,7 @@ - */ - - import { ICircularList } from 'common/Types'; --import { EventEmitter, IEvent } from 'common/EventEmitter'; -+import { EventEmitter } from 'common/EventEmitter'; - import { Disposable } from 'common/Lifecycle'; - - export interface IInsertEvent { diff --git a/tabby-terminal/src/frontends/xtermFrontend.ts b/tabby-terminal/src/frontends/xtermFrontend.ts index 88951c2a69..4cadcd1acd 100644 --- a/tabby-terminal/src/frontends/xtermFrontend.ts +++ b/tabby-terminal/src/frontends/xtermFrontend.ts @@ -1,6 +1,6 @@ import { BehaviorSubject, filter, firstValueFrom, takeUntil } from 'rxjs' import { Injector } from '@angular/core' -import { ConfigService, getCSSFontFamily, HostAppService, HotkeysService, Platform, PlatformService, ThemesService } from 'tabby-core' +import { ConfigService, getCSSFontFamily, getWindows10Build, HostAppService, HotkeysService, Platform, PlatformService, ThemesService } from 'tabby-core' import { Frontend, SearchOptions, SearchState } from './frontend' import { Terminal, ITheme } from 'xterm' import { FitAddon } from 'xterm-addon-fit' @@ -99,7 +99,10 @@ export class XTermFrontend extends Frontend { allowTransparency: true, allowProposedApi: true, overviewRulerWidth: 8, - windowsMode: process.platform === 'win32', + windowsPty: process.platform === 'win32' ? { + backend: this.configService.store.terminal.useConPTY ? 'conpty' : 'winpty', + buildNumber: getWindows10Build(), + } : undefined, }) this.flowControl = new FlowControl(this.xterm) this.xtermCore = this.xterm['_core'] diff --git a/tabby-terminal/yarn.lock b/tabby-terminal/yarn.lock index 85465daea4..abc00fed2f 100644 --- a/tabby-terminal/yarn.lock +++ b/tabby-terminal/yarn.lock @@ -464,20 +464,20 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xterm-addon-canvas@^0.4.0-beta.9: - version "0.4.0-beta.9" - resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0-beta.9.tgz#e570fa4592890f92cc86706f2bba0dd128a8641d" - integrity sha512-BWRVWyUW7NY2g4BBMm3ecPQvbdyKXFgABnpmh4m0TVHqFJMNeXdNuTc94KiDbE+cvw8jtAY9NC/OIM4HcgjAIQ== +xterm-addon-canvas@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0.tgz#a6ee6a56deb0c495fcef29afe6d94b7119a0f334" + integrity sha512-iTC8CdjX9+hGX7jiEuiDMXzHsY/FKJdVnbjep5xjRXNu7RKOk15xuecIkJ7HZORqMVPpr4DGS3jyd9XUoBuxqw== xterm-addon-fit@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.7.0.tgz#b8ade6d96e63b47443862088f6670b49fb752c6a" integrity sha512-tQgHGoHqRTgeROPnvmtEJywLKoC/V9eNs4bLLz7iyJr1aW/QFzRwfd3MGiJ6odJd9xEfxcW36/xRU47JkD5NKQ== -xterm-addon-image@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.3.1.tgz#970b4003d1239b541ace7643f4f7e72a7f90a07d" - integrity sha512-7wLkYAoMCMwcvOhzqVlMK1wRHPQa1ZiFRdJ82oQVdnkp0ktV2LNmNu0JPu6H0Fr0eUfxUmcrqwhI9BMiZuPyrw== +xterm-addon-image@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.4.1.tgz#ec8f750af48005ad641c1128fa1f551ac198472a" + integrity sha512-iJpYyvtbHg4oXSv+D6J73ZfCjnboZpbZ567MLplXDBlYSUknv3kvPTfVMPJATV7Zsx7+bDgyXboCh9vsDf/m/w== xterm-addon-ligatures@^0.6.0: version "0.6.0" @@ -487,30 +487,30 @@ xterm-addon-ligatures@^0.6.0: font-finder "^1.1.0" font-ligatures "^1.4.1" -xterm-addon-search@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.11.0.tgz#2a00ff7f9848f6140e7c4d1782486b0b18b06e0d" - integrity sha512-6U4uHXcQ7G5igsdaGqrJ9ehm7vep24bXqWxuy3AnIosXF2Z5uy2MvmYRyTGNembIqPV/x1YhBQ7uShtuqBHhOQ== +xterm-addon-search@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0.tgz#2ef8f56aecf699a3989223a1260f1e079d7c74e2" + integrity sha512-hXAuO7Ts2+Jf9K8mZrUx8IFd7c/Flgks/jyqA1L4reymyfmXtcsd+WDLel8R9Tgy2CLyKABVBP09/Ua/FmXcvg== -xterm-addon-serialize@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.9.0.tgz#3eee5f5c34b16e48891ec59b213716bab2354bf4" - integrity sha512-qJju2YJFh8c8pbtCYtHaG7gDDHBpDJ4a4JQZvOzuiMxOjgeM1oCnFNjbhzMuK/fOUa59FmvIUGQyqn3WL9q7qw== +xterm-addon-serialize@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0.tgz#c16a8cb456dcbd2f008fa83d15ce1d4721892e01" + integrity sha512-Syp9eSBypn70iAczcJ+kAi0foQIepAvFS6x53JwI4XylTBHn87Ep9fovslhwmUV3rwH2yMnpdDjXH5W/whx2lA== xterm-addon-unicode11@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz#41c0d96acc1e3bb6c6596eee64e163b6bca74be7" integrity sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg== -xterm-addon-webgl@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.14.0.tgz#bd9136710bd5d130a0a51fd42e6d14ea39348236" - integrity sha512-zcxL4RVVjeS7NNFeKe5HHQI8OUEx3wZpE4EqLoTVipa2UrTR+qLsigo16UEp/yVcYBMhK7tsJ/AJokoEe/f0mw== +xterm-addon-webgl@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0.tgz#c10f93ca619524f5a470eaac44258bab0ae8e3c7" + integrity sha512-ZLcqogMFHr4g/YRhcCh3xE8tTklnyut/M+O/XhVsFBRB/YCvYhPdLQ5/AQk54V0wjWAQpa8CF3W8DVR9OqyMCg== -xterm@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.1.0.tgz#3e160d60e6801c864b55adf19171c49d2ff2b4fc" - integrity sha512-LovENH4WDzpwynj+OTkLyZgJPeDom9Gra4DMlGAgz6pZhIDCQ+YuO7yfwanY+gVbn/mmZIStNOnVRU/ikQuAEQ== +xterm@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.1.tgz#b3fea7bdb55b9be1d4b31f4cd1091f26ac42afb8" + integrity sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA== yallist@^4.0.0: version "4.0.0"