From 2fe12a050ef8d29aa40d05b5b9ccae066843dd64 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 30 Sep 2025 15:13:18 +0200 Subject: [PATCH] feat: report color scheme changes from terminal and add command set_color_scheme --- src/tui/tui.zig | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/tui/tui.zig b/src/tui/tui.zig index db3c6b1..d8db075 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -458,12 +458,12 @@ fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) !void { } if (try m.match(.{ "color_scheme", "dark" })) { - self.color_scheme = .dark; + self.set_color_scheme(.dark); return; } if (try m.match(.{ "color_scheme", "light" })) { - self.color_scheme = .light; + self.set_color_scheme(.light); return; } @@ -786,6 +786,11 @@ fn set_theme_by_name(self: *Self, name: []const u8, action: enum { none, store } } } +fn set_color_scheme(self: *Self, color_scheme: @TypeOf(self.color_scheme)) void { + self.color_scheme = color_scheme; + self.logger.print("color scheme: {s} ({s})", .{ @tagName(self.color_scheme), self.current_theme().name }); +} + fn current_theme(self: *const Self) *const Widget.Theme { return switch (self.color_scheme) { .dark => &self.dark_theme, @@ -908,12 +913,21 @@ const cmds = struct { } pub const toggle_highlight_columns_meta: Meta = .{ .description = "Toggle highlight columns" }; + pub fn set_color_scheme(self: *Self, ctx: Ctx) Result { + self.set_color_scheme(if (try ctx.args.match(.{"dark"})) + .dark + else if (try ctx.args.match(.{"light"})) + .light + else + .dark); + } + pub const set_color_scheme_meta: Meta = .{ .description = "Toggle dark/light color scheme" }; + pub fn toggle_color_scheme(self: *Self, _: Ctx) Result { - self.color_scheme = switch (self.color_scheme) { + self.set_color_scheme(switch (self.color_scheme) { .dark => .light, .light => .dark, - }; - self.logger.print("color scheme: {s}", .{@tagName(self.color_scheme)}); + }); } pub const toggle_color_scheme_meta: Meta = .{ .description = "Toggle dark/light color scheme" };