Change:
Hi, I would like to request that upon restart vscode, the terminals can be restored. By restored, i mean the layout, the custom names, icon and color for the terminals are retained. The content DOES NOT need to be retain. Otherwise efforts to customize all the opened terminals would gone to waste when vscode is restarted. Alternatively, vscode can provide new workspace configurations, where developer can manually enter a list of terminals' custom names, Vscode, upon starting, will automatically create new terminals based on the configured list. Even better, each time, deveoper manually open a new terminal , vscode will auto update the workspace configuration file to add a new terminal to the configured list. This applies the same to renaming of terminal Hope that this can be achieved without relying on plugin. *Do note that this might not be a duplicate of other look similar kind of feature request. Cos for this request, content does not need to be preserved. And the terminal's custom names should be preserved (sadly, persistentSessionReviveProcess, does not maintain the terminal custom names)
except it doesn't save custom terminal names.
Not only it doesn't save custom terminal names, it also doesn't save icon and color.
This is meant to be supported with including content as well, there are currently some issues with it causing it to be flaky though. They might have to wait until v1.63 where we will focus on testing. Related:
fixed !
It's persisting the icon, color, name, and layout on window reload. Doesn't seem to persist icon, color, or name on restart.
Yes. My request is focusing on restart, not window reload

Discussion:
{ ...state.shellLaunchConfig, cwd: state.processDetails.cwd, <ins> color: state.processDetails.color, icon: state.processDetails.icon, name: state.processDetails.title, </ins> initialText: state.replayEvent.events[0].data + 'x1b[0mnnrx1b[1;48;5;252;38;5;234m ' + restoreMessage + ' x1b[Kx1b[0mnr' }, state.processDetails.cwd,

executableEnv, windowsEnableConpty }; <del> const persistentProcess = new PersistentTerminalProcess(id, process, workspaceId, workspaceName, shouldPersist, cols, rows, processLaunchOptions, unicodeVersion, this._reconnectConstants, this._logService, isReviving ? shellLaunchConfig.initialText : undefined, shellLaunchConfig.icon, shellLaunchConfig.color, shellLaunchConfig.fixedDimensions); </del> <ins> const persistentProcess = new PersistentTerminalProcess(id, process, workspaceId, workspaceName, shouldPersist, cols, rows, processLaunchOptions, unicodeVersion, this._reconnectConstants, this._logService, isReviving ? shellLaunchConfig.initialText : undefined, shellLaunchConfig.icon, shellLaunchConfig.color, shellLaunchConfig.name, shellLaunchConfig.fixedDimensions); </ins> process.onDidChangeProperty(property => this._onDidChangeProperty.fire({ id, property })); process.onProcessExit(event => { persistentProcess.dispose();

reviveBuffer: string | undefined, private _icon?: TerminalIcon, private _color?: string, <ins> name?: string, </ins> fixedDimensions?: IFixedTerminalDimensions ) { super(); <ins> if (name) { this.setTitle(name, TitleEventSource.Api); } </ins> this._logService.trace('persistentTerminalProcess#ctor', _persistentProcessId, arguments); this._wasRevived = reviveBuffer !== undefined; this._serializer = new XtermSerializer(

private _containerReadyBarrier: AutoOpenBarrier; private _attachBarrier: AutoOpenBarrier; <ins> private _icon: TerminalIcon | undefined; </ins> private _messageTitleDisposable: IDisposable | undefined; private _widgetManager: TerminalWidgetManager = this._instantiationService.createInstance(TerminalWidgetManager);

this._fixedRows = _shellLaunchConfig.attachPersistentProcess?.fixedDimensions?.rows; this._fixedCols = _shellLaunchConfig.attachPersistentProcess?.fixedDimensions?.cols; <ins> this._icon = _shellLaunchConfig.attachPersistentProcess?.icon || _shellLaunchConfig.icon; </ins> // the resource is already set when it's been moved from another window this._resource = resource || getTerminalUri(this._workspaceContextService.getWorkspace().id, this.instanceId, this.title);

} private _getIcon(): TerminalIcon | undefined { <del> const icon = this._shellLaunchConfig.icon || this._shellLaunchConfig.attachPersistentProcess?.icon; if (!icon) { return this._processManager.processState >= ProcessState.Launching ? Codicon.terminal : undefined; </del> <ins> if (!this._icon) { this._icon = this._processManager.processState >= ProcessState.Launching ? Codicon.terminal : undefined; </ins> } <del> return icon; </del> <ins> return this._icon; </ins> } private _getColor(): string | undefined {

matchOnDescription: true }); if (result && result.description) { <del> this.shellLaunchConfig.icon = iconRegistry.get(result.description); </del> <ins> this._icon = iconRegistry.get(result.description); </ins> this._onIconChanged.fire(this); } }