Change:
Ref From
When I turn off , the padding remains. When I turn off , the decorations go away for the current terminal, even though shell integration is still on for the terminal. The padding also remains in this case. Are either of these results expected?
I don't think we're considering the setting currently, could you create a new issue on that? For were you testing for terminals that were not the left-most split? The padding should always be 20px for the left-most terminal so the character grid aligns with the first panel title. !
We are considering that: It's working for me https://user-
This is by design But shell integration should not still be on for that terminal.
I just tested it with a non-leftmost terminal now. I can confirm the padding goes away when I disable the decorations. When I re-enable them, the padding reappears, but the decorations don't seem to show up for new commands.
that one's tracked in already

Discussion:
} .monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .xterm, <del> .monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .xterm { </del> <ins> .monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .xterm, .monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view .xterm.shell-integration, .monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view .xterm.shell-integration, .monaco-split-view2.vertical .split-view-view .xterm.shell-integration { </ins> padding-left: 20px; } .monaco-workbench .editor-instance .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm, .monaco-workbench .pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:last-child .xterm { padding-right: 20px;

* viewport. */ clearBuffer(): void; <ins> /** * Clears decorations - for example, when shell integration is disabled. */ clearDecorations(): void; </ins> } export interface IRequestAddInstanceToGroupEvent {

e.affectsConfiguration(TerminalSettingId.TerminalDescription)) { this._labelComputer?.refreshLabel(); } <ins> if ((e.affectsConfiguration(TerminalSettingId.ShellIntegrationDecorationsEnabled) && !this._configurationService.getValue(TerminalSettingId.ShellIntegrationDecorationsEnabled)) || (e.affectsConfiguration(TerminalSettingId.ShellIntegrationEnabled) && !this._configurationService.getValue(TerminalSettingId.ShellIntegrationEnabled))) { this.xterm?.clearDecorations(); } </ins> })); this._workspaceContextService.onDidChangeWorkspaceFolders(() => this._labelComputer?.refreshLabel());

DefaultColor = 'default', Codicon = 'codicon', XtermDecoration = 'xterm-decoration', <del> FirstSplitContainer = '.pane-body.integrated-terminal .terminal-group .monaco-split-view2.horizontal .split-view-view:first-child .xterm' </del> <ins> ShellIntegration = 'shell-integration' </ins> } const enum DecorationStyles { DefaultDimension = 16, <del> MarginLeftFirstSplit = -17, MarginLeft = -12 </del> <ins> MarginLeft = -17, </ins> } interface IDisposableDecoration { decoration: IDecoration; disposables: IDisposable[]; exitCode?: number }

this._refreshClasses(); } else if (e.affectsConfiguration(TerminalSettingId.FontSize) || e.affectsConfiguration(TerminalSettingId.LineHeight)) { this.refreshLayouts(); <del> } else if (e.affectsConfiguration(TerminalSettingId.ShellIntegrationDecorationsEnabled) && !this._configurationService.getValue(TerminalSettingId.ShellIntegrationDecorationsEnabled)) { this._commandStartedListener?.dispose(); this._commandFinishedListener?.dispose(); this._clearDecorations(); </del> } }); }

} } <del> private _clearDecorations(): void { </del> <ins> public clearDecorations(disposeOfListeners?: boolean): void { if (disposeOfListeners) { this._commandStartedListener?.dispose(); this._commandFinishedListener?.dispose(); } </ins> this._placeholderDecoration?.dispose(); this._placeholderDecoration?.marker.dispose(); for (const value of this._decorations.values()) { <ins> value.decoration.element?.parentElement?.parentElement?.parentElement?.classList.remove(DecorationSelector.ShellIntegration); </ins> value.decoration.dispose(); value.decoration.marker.dispose(); dispose(value.disposables);

if (this._placeholderDecoration?.marker.id) { this._decorations.delete(this._placeholderDecoration?.marker.id); } <ins> if (command.command.trim().toLowerCase() === 'clear' || command.command.trim().toLowerCase() === 'cls') { this.clearDecorations(); return; } </ins> this._placeholderDecoration?.dispose(); this.registerCommandDecoration(command); });

const lineHeight = this._configurationService.inspect(TerminalSettingId.LineHeight).value; if (typeof fontSize === 'number' && typeof defaultFontSize === 'number' && typeof lineHeight === 'number') { const scalar = (fontSize / defaultFontSize) <= 1 ? (fontSize / defaultFontSize) : 1; // must be inlined to override the inlined styles from xterm element.style.width = `${scalar * DecorationStyles.DefaultDimension}px`; element.style.height = `${scalar * DecorationStyles.DefaultDimension * lineHeight}px`; element.style.fontSize = `${scalar * DecorationStyles.DefaultDimension}px`; <del> // the first split terminal in the panel has more room if (element.closest(DecorationSelector.FirstSplitContainer)) { element.style.marginLeft = `${scalar * DecorationStyles.MarginLeftFirstSplit}px`; } else { element.style.marginLeft = `${scalar * DecorationStyles.MarginLeft}px`; } </del> <ins> element.style.marginLeft = `${scalar * DecorationStyles.MarginLeft}px`; </ins> } }

element.classList.remove(classes); } element.classList.add(DecorationSelector.CommandDecoration, DecorationSelector.Codicon, DecorationSelector.XtermDecoration); <ins> element.parentElement?.parentElement?.parentElement?.classList.add(DecorationSelector.ShellIntegration); </ins> if (exitCode === undefined) { element.classList.add(DecorationSelector.DefaultColor); element.classList.add(`codicon-${this._configurationService.getValue(TerminalSettingId.ShellIntegrationDecorationIcon)}`);

this.raw.clearTextureAtlas(); } <ins> clearDecorations(): void { this._decorationAddon?.clearDecorations(true); } </ins> forceRefresh() { this._core.viewport?._innerRefresh();