From 11d6770913a0e256f7717f25226992ee74f8d048 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Fri, 28 Nov 2025 15:20:50 +0100 Subject: [PATCH] fix: avoid setting the terminal background color until we know what the system color scheme is This was in the hope that it might fix kitty's behavior with enable_terminal_color_scheme enabled. Unfortunately it makes no difference to kitty (kitty stops sending color scheme updates). I am commiting these changes anyway as it seems a little cleaner to avoid setting the background color twice on startup. --- src/renderer/vaxis/renderer.zig | 2 ++ src/tui/tui.zig | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/renderer/vaxis/renderer.zig b/src/renderer/vaxis/renderer.zig index b114b29..5f6376c 100644 --- a/src/renderer/vaxis/renderer.zig +++ b/src/renderer/vaxis/renderer.zig @@ -385,6 +385,8 @@ pub fn process_renderer_event(self: *Self, msg: []const u8) Error!void { self.queries_done = true; self.vx.enableDetectedFeatures(self.tty.writer()) catch |e| self.logger.err("enable features", e); self.vx.setMouseMode(self.tty.writer(), true) catch return error.TtyWriteError; + self.logger.print("capability queries complete", .{}); + if (self.dispatch_event) |f| f(self.handler_ctx, try self.fmtmsg(.{"capability_detection_complete"})); }, .cap_kitty_keyboard => { self.logger.print("kitty keyboard capability detected", .{}); diff --git a/src/tui/tui.zig b/src/tui/tui.zig index a61f193..12786ff 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -207,7 +207,6 @@ fn init(allocator: Allocator) InitError!*Self { } self.mainview_ = try MainView.create(allocator); resize(); - self.set_terminal_style(self.current_theme()); try save_config(); try self.init_input_namespace(); if (tp.env.get().is("restore-session")) { @@ -516,15 +515,23 @@ fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) !void { } if (try m.match(.{ "color_scheme", "dark" })) { + self.logger.print("system color scheme event: dark", .{}); self.set_color_scheme(.dark); return; } if (try m.match(.{ "color_scheme", "light" })) { + self.logger.print("system color scheme event: light", .{}); self.set_color_scheme(.light); return; } + if (try m.match(.{"capability_detection_complete"})) { + if (!self.rdr_.vx.caps.color_scheme_updates) + self.set_terminal_style(self.current_theme()); + return; + } + return tp.unexpected(m); } @@ -1769,6 +1776,7 @@ pub const fallbacks: []const FallBack = &[_]FallBack{ }; fn set_terminal_style(self: *Self, theme_: *const Widget.Theme) void { + self.logger.print("set terminal style {s}", .{theme_.name}); self.rdr_.set_terminal_cursor_color(theme_.editor_cursor.bg.?); if (self.rdr_.vx.caps.multi_cursor) self.rdr_.set_terminal_secondary_cursor_color(theme_.editor_cursor_secondary.bg orelse theme_.editor_cursor.bg.?);