mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
apprt: rename set_bg/fg to "color_change" to report all color changes
This commit is contained in:
@ -512,19 +512,20 @@ typedef struct {
|
||||
ghostty_input_trigger_s trigger;
|
||||
} ghostty_action_key_sequence_s;
|
||||
|
||||
// apprt.action.SetBackground
|
||||
typedef struct {
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
} ghostty_action_set_background_s;
|
||||
// apprt.action.ColorKind
|
||||
typedef enum {
|
||||
GHOSTTY_ACTION_COLOR_KIND_FOREGROUND = -1,
|
||||
GHOSTTY_ACTION_COLOR_KIND_BACKGROUND = -2,
|
||||
GHOSTTY_ACTION_COLOR_KIND_CURSOR = -3,
|
||||
} ghostty_action_color_kind_e;
|
||||
|
||||
// apprt.action.SetForeground
|
||||
// apprt.action.ColorChange
|
||||
typedef struct {
|
||||
ghostty_action_color_kind_e kind;
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
} ghostty_action_set_foreground_s;
|
||||
} ghostty_action_color_change_s;
|
||||
|
||||
// apprt.Action.Key
|
||||
typedef enum {
|
||||
@ -559,8 +560,7 @@ typedef enum {
|
||||
GHOSTTY_ACTION_QUIT_TIMER,
|
||||
GHOSTTY_ACTION_SECURE_INPUT,
|
||||
GHOSTTY_ACTION_KEY_SEQUENCE,
|
||||
GHOSTTY_ACTION_SET_BACKGROUND,
|
||||
GHOSTTY_ACTION_SET_FOREGROUND,
|
||||
GHOSTTY_ACTION_COLOR_CHANGE,
|
||||
} ghostty_action_tag_e;
|
||||
|
||||
typedef union {
|
||||
@ -583,8 +583,7 @@ typedef union {
|
||||
ghostty_action_quit_timer_e quit_timer;
|
||||
ghostty_action_secure_input_e secure_input;
|
||||
ghostty_action_key_sequence_s key_sequence;
|
||||
ghostty_action_set_background_s set_background;
|
||||
ghostty_action_set_foreground_s set_foreground;
|
||||
ghostty_action_color_change_s color_change;
|
||||
} ghostty_action_u;
|
||||
|
||||
typedef struct {
|
||||
|
@ -521,6 +521,8 @@ extension Ghostty {
|
||||
case GHOSTTY_ACTION_KEY_SEQUENCE:
|
||||
keySequence(app, target: target, v: action.action.key_sequence)
|
||||
|
||||
case GHOSTTY_ACTION_COLOR_CHANGE:
|
||||
fallthrough
|
||||
case GHOSTTY_ACTION_CLOSE_ALL_WINDOWS:
|
||||
fallthrough
|
||||
case GHOSTTY_ACTION_TOGGLE_TAB_OVERVIEW:
|
||||
|
@ -799,21 +799,21 @@ pub fn handleMessage(self: *Surface, msg: Message) !void {
|
||||
}, .unlocked);
|
||||
},
|
||||
|
||||
.set_background => |color| {
|
||||
try self.rt_app.performAction(
|
||||
.{ .surface = self },
|
||||
.set_background,
|
||||
.{ .r = color.r, .g = color.g, .b = color.b },
|
||||
);
|
||||
},
|
||||
|
||||
.set_foreground => |color| {
|
||||
try self.rt_app.performAction(
|
||||
.{ .surface = self },
|
||||
.set_background,
|
||||
.{ .r = color.r, .g = color.g, .b = color.b },
|
||||
);
|
||||
},
|
||||
.color_change => |change| try self.rt_app.performAction(
|
||||
.{ .surface = self },
|
||||
.color_change,
|
||||
.{
|
||||
.kind = switch (change.kind) {
|
||||
.background => .background,
|
||||
.foreground => .foreground,
|
||||
.cursor => .cursor,
|
||||
.palette => |v| @enumFromInt(v),
|
||||
},
|
||||
.r = change.color.r,
|
||||
.g = change.color.g,
|
||||
.b = change.color.b,
|
||||
},
|
||||
),
|
||||
|
||||
.set_mouse_shape => |shape| {
|
||||
log.debug("changing mouse shape: {}", .{shape});
|
||||
|
@ -186,11 +186,9 @@ pub const Action = union(Key) {
|
||||
/// key mode because other input may be ignored.
|
||||
key_sequence: KeySequence,
|
||||
|
||||
/// The terminal background color was changed.
|
||||
set_background: SetBackground,
|
||||
|
||||
/// The terminal foreground color was changed.
|
||||
set_foreground: SetForeground,
|
||||
/// A terminal color was changed programmatically through things
|
||||
/// such as OSC 10/11.
|
||||
color_change: ColorChange,
|
||||
|
||||
/// Sync with: ghostty_action_tag_e
|
||||
pub const Key = enum(c_int) {
|
||||
@ -225,8 +223,7 @@ pub const Action = union(Key) {
|
||||
quit_timer,
|
||||
secure_input,
|
||||
key_sequence,
|
||||
set_background,
|
||||
set_foreground,
|
||||
color_change,
|
||||
};
|
||||
|
||||
/// Sync with: ghostty_action_u
|
||||
@ -457,14 +454,19 @@ pub const KeySequence = union(enum) {
|
||||
}
|
||||
};
|
||||
|
||||
pub const SetBackground = extern struct {
|
||||
pub const ColorChange = extern struct {
|
||||
kind: ColorKind,
|
||||
r: u8,
|
||||
g: u8,
|
||||
b: u8,
|
||||
};
|
||||
|
||||
pub const SetForeground = extern struct {
|
||||
r: u8,
|
||||
g: u8,
|
||||
b: u8,
|
||||
pub const ColorKind = enum(c_int) {
|
||||
// Negative numbers indicate some named kind
|
||||
foreground = -1,
|
||||
background = -2,
|
||||
cursor = -3,
|
||||
|
||||
// 0+ values indicate a palette index
|
||||
_,
|
||||
};
|
||||
|
@ -223,8 +223,7 @@ pub const App = struct {
|
||||
.mouse_over_link,
|
||||
.cell_size,
|
||||
.renderer_health,
|
||||
.set_foreground,
|
||||
.set_background,
|
||||
.color_change,
|
||||
=> log.info("unimplemented action={}", .{action}),
|
||||
}
|
||||
}
|
||||
|
@ -485,8 +485,7 @@ pub fn performAction(
|
||||
.key_sequence,
|
||||
.render_inspector,
|
||||
.renderer_health,
|
||||
.set_foreground,
|
||||
.set_background,
|
||||
.color_change,
|
||||
=> log.warn("unimplemented action={}", .{action}),
|
||||
}
|
||||
}
|
||||
|
@ -70,11 +70,11 @@ pub const Message = union(enum) {
|
||||
/// unless the surface exits.
|
||||
password_input: bool,
|
||||
|
||||
/// The terminal background color was changed.
|
||||
set_background: terminal.color.RGB,
|
||||
|
||||
/// The terminal foreground color was changed.
|
||||
set_foreground: terminal.color.RGB,
|
||||
/// A terminal color was changed using OSC sequences.
|
||||
color_change: struct {
|
||||
kind: terminal.osc.Command.ColorKind,
|
||||
color: terminal.color.RGB,
|
||||
},
|
||||
|
||||
pub const ReportTitleStyle = enum {
|
||||
csi_21_t,
|
||||
|
@ -1215,14 +1215,12 @@ pub const StreamHandler = struct {
|
||||
_ = self.renderer_mailbox.push(.{
|
||||
.foreground_color = color,
|
||||
}, .{ .forever = {} });
|
||||
self.surfaceMessageWriter(.{ .set_background = color });
|
||||
},
|
||||
.background => {
|
||||
self.background_color = color;
|
||||
_ = self.renderer_mailbox.push(.{
|
||||
.background_color = color,
|
||||
}, .{ .forever = {} });
|
||||
self.surfaceMessageWriter(.{ .set_background = color });
|
||||
},
|
||||
.cursor => {
|
||||
self.cursor_color = color;
|
||||
@ -1231,6 +1229,12 @@ pub const StreamHandler = struct {
|
||||
}, .{ .forever = {} });
|
||||
},
|
||||
}
|
||||
|
||||
// Notify the surface of the color change
|
||||
self.surfaceMessageWriter(.{ .color_change = .{
|
||||
.kind = kind,
|
||||
.color = color,
|
||||
} });
|
||||
}
|
||||
|
||||
pub fn resetColor(
|
||||
|
Reference in New Issue
Block a user