Support color scheme reporting

CSI ? 996 n
CSI ? 2031 h
CSI ? 2031 l

Fixes #5626
This commit is contained in:
Daniel Imms
2026-01-27 10:19:26 -08:00
parent 2521bab72f
commit 6f87ae77a7
10 changed files with 117 additions and 5 deletions
+18
View File
@@ -159,6 +159,8 @@ export class InputHandler extends Disposable implements IInputHandler {
public readonly onTitleChange = this._onTitleChange.event;
private readonly _onColor = this._register(new Emitter<IColorEvent>());
public readonly onColor = this._onColor.event;
private readonly _onRequestColorSchemeQuery = this._register(new Emitter<void>());
public readonly onRequestColorSchemeQuery = this._onRequestColorSchemeQuery.event;
private _parseStack: IParseStack = {
paused: false,
@@ -2026,6 +2028,11 @@ export class InputHandler extends Disposable implements IInputHandler {
case 2026: // synchronized output (https://github.com/contour-terminal/vt-extensions/blob/master/synchronized-output.md)
this._coreService.decPrivateModes.synchronizedOutput = true;
break;
case 2031: // color scheme updates (https://contour-terminal.org/vt-extensions/color-palette-update-notifications/)
if (this._optionsService.rawOptions.vtExtensions?.colorSchemeQuery ?? true) {
this._coreService.decPrivateModes.colorSchemeUpdates = true;
}
break;
case 9001: // win32-input-mode (https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md)
if (this._optionsService.rawOptions.vtExtensions?.win32InputMode) {
this._coreService.decPrivateModes.win32InputMode = true;
@@ -2271,6 +2278,11 @@ export class InputHandler extends Disposable implements IInputHandler {
this._coreService.decPrivateModes.synchronizedOutput = false;
this._onRequestRefreshRows.fire(undefined);
break;
case 2031: // color scheme updates (https://contour-terminal.org/vt-extensions/color-palette-update-notifications/)
if (this._optionsService.rawOptions.vtExtensions?.colorSchemeQuery ?? true) {
this._coreService.decPrivateModes.colorSchemeUpdates = false;
}
break;
case 9001: // win32-input-mode
if (this._optionsService.rawOptions.vtExtensions?.win32InputMode) {
this._coreService.decPrivateModes.win32InputMode = false;
@@ -2774,6 +2786,12 @@ export class InputHandler extends Disposable implements IInputHandler {
// no dec locator/mouse
// this.handler(C0.ESC + '[?50n');
break;
case 996:
// color scheme query (https://contour-terminal.org/vt-extensions/color-palette-update-notifications/)
if (this._optionsService.rawOptions.vtExtensions?.colorSchemeQuery ?? true) {
this._onRequestColorSchemeQuery.fire();
}
break;
}
return true;
}