From 30c9dec76b706c5b26cfad3fb0c25c4850ff1175 Mon Sep 17 00:00:00 2001 From: Elias Andualem Date: Tue, 31 Mar 2026 19:28:46 +0800 Subject: [PATCH 1/2] add all C struct layout metadata for WASM --- src/terminal/c/terminal.zig | 3 +++ src/terminal/c/types.zig | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/terminal/c/terminal.zig b/src/terminal/c/terminal.zig index c3ad20771..ec749ffae 100644 --- a/src/terminal/c/terminal.zig +++ b/src/terminal/c/terminal.zig @@ -392,6 +392,9 @@ fn setTyped( return .success; } +/// C: GhosttyDeviceAttributes +pub const DeviceAttributes = Effects.CDeviceAttributes; + /// C: GhosttyTerminalScrollViewport pub const ScrollViewport = ZigTerminal.ScrollViewport.C; diff --git a/src/terminal/c/types.zig b/src/terminal/c/types.zig index bd2abc60f..8b46ec2fb 100644 --- a/src/terminal/c/types.zig +++ b/src/terminal/c/types.zig @@ -6,6 +6,10 @@ //! build structs without hardcoding byte offsets. const std = @import("std"); const lib = @import("../lib.zig"); +const color = @import("../color.zig"); +const mouse_event = @import("mouse_event.zig"); +const point = @import("../point.zig"); +const size_report = @import("size_report.zig"); const terminal = @import("terminal.zig"); const formatter = @import("formatter.zig"); @@ -25,11 +29,23 @@ pub const structs: std.StaticStringMap(StructInfo) = .initComptime(.{ .{ "GhosttyStyleColor", StructInfo.init(style_c.Color) }, .{ "GhosttyMouseEncoderSize", StructInfo.init(mouse_encode.Size) }, .{ "GhosttyGridRef", StructInfo.init(grid_ref.CGridRef) }, + .{ "GhosttyColorRgb", StructInfo.init(color.RGB.C) }, + .{ "GhosttyDeviceAttributes", StructInfo.init(terminal.DeviceAttributes) }, + .{ "GhosttyDeviceAttributesPrimary", StructInfo.init(terminal.DeviceAttributes.Primary) }, + .{ "GhosttyDeviceAttributesSecondary", StructInfo.init(terminal.DeviceAttributes.Secondary) }, + .{ "GhosttyDeviceAttributesTertiary", StructInfo.init(terminal.DeviceAttributes.Tertiary) }, + .{ "GhosttyMousePosition", StructInfo.init(mouse_event.Position) }, + .{ "GhosttyPoint", StructInfo.init(point.Point.C) }, + .{ "GhosttyPointCoordinate", StructInfo.init(point.Coordinate) }, + .{ "GhosttySizeReportSize", StructInfo.init(size_report.Size) }, + .{ "GhosttyString", StructInfo.init(lib.String) }, + .{ "GhosttyTerminalScrollbar", StructInfo.init(terminal.TerminalScrollbar) }, + .{ "GhosttyTerminalScrollViewport", StructInfo.init(terminal.ScrollViewport) }, }); /// The comptime-generated JSON string of all structs. pub const json: [:0]const u8 = json: { - @setEvalBranchQuota(50000); + @setEvalBranchQuota(100000); var counter: std.Io.Writer.Discarding = .init(&.{}); jsonWriteAll(&counter.writer) catch unreachable; From 1d0a247c20aa009124a0ba75cf9e460b7fa4aa1d Mon Sep 17 00:00:00 2001 From: Elias Andualem Date: Tue, 31 Mar 2026 19:34:52 +0800 Subject: [PATCH 2/2] sort map alphabetically --- src/terminal/c/types.zig | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/terminal/c/types.zig b/src/terminal/c/types.zig index 8b46ec2fb..b808bf38b 100644 --- a/src/terminal/c/types.zig +++ b/src/terminal/c/types.zig @@ -20,25 +20,25 @@ const grid_ref = @import("grid_ref.zig"); /// All C API structs and their Ghostty C names. pub const structs: std.StaticStringMap(StructInfo) = .initComptime(.{ - .{ "GhosttyTerminalOptions", StructInfo.init(terminal.Options) }, - .{ "GhosttyFormatterTerminalOptions", StructInfo.init(formatter.TerminalOptions) }, - .{ "GhosttyFormatterTerminalExtra", StructInfo.init(formatter.TerminalOptions.Extra) }, - .{ "GhosttyFormatterScreenExtra", StructInfo.init(formatter.ScreenOptions.Extra) }, - .{ "GhosttyRenderStateColors", StructInfo.init(render.Colors) }, - .{ "GhosttyStyle", StructInfo.init(style_c.Style) }, - .{ "GhosttyStyleColor", StructInfo.init(style_c.Color) }, - .{ "GhosttyMouseEncoderSize", StructInfo.init(mouse_encode.Size) }, - .{ "GhosttyGridRef", StructInfo.init(grid_ref.CGridRef) }, .{ "GhosttyColorRgb", StructInfo.init(color.RGB.C) }, .{ "GhosttyDeviceAttributes", StructInfo.init(terminal.DeviceAttributes) }, .{ "GhosttyDeviceAttributesPrimary", StructInfo.init(terminal.DeviceAttributes.Primary) }, .{ "GhosttyDeviceAttributesSecondary", StructInfo.init(terminal.DeviceAttributes.Secondary) }, .{ "GhosttyDeviceAttributesTertiary", StructInfo.init(terminal.DeviceAttributes.Tertiary) }, + .{ "GhosttyFormatterTerminalOptions", StructInfo.init(formatter.TerminalOptions) }, + .{ "GhosttyFormatterTerminalExtra", StructInfo.init(formatter.TerminalOptions.Extra) }, + .{ "GhosttyFormatterScreenExtra", StructInfo.init(formatter.ScreenOptions.Extra) }, + .{ "GhosttyGridRef", StructInfo.init(grid_ref.CGridRef) }, + .{ "GhosttyMouseEncoderSize", StructInfo.init(mouse_encode.Size) }, .{ "GhosttyMousePosition", StructInfo.init(mouse_event.Position) }, .{ "GhosttyPoint", StructInfo.init(point.Point.C) }, .{ "GhosttyPointCoordinate", StructInfo.init(point.Coordinate) }, + .{ "GhosttyRenderStateColors", StructInfo.init(render.Colors) }, .{ "GhosttySizeReportSize", StructInfo.init(size_report.Size) }, .{ "GhosttyString", StructInfo.init(lib.String) }, + .{ "GhosttyStyle", StructInfo.init(style_c.Style) }, + .{ "GhosttyStyleColor", StructInfo.init(style_c.Color) }, + .{ "GhosttyTerminalOptions", StructInfo.init(terminal.Options) }, .{ "GhosttyTerminalScrollbar", StructInfo.init(terminal.TerminalScrollbar) }, .{ "GhosttyTerminalScrollViewport", StructInfo.init(terminal.ScrollViewport) }, });