core/private/Restore-JaxOriginalTerminalTitle.ps1
|
function Restore-JaxOriginalTerminalTitle { [CmdletBinding()] param( [switch] $Force ) try { $didSomething = $false Write-JaxTitleDebug ("RESTORE entry: original=[{0}] stashSurface=[{1}] stashWs=[{2}] force=[{3}]" -f $script:JaxOriginalCmuxSurfaceTitle, $script:JaxCmuxTargetSurfaceId, $script:JaxCmuxTargetWorkspaceId, $Force) # Cmux surface title restore (the important one for named tabs like "WTW Shell"). # Restore the SAME surface we renamed (stashed at capture time), falling back to a # fresh resolve only if the stash is missing. if ($script:JaxOriginalCmuxSurfaceTitle) { try { $surfaceId = $script:JaxCmuxTargetSurfaceId $workspaceId = $script:JaxCmuxTargetWorkspaceId if ([string]::IsNullOrWhiteSpace($surfaceId)) { $target = Resolve-JaxCmuxTarget $surfaceId = $target.SurfaceId $workspaceId = $target.WorkspaceId } if ($surfaceId -and (Get-Command cmux -ErrorAction SilentlyContinue)) { # NB: $args is a PowerShell automatic variable — use a distinct name. $cmuxArgs = @('rename-tab') if (-not [string]::IsNullOrWhiteSpace($workspaceId)) { $cmuxArgs += @('--workspace', $workspaceId) } $cmuxArgs += @('--surface', $surfaceId, '--', $script:JaxOriginalCmuxSurfaceTitle) & cmux @cmuxArgs 2>$null | Out-Null $didSomething = $true Write-JaxTitleDebug ("RESTORE rename-tab fired surface=[{0}] -> [{1}] exit=[{2}]" -f $surfaceId, $script:JaxOriginalCmuxSurfaceTitle, $LASTEXITCODE) } else { Write-JaxTitleDebug ("RESTORE skipped: surfaceId=[{0}] cmuxPresent=[{1}]" -f $surfaceId, [bool](Get-Command cmux -ErrorAction SilentlyContinue)) } } catch { Write-Debug "Cmux title restore failed (non-fatal): $($_.Exception.Message)" } } # OSC restore (best effort). We don't reliably have the previous OSC title captured # in all cases, so we only do this if we previously stashed one (rare for pure-OSC terminals). if ($script:JaxOriginalOscTerminalTitle) { try { if (Test-JaxShouldUpdateTerminalTitle) { $esc = [char]0x1b $bel = [char]0x07 [Console]::Write("${esc}]0;$($script:JaxOriginalOscTerminalTitle)${bel}") $didSomething = $true } } catch {} } if ($didSomething -or $Force) { # Clear captured state so a subsequent run in the same process can capture fresh $script:JaxOriginalCmuxSurfaceTitle = $null $script:JaxOriginalOscTerminalTitle = $null $script:JaxCmuxTargetSurfaceId = $null $script:JaxCmuxTargetWorkspaceId = $null $script:JaxHasMutatedTerminalTitle = $false } } catch { Write-Debug "Restore-JaxOriginalTerminalTitle suppressed error: $($_.Exception.Message)" } } |