From 72feda66e4e3e03b4d82d3cc238cf7a04e522d70 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Thu, 26 Mar 2026 16:40:30 +0000 Subject: [PATCH] feat: add dynamic theme changes Enable runtime theme changes via `terminal.options.theme = newTheme` without restarting the terminal. All existing content re-renders instantly with the new colors. - Add `ghostty_terminal_set_colors` WASM export that updates terminal colors and forces a full redraw - Wire up `handleOptionChange('theme')` to merge partial themes, update the renderer, and sync WASM terminal colors - Support partial theme updates that accumulate (e.g. setting only background preserves all other colors) - Cells with ANSI palette/default colors re-resolve; explicit RGB cells remain unchanged Co-Authored-By: Claude Opus 4.6 (1M context) --- ghostty-vt.wasm | Bin 0 -> 424354 bytes lib/ghostty.ts | 40 +++++ lib/terminal.test.ts | 308 +++++++++++++++++++++++++++++++++ lib/terminal.ts | 55 +++++- lib/types.ts | 1 + patches/ghostty-wasm-api.patch | 86 +++++++-- 6 files changed, 471 insertions(+), 19 deletions(-) create mode 100755 ghostty-vt.wasm diff --git a/ghostty-vt.wasm b/ghostty-vt.wasm new file mode 100755 index 0000000000000000000000000000000000000000..7f70db40bc262643413e80f72cca52e23d007ef2 GIT binary patch literal 424354 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 literal 0 HcmV?d00001 diff --git a/lib/ghostty.ts b/lib/ghostty.ts index f079885..dc4d3f1 100644 --- a/lib/ghostty.ts +++ b/lib/ghostty.ts @@ -364,6 +364,46 @@ export class GhosttyTerminal { this.exports.ghostty_terminal_free(this.handle); } + /** + * Update terminal colors at runtime. All color values are applied directly + * (no sentinel — 0x000000 is valid black). Forces a full redraw on next render. + */ + setColors(config: GhosttyTerminalConfig): void { + const configPtr = this.exports.ghostty_wasm_alloc_u8_array(GHOSTTY_CONFIG_SIZE); + if (configPtr === 0) return; + + try { + const view = new DataView(this.memory.buffer); + let offset = configPtr; + + // scrollback_limit (u32) — ignored by setColors but must be present in struct + view.setUint32(offset, 0, true); + offset += 4; + + // fg_color (u32) + view.setUint32(offset, config.fgColor ?? 0, true); + offset += 4; + + // bg_color (u32) + view.setUint32(offset, config.bgColor ?? 0, true); + offset += 4; + + // cursor_color (u32) + view.setUint32(offset, config.cursorColor ?? 0, true); + offset += 4; + + // palette[16] (u32 * 16) + for (let i = 0; i < 16; i++) { + view.setUint32(offset, config.palette?.[i] ?? 0, true); + offset += 4; + } + + this.exports.ghostty_terminal_set_colors(this.handle, configPtr); + } finally { + this.exports.ghostty_wasm_free_u8_array(configPtr, GHOSTTY_CONFIG_SIZE); + } + } + // ========================================================================== // RenderState API - The key performance optimization // ========================================================================== diff --git a/lib/terminal.test.ts b/lib/terminal.test.ts index d56011e..bfe499b 100644 --- a/lib/terminal.test.ts +++ b/lib/terminal.test.ts @@ -2990,3 +2990,311 @@ describe('Synchronous open()', () => { term.dispose(); }); }); + +// ============================================================================ +// Dynamic Theme Changes +// ============================================================================ + +describe('Dynamic Theme Changes', () => { + let container: HTMLElement | null = null; + + beforeEach(async () => { + if (typeof document !== 'undefined') { + container = document.createElement('div'); + document.body.appendChild(container); + } + }); + + afterEach(() => { + if (container && container.parentNode) { + container.parentNode.removeChild(container); + container = null; + } + }); + + test('full theme change updates renderer', async () => { + if (!container) return; + + const term = await createIsolatedTerminal({ + theme: { background: '#000000', foreground: '#ffffff' }, + }); + term.open(container); + + // Change to a completely different theme + term.options.theme = { + background: '#ff0000', + foreground: '#00ff00', + cursor: '#0000ff', + red: '#aa0000', + }; + + // @ts-ignore - accessing private for test + const renderer = term.renderer; + // @ts-ignore - accessing private for test + expect(renderer.theme.background).toBe('#ff0000'); + // @ts-ignore - accessing private for test + expect(renderer.theme.foreground).toBe('#00ff00'); + // @ts-ignore - accessing private for test + expect(renderer.theme.cursor).toBe('#0000ff'); + + term.dispose(); + }); + + test('full theme change updates WASM terminal colors', async () => { + if (!container) return; + + const term = await createIsolatedTerminal(); + term.open(container); + + term.options.theme = { + background: '#112233', + foreground: '#aabbcc', + }; + + // Force render state update to pick up new colors + term.wasmTerm!.update(); + const colors = term.wasmTerm!.getColors(); + + // Verify WASM terminal has the new colors + expect(colors.background.r).toBe(0x11); + expect(colors.background.g).toBe(0x22); + expect(colors.background.b).toBe(0x33); + expect(colors.foreground.r).toBe(0xaa); + expect(colors.foreground.g).toBe(0xbb); + expect(colors.foreground.b).toBe(0xcc); + + term.dispose(); + }); + + test('partial theme update preserves previous customizations', async () => { + if (!container) return; + + const term = await createIsolatedTerminal(); + term.open(container); + + // First: change background only + term.options.theme = { background: '#111111' }; + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#111111'); + + // Second: change foreground only — background should be preserved + term.options.theme = { foreground: '#222222' }; + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#111111'); + // @ts-ignore - accessing private for test + expect(term.renderer.theme.foreground).toBe('#222222'); + + term.dispose(); + }); + + test('successive partial updates accumulate correctly', async () => { + if (!container) return; + + const term = await createIsolatedTerminal(); + term.open(container); + + term.options.theme = { background: '#aaaaaa' }; + term.options.theme = { foreground: '#bbbbbb' }; + term.options.theme = { cursor: '#cccccc' }; + + // @ts-ignore - accessing private for test + const theme = term.renderer.theme; + expect(theme.background).toBe('#aaaaaa'); + expect(theme.foreground).toBe('#bbbbbb'); + expect(theme.cursor).toBe('#cccccc'); + + term.dispose(); + }); + + test('theme reset to empty object restores defaults', async () => { + if (!container) return; + + const term = await createIsolatedTerminal({ + theme: { background: '#ff0000', foreground: '#00ff00' }, + }); + term.open(container); + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#ff0000'); + + // Reset to empty — should restore defaults + term.options.theme = {}; + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#1e1e1e'); + // @ts-ignore - accessing private for test + expect(term.renderer.theme.foreground).toBe('#d4d4d4'); + + term.dispose(); + }); + + test('theme reset to null restores defaults', async () => { + if (!container) return; + + const term = await createIsolatedTerminal({ + theme: { background: '#ff0000' }, + }); + term.open(container); + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#ff0000'); + + // Reset to null + term.options.theme = null as any; + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#1e1e1e'); + + term.dispose(); + }); + + test('theme change before open() is applied correctly', async () => { + if (!container) return; + + const term = await createIsolatedTerminal({ + theme: { background: '#111111' }, + }); + + // Change theme before open + term.options.theme = { background: '#222222' }; + + // Open — should use the latest theme + term.open(container); + + // The buildWasmConfig reads from options.theme which is now #222222 + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('#222222'); + + term.dispose(); + }); + + test('ANSI palette color cells re-resolve after theme change', async () => { + if (!container) return; + + const term = await createIsolatedTerminal({ + theme: { red: '#cd3131' }, + }); + term.open(container); + + // Write text with ANSI red (color index 1) + term.write('\x1b[31mRed text\x1b[0m'); + + // Change theme — new red + term.options.theme = { red: '#ff0000' }; + + // Force render state update and read cells + term.wasmTerm!.update(); + const line = term.wasmTerm!.getLine(0); + expect(line).not.toBeNull(); + + // First cell ('R') should now have the new red color + const cell = line![0]; + expect(cell.fg_r).toBe(0xff); + expect(cell.fg_g).toBe(0x00); + expect(cell.fg_b).toBe(0x00); + + term.dispose(); + }); + + test('explicit RGB color cells remain unchanged after theme change', async () => { + if (!container) return; + + const term = await createIsolatedTerminal(); + term.open(container); + + // Write text with explicit RGB color + term.write('\x1b[38;2;100;200;50mRGB text\x1b[0m'); + + // Change theme + term.options.theme = { + foreground: '#ffffff', + background: '#000000', + red: '#ff0000', + }; + + // Force render state update and read cells + term.wasmTerm!.update(); + const line = term.wasmTerm!.getLine(0); + expect(line).not.toBeNull(); + + // First cell ('R') should still have the explicit RGB color + const cell = line![0]; + expect(cell.fg_r).toBe(100); + expect(cell.fg_g).toBe(200); + expect(cell.fg_b).toBe(50); + + term.dispose(); + }); + + test('theme change triggers full redraw', async () => { + if (!container) return; + + const term = await createIsolatedTerminal(); + term.open(container); + + // Clear any existing dirty state + term.wasmTerm!.clearDirty(); + expect(term.wasmTerm!.needsFullRedraw()).toBe(false); + + // Change theme + term.options.theme = { background: '#ff0000' }; + + // Should need a full redraw + expect(term.wasmTerm!.needsFullRedraw()).toBe(true); + + // After clearing, no longer dirty + term.wasmTerm!.clearDirty(); + expect(term.wasmTerm!.needsFullRedraw()).toBe(false); + + term.dispose(); + }); + + test('invalid color values do not crash', async () => { + if (!container) return; + + const term = await createIsolatedTerminal(); + term.open(container); + + // Should not throw + term.options.theme = { + background: 'not-a-color', + foreground: 'rgb(999,0,0)', + red: '', + }; + + // @ts-ignore - accessing private for test + expect(term.renderer.theme.background).toBe('not-a-color'); + + term.dispose(); + }); + + test('default fg/bg cells update after theme change', async () => { + if (!container) return; + + const term = await createIsolatedTerminal({ + theme: { foreground: '#aaaaaa', background: '#111111' }, + }); + term.open(container); + + // Write text with default colors (no SGR) + term.write('Hello'); + + // Change theme + term.options.theme = { foreground: '#ffffff', background: '#000000' }; + + // Force render state update and read cells + term.wasmTerm!.update(); + const line = term.wasmTerm!.getLine(0); + expect(line).not.toBeNull(); + + // First cell ('H') should have new default foreground + const cell = line![0]; + expect(cell.fg_r).toBe(0xff); + expect(cell.fg_g).toBe(0xff); + expect(cell.fg_b).toBe(0xff); + + term.dispose(); + }); +}); diff --git a/lib/terminal.ts b/lib/terminal.ts index eeb7acd..4a43adf 100644 --- a/lib/terminal.ts +++ b/lib/terminal.ts @@ -29,12 +29,13 @@ import type { ITerminalAddon, ITerminalCore, ITerminalOptions, + ITheme, IUnicodeVersionProvider, } from './interfaces'; import { LinkDetector } from './link-detector'; import { OSC8LinkProvider } from './providers/osc8-link-provider'; import { UrlRegexProvider } from './providers/url-regex-provider'; -import { CanvasRenderer } from './renderer'; +import { CanvasRenderer, DEFAULT_THEME } from './renderer'; import { SelectionManager } from './selection-manager'; import type { ILink, ILinkProvider } from './types'; @@ -112,6 +113,9 @@ export class Terminal implements ITerminalCore { // Phase 1: Title tracking private currentTitle: string = ''; + // Accumulated theme state for partial merge support + private currentTheme: Required = { ...DEFAULT_THEME }; + // Phase 2: Viewport and scrolling state public viewportY: number = 0; // Top line of viewport in scrollback buffer (0 = at bottom, can be fractional during smooth scroll) private targetViewportY: number = 0; // Target viewport position for smooth scrolling @@ -171,6 +175,9 @@ export class Terminal implements ITerminalCore { this.cols = this.options.cols; this.rows = this.options.rows; + // Initialize accumulated theme (merge user theme with defaults) + this.currentTheme = { ...DEFAULT_THEME, ...options.theme }; + // Initialize buffer API this.buffer = new BufferNamespace(this); } @@ -201,8 +208,20 @@ export class Terminal implements ITerminalCore { break; case 'theme': - if (this.renderer) { - console.warn('ghostty-web: theme changes after open() are not yet fully supported'); + if (this.renderer && this.wasmTerm) { + // Merge partial theme with current accumulated theme. + // Null/undefined/empty resets to defaults. + const incoming = newValue && typeof newValue === 'object' ? newValue : {}; + const hasProperties = Object.keys(incoming).length > 0; + this.currentTheme = hasProperties + ? { ...this.currentTheme, ...incoming } + : { ...DEFAULT_THEME }; + + // Update renderer (selection, cursor, palette colors) + this.renderer.setTheme(this.currentTheme); + + // Update WASM terminal colors (for cell color re-resolution) + this.wasmTerm.setColors(this.buildThemeColorsConfig(this.currentTheme)); } break; @@ -326,6 +345,36 @@ export class Terminal implements ITerminalCore { }; } + /** + * Build a WASM colors config from a fully-resolved theme. + * Unlike buildWasmConfig(), all color values are valid (no sentinel). + */ + private buildThemeColorsConfig(theme: Required): GhosttyTerminalConfig { + return { + fgColor: this.parseColorToHex(theme.foreground), + bgColor: this.parseColorToHex(theme.background), + cursorColor: this.parseColorToHex(theme.cursor), + palette: [ + this.parseColorToHex(theme.black), + this.parseColorToHex(theme.red), + this.parseColorToHex(theme.green), + this.parseColorToHex(theme.yellow), + this.parseColorToHex(theme.blue), + this.parseColorToHex(theme.magenta), + this.parseColorToHex(theme.cyan), + this.parseColorToHex(theme.white), + this.parseColorToHex(theme.brightBlack), + this.parseColorToHex(theme.brightRed), + this.parseColorToHex(theme.brightGreen), + this.parseColorToHex(theme.brightYellow), + this.parseColorToHex(theme.brightBlue), + this.parseColorToHex(theme.brightMagenta), + this.parseColorToHex(theme.brightCyan), + this.parseColorToHex(theme.brightWhite), + ], + }; + } + // ========================================================================== // Lifecycle Methods // ========================================================================== diff --git a/lib/types.ts b/lib/types.ts index 4d6eefa..5d07ed3 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -413,6 +413,7 @@ export interface GhosttyWasmExports extends WebAssembly.Exports { ghostty_terminal_free(terminal: TerminalHandle): void; ghostty_terminal_resize(terminal: TerminalHandle, cols: number, rows: number): void; ghostty_terminal_write(terminal: TerminalHandle, dataPtr: number, dataLen: number): void; + ghostty_terminal_set_colors(terminal: TerminalHandle, configPtr: number): void; // RenderState API - high-performance rendering (ONE call gets ALL data) ghostty_render_state_update(terminal: TerminalHandle): number; // 0=none, 1=partial, 2=full diff --git a/patches/ghostty-wasm-api.patch b/patches/ghostty-wasm-api.patch index bd3feb9..6ba636c 100644 --- a/patches/ghostty-wasm-api.patch +++ b/patches/ghostty-wasm-api.patch @@ -29,10 +29,10 @@ index 4f8fef88e..ca9fb1d4d 100644 #include diff --git a/include/ghostty/vt/terminal.h b/include/ghostty/vt/terminal.h new file mode 100644 -index 000000000..c467102c3 +index 000000000..c0a9c6604 --- /dev/null +++ b/include/ghostty/vt/terminal.h -@@ -0,0 +1,285 @@ +@@ -0,0 +1,292 @@ +/** + * @file terminal.h + * @@ -142,6 +142,13 @@ index 000000000..c467102c3 +/** Write data to terminal (parses VT sequences) */ +void ghostty_terminal_write(GhosttyTerminal term, const uint8_t* data, size_t len); + ++/** ++ * Update terminal colors at runtime. ++ * All color values in the config are applied directly (no sentinel). ++ * Forces a full redraw on the next render cycle. ++ */ ++void ghostty_terminal_set_colors(GhosttyTerminal term, const GhosttyTerminalConfig* config); ++ +/* ============================================================================ + * RenderState API - High-performance rendering + * ========================================================================= */ @@ -319,10 +326,10 @@ index 000000000..c467102c3 + +#endif /* GHOSTTY_VT_TERMINAL_H */ diff --git a/src/lib_vt.zig b/src/lib_vt.zig -index 03a883e20..1336676d7 100644 +index 03a883e20..9d74a46dc 100644 --- a/src/lib_vt.zig +++ b/src/lib_vt.zig -@@ -140,6 +140,45 @@ comptime { +@@ -140,6 +140,46 @@ comptime { @export(&c.sgr_unknown_partial, .{ .name = "ghostty_sgr_unknown_partial" }); @export(&c.sgr_attribute_tag, .{ .name = "ghostty_sgr_attribute_tag" }); @export(&c.sgr_attribute_value, .{ .name = "ghostty_sgr_attribute_value" }); @@ -332,6 +339,7 @@ index 03a883e20..1336676d7 100644 + @export(&c.terminal_free, .{ .name = "ghostty_terminal_free" }); + @export(&c.terminal_resize, .{ .name = "ghostty_terminal_resize" }); + @export(&c.terminal_write, .{ .name = "ghostty_terminal_write" }); ++ @export(&c.terminal_set_colors, .{ .name = "ghostty_terminal_set_colors" }); + + // RenderState API - high-performance rendering + @export(&c.render_state_update, .{ .name = "ghostty_render_state_update" }); @@ -369,7 +377,7 @@ index 03a883e20..1336676d7 100644 // On Wasm we need to export our allocator convenience functions. if (builtin.target.cpu.arch.isWasm()) { diff --git a/src/terminal/c/main.zig b/src/terminal/c/main.zig -index bc92597f5..d0ee49c1b 100644 +index bc92597f5..5814a0559 100644 --- a/src/terminal/c/main.zig +++ b/src/terminal/c/main.zig @@ -4,6 +4,7 @@ pub const key_event = @import("key_event.zig"); @@ -380,7 +388,7 @@ index bc92597f5..d0ee49c1b 100644 // The full C API, unexported. pub const osc_new = osc.new; -@@ -52,6 +53,46 @@ pub const key_encoder_encode = key_encode.encode; +@@ -52,6 +53,47 @@ pub const key_encoder_encode = key_encode.encode; pub const paste_is_safe = paste.is_safe; @@ -390,6 +398,7 @@ index bc92597f5..d0ee49c1b 100644 +pub const terminal_free = terminal.free; +pub const terminal_resize = terminal.resize; +pub const terminal_write = terminal.write; ++pub const terminal_set_colors = terminal.setColors; + +// RenderState API - high-performance rendering +pub const render_state_update = terminal.renderStateUpdate; @@ -427,7 +436,7 @@ index bc92597f5..d0ee49c1b 100644 test { _ = color; _ = osc; -@@ -59,6 +100,7 @@ test { +@@ -59,6 +101,7 @@ test { _ = key_encode; _ = paste; _ = sgr; @@ -437,10 +446,10 @@ index bc92597f5..d0ee49c1b 100644 _ = @import("../../lib/allocator.zig"); diff --git a/src/terminal/c/terminal.zig b/src/terminal/c/terminal.zig new file mode 100644 -index 000000000..73ae2e6fa +index 000000000..1ce4f1919 --- /dev/null +++ b/src/terminal/c/terminal.zig -@@ -0,0 +1,1123 @@ +@@ -0,0 +1,1168 @@ +//! C API wrapper for Terminal +//! +//! This provides a minimal, high-performance interface to Ghostty's Terminal @@ -767,6 +776,8 @@ index 000000000..73ae2e6fa + response_buffer: std.ArrayList(u8), + /// Track alternate screen state to detect screen switches + last_screen_is_alternate: bool = false, ++ /// Force a full redraw on next render (e.g., after color change) ++ force_full_redraw: bool = false, +}; + +/// C-compatible cell structure (16 bytes) @@ -927,6 +938,47 @@ index 000000000..73ae2e6fa + wrapper.stream.nextSlice(data[0..len]) catch return; +} + ++/// Update terminal colors at runtime. All color values in the config are ++/// applied directly (no sentinel — 0x000000 is treated as valid black). ++/// Forces a full redraw on the next render cycle. ++pub fn setColors(ptr: ?*anyopaque, config_ptr: ?*const GhosttyTerminalConfig) callconv(.c) void { ++ const wrapper: *TerminalWrapper = @ptrCast(@alignCast(ptr orelse return)); ++ const cfg = config_ptr orelse return; ++ ++ // Update foreground ++ wrapper.terminal.colors.foreground = color.DynamicRGB.init(.{ ++ .r = @truncate((cfg.fg_color >> 16) & 0xFF), ++ .g = @truncate((cfg.fg_color >> 8) & 0xFF), ++ .b = @truncate(cfg.fg_color & 0xFF), ++ }); ++ ++ // Update background ++ wrapper.terminal.colors.background = color.DynamicRGB.init(.{ ++ .r = @truncate((cfg.bg_color >> 16) & 0xFF), ++ .g = @truncate((cfg.bg_color >> 8) & 0xFF), ++ .b = @truncate(cfg.bg_color & 0xFF), ++ }); ++ ++ // Update cursor ++ wrapper.terminal.colors.cursor = color.DynamicRGB.init(.{ ++ .r = @truncate((cfg.cursor_color >> 16) & 0xFF), ++ .g = @truncate((cfg.cursor_color >> 8) & 0xFF), ++ .b = @truncate(cfg.cursor_color & 0xFF), ++ }); ++ ++ // Update palette (all 16 colors, no sentinel) ++ for (cfg.palette, 0..) |palette_color, i| { ++ wrapper.terminal.colors.palette.set(@intCast(i), .{ ++ .r = @truncate((palette_color >> 16) & 0xFF), ++ .g = @truncate((palette_color >> 8) & 0xFF), ++ .b = @truncate(palette_color & 0xFF), ++ }); ++ } ++ ++ // Force full redraw on next render ++ wrapper.force_full_redraw = true; ++} ++ +// ============================================================================ +// RenderState API - High-performance rendering +// ============================================================================ @@ -941,17 +993,19 @@ index 000000000..73ae2e6fa + const screen_switched = current_is_alternate != wrapper.last_screen_is_alternate; + wrapper.last_screen_is_alternate = current_is_alternate; + -+ // When screen switches, we must fully reset the render state to avoid -+ // stale cached cell data from the previous screen buffer. -+ if (screen_switched) { ++ // When screen switches or colors change, we must fully reset the render ++ // state to avoid stale cached cell data. ++ const needs_full_reset = screen_switched or wrapper.force_full_redraw; ++ if (needs_full_reset) { + wrapper.render_state.deinit(wrapper.alloc); + wrapper.render_state = RenderState.empty; ++ wrapper.force_full_redraw = false; + } -+ ++ + wrapper.render_state.update(wrapper.alloc, &wrapper.terminal) catch return .full; -+ -+ // If screen switched, always return full dirty to force complete redraw -+ if (screen_switched) { ++ ++ // If we did a full reset, always return full dirty to force complete redraw ++ if (needs_full_reset) { + return .full; + } +