diff --git a/src/main/codex-accounts/runtime-home-service.test.ts b/src/main/codex-accounts/runtime-home-service.test.ts index 87a33323..ced74f05 100644 --- a/src/main/codex-accounts/runtime-home-service.test.ts +++ b/src/main/codex-accounts/runtime-home-service.test.ts @@ -42,6 +42,7 @@ function createSettings(overrides: Partial = {}): GlobalSettings terminalFontSize: 14, terminalFontFamily: 'JetBrains Mono', terminalFontWeight: 500, + terminalLineHeight: 1, terminalCursorStyle: 'block', terminalCursorBlink: false, terminalThemeDark: 'orca-dark', diff --git a/src/main/codex-accounts/service.test.ts b/src/main/codex-accounts/service.test.ts index ca0f4e38..6bad5d85 100644 --- a/src/main/codex-accounts/service.test.ts +++ b/src/main/codex-accounts/service.test.ts @@ -36,6 +36,7 @@ function createSettings(overrides: Partial = {}): GlobalSettings terminalFontSize: 14, terminalFontFamily: 'JetBrains Mono', terminalFontWeight: 500, + terminalLineHeight: 1, terminalCursorStyle: 'block', terminalCursorBlink: false, terminalThemeDark: 'orca-dark', diff --git a/src/renderer/src/components/settings/TerminalPane.tsx b/src/renderer/src/components/settings/TerminalPane.tsx index 1f6b21ec..e9057183 100644 --- a/src/renderer/src/components/settings/TerminalPane.tsx +++ b/src/renderer/src/components/settings/TerminalPane.tsx @@ -171,6 +171,28 @@ export function TerminalPane({ } /> + + + + updateSettings({ + terminalLineHeight: clampNumber(value, 1, 3) + }) + } + /> + ) : null, matchesSettingsSearch(searchQuery, TERMINAL_CURSOR_SEARCH_ENTRIES) ? ( diff --git a/src/renderer/src/components/settings/terminal-search.ts b/src/renderer/src/components/settings/terminal-search.ts index 61dc530c..25fe6ac6 100644 --- a/src/renderer/src/components/settings/terminal-search.ts +++ b/src/renderer/src/components/settings/terminal-search.ts @@ -15,6 +15,11 @@ export const TERMINAL_TYPOGRAPHY_SEARCH_ENTRIES: SettingsSearchEntry[] = [ title: 'Font Weight', description: 'Controls the terminal text font weight.', keywords: ['terminal', 'typography', 'weight'] + }, + { + title: 'Line Height', + description: 'Controls the terminal line height multiplier.', + keywords: ['terminal', 'typography', 'line height', 'spacing'] } ] diff --git a/src/renderer/src/components/terminal-pane/terminal-appearance.ts b/src/renderer/src/components/terminal-pane/terminal-appearance.ts index b1cfc95f..91de60ab 100644 --- a/src/renderer/src/components/terminal-pane/terminal-appearance.ts +++ b/src/renderer/src/components/terminal-pane/terminal-appearance.ts @@ -36,6 +36,7 @@ export function applyTerminalAppearance( pane.terminal.options.fontWeight = terminalFontWeights.fontWeight pane.terminal.options.fontWeightBold = terminalFontWeights.fontWeightBold pane.terminal.options.macOptionIsMeta = settings.terminalMacOptionAsAlt === 'true' + pane.terminal.options.lineHeight = settings.terminalLineHeight try { const state = captureScrollState(pane.terminal) pane.fitAddon.fit() 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 b6eb5494..1f184077 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 @@ -433,7 +433,8 @@ export function useTerminalPaneLifecycle({ ), cursorStyle: currentSettings?.terminalCursorStyle ?? 'bar', cursorBlink: currentSettings?.terminalCursorBlink ?? true, - macOptionIsMeta: currentSettings?.terminalMacOptionAsAlt === 'true' + macOptionIsMeta: currentSettings?.terminalMacOptionAsAlt === 'true', + lineHeight: currentSettings?.terminalLineHeight ?? 1 } }, onLinkClick: (event, url) => { diff --git a/src/shared/constants.ts b/src/shared/constants.ts index 1b9f1b18..30f76bd5 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -104,6 +104,7 @@ export function getDefaultSettings(homedir: string): GlobalSettings { terminalFontSize: 14, terminalFontFamily: defaultTerminalFontFamily(), terminalFontWeight: DEFAULT_TERMINAL_FONT_WEIGHT, + terminalLineHeight: 1, terminalCursorStyle: 'bar', terminalCursorBlink: true, terminalThemeDark: 'Ghostty Default Style Dark', diff --git a/src/shared/types.ts b/src/shared/types.ts index 97bd341e..4dd756e1 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -575,6 +575,7 @@ export type GlobalSettings = { terminalFontSize: number terminalFontFamily: string terminalFontWeight: number + terminalLineHeight: number terminalCursorStyle: 'bar' | 'block' | 'underline' terminalCursorBlink: boolean terminalThemeDark: string