From f5dc4de2a89154170e2ef0a33cd637e20771c714 Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Tue, 24 Mar 2026 19:52:56 -0700 Subject: [PATCH] fix: sync pty size after terminal appearance changes (#95) --- .../components/terminal-pane/terminal-appearance.ts | 10 +++++++++- .../terminal-pane/use-terminal-pane-lifecycle.ts | 12 ++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/renderer/src/components/terminal-pane/terminal-appearance.ts b/src/renderer/src/components/terminal-pane/terminal-appearance.ts index 7bce88a78f5..a5ae9c04768 100644 --- a/src/renderer/src/components/terminal-pane/terminal-appearance.ts +++ b/src/renderer/src/components/terminal-pane/terminal-appearance.ts @@ -6,12 +6,15 @@ import { resolvePaneStyleOptions, resolveEffectiveTerminalAppearance } from '@/lib/terminal-theme' +import { buildFontFamily } from './layout-serialization' +import type { PtyTransport } from './pty-transport' export function applyTerminalAppearance( manager: PaneManager, settings: GlobalSettings, systemPrefersDark: boolean, - paneFontSizes: Map + paneFontSizes: Map, + paneTransports: Map ): void { const appearance = resolveEffectiveTerminalAppearance(settings, systemPrefersDark) const paneStyles = resolvePaneStyleOptions(settings) @@ -26,11 +29,16 @@ export function applyTerminalAppearance( pane.terminal.options.cursorBlink = settings.terminalCursorBlink const paneSize = paneFontSizes.get(pane.id) pane.terminal.options.fontSize = paneSize ?? settings.terminalFontSize + pane.terminal.options.fontFamily = buildFontFamily(settings.terminalFontFamily) try { pane.fitAddon.fit() } catch { /* ignore */ } + const transport = paneTransports.get(pane.id) + if (transport?.isConnected()) { + transport.resize(pane.terminal.cols, pane.terminal.rows) + } } manager.setPaneStyleOptions({ diff --git a/src/renderer/src/components/terminal-pane/use-terminal-pane-lifecycle.ts b/src/renderer/src/components/terminal-pane/use-terminal-pane-lifecycle.ts index f60cb602b85..e5db77dbef2 100644 --- a/src/renderer/src/components/terminal-pane/use-terminal-pane-lifecycle.ts +++ b/src/renderer/src/components/terminal-pane/use-terminal-pane-lifecycle.ts @@ -82,7 +82,8 @@ export function useTerminalPaneLifecycle({ manager, currentSettings, systemPrefersDarkRef.current, - paneFontSizesRef.current + paneFontSizesRef.current, + paneTransportsRef.current ) } @@ -275,15 +276,6 @@ export function useTerminalPaneLifecycle({ return } applyAppearance(manager) - const fontFamily = buildFontFamily(settings.terminalFontFamily) - for (const pane of manager.getPanes()) { - pane.terminal.options.fontFamily = fontFamily - try { - pane.fitAddon.fit() - } catch { - /* ignore */ - } - } // eslint-disable-next-line react-hooks/exhaustive-deps }, [settings, systemPrefersDark]) }