1use std::sync::LazyLock;
2
3use ratatui::{
4 style::{
5 Modifier,
6 Style,
7 Stylize,
8 },
9 text::Span,
10};
11
12pub struct Theme {
13 pub inactive_border: Style,
15 pub active_border: Style,
16 #[allow(unused)]
17 pub popup_border: Style,
18 pub app_title: Style,
19 pub help_popup: Style,
20 pub inline_timestamp: Style,
21 pub cli_flag: Style,
23 pub help_key: Style,
24 pub help_desc: Style,
25 pub fancy_help_desc: Style,
26 pub pid_success: Style,
28 pub pid_failure: Style,
29 pub pid_enoent: Style,
30 pub pid_in_msg: Style,
31 pub comm: Style,
32 pub tracer_info: Style,
33 pub tracer_warning: Style,
34 pub tracer_error: Style,
35 pub new_child_pid: Style,
36 pub tracer_event: Style,
37 pub inline_tracer_error: Style,
38 pub filename: Style,
39 pub modified_fd_in_cmdline: Style,
40 pub removed_fd_in_cmdline: Style,
41 pub cloexec_fd_in_cmdline: Style,
42 pub added_fd_in_cmdline: Style,
43 pub arg0: Style,
44 pub cwd: Style,
45 pub deleted_env_var: Style,
46 pub modified_env_var: Style,
47 pub added_env_var: Style,
48 pub argv: Style,
49 pub search_match: Style,
51 pub query_no_match: Style,
52 pub query_match_current_no: Style,
53 pub query_match_total_cnt: Style,
54 pub empty_field: Style,
56 pub uid_gid_name: Style,
57 pub uid_gid_value: Style,
58 pub exec_result_success: Style,
59 pub exec_result_failure: Style,
60 pub value_unknown: Style,
61 pub fd_closed: Style,
62 pub plus_sign: Style,
63 pub minus_sign: Style,
64 pub equal_sign: Style,
65 pub added_env_key: Style,
66 pub added_env_val: Style,
67 pub removed_env_key: Style,
68 pub removed_env_val: Style,
69 pub unchanged_env_key: Style,
70 pub unchanged_env_val: Style,
71 pub fd_label: Style,
72 pub fd_number_label: Style,
73 pub sublabel: Style,
74 pub selected_label: Style,
75 pub label: Style,
76 pub selection_indicator: Style,
77 pub open_flag_cloexec: Style,
78 pub open_flag_access_mode: Style,
79 pub open_flag_creation: Style,
80 pub open_flag_status: Style,
81 pub open_flag_other: Style,
82 pub visual_separator: Style,
83 pub error_popup: Style,
85 pub info_popup: Style,
86 pub active_tab: Style,
88 pub status_process_running: Style,
90 pub status_process_paused: Style,
91 pub status_process_detached: Style,
92 pub status_exec_error: Style,
93 pub status_process_exited_normally: Style,
94 pub status_process_exited_abnormally: Style,
95 pub status_process_killed: Style,
96 pub status_process_terminated: Style,
97 pub status_process_interrupted: Style,
98 pub status_process_segfault: Style,
99 pub status_process_aborted: Style,
100 pub status_process_sigill: Style,
101 pub status_process_signaled: Style,
102 pub status_internal_failure: Style,
103 pub breakpoint_title_selected: Style,
105 pub breakpoint_title: Style,
106 pub breakpoint_pattern_type_label: Style,
107 pub breakpoint_pattern: Style,
108 pub breakpoint_info_label: Style,
109 pub breakpoint_info_label_active: Style,
110 pub breakpoint_info_value: Style,
111 pub hit_entry_pid: Style,
113 pub hit_entry_plain_text: Style,
114 pub hit_entry_breakpoint_stop: Style,
115 pub hit_entry_breakpoint_pattern: Style,
116 pub hit_entry_no_breakpoint_pattern: Style,
117 pub hit_manager_default_command: Style,
118 pub hit_manager_no_default_command: Style,
119 pub backtrace_parent_spawns: Span<'static>,
121 pub backtrace_parent_becomes: Span<'static>,
122 pub backtrace_parent_unknown: Span<'static>,
123}
124
125impl Default for Theme {
126 fn default() -> Self {
127 Self {
128 inactive_border: Style::default().white(),
129 active_border: Style::default().cyan(),
130 popup_border: Style::default(),
131 app_title: Style::default().bold(),
132 help_popup: Style::default().black().on_gray(),
133 inline_timestamp: Style::default().light_cyan(),
134 cli_flag: Style::default().yellow().on_dark_gray().bold(),
136 help_key: Style::default().black().on_cyan().bold(),
137 help_desc: Style::default()
138 .light_green()
139 .on_dark_gray()
140 .italic()
141 .bold(),
142 fancy_help_desc: Style::default().red().on_light_yellow().bold().slow_blink(),
143 pid_success: Style::default().light_green(),
145 pid_failure: Style::default().light_red(),
146 pid_enoent: Style::default().light_yellow(),
147 pid_in_msg: Style::default().light_magenta(),
148 comm: Style::default().cyan(),
149 tracer_info: Style::default().light_blue().bold(),
150 tracer_warning: Style::default().light_yellow().bold(),
151 tracer_error: Style::default().light_red().bold(),
152 new_child_pid: Style::default().yellow(),
153 tracer_event: Style::default().magenta(),
154 inline_tracer_error: Style::default().light_red().bold().slow_blink(),
155 filename: Style::default().light_blue(),
156 modified_fd_in_cmdline: Style::default().light_yellow().bold(),
157 removed_fd_in_cmdline: Style::default().light_red().bold(),
158 added_fd_in_cmdline: Style::default().light_green().bold(),
159 cloexec_fd_in_cmdline: Style::default().light_red().bold().italic(),
160 arg0: Style::default().white().italic(),
161 cwd: Style::default().light_cyan(),
162 deleted_env_var: Style::default().light_red(),
163 modified_env_var: Style::default().yellow(),
164 added_env_var: Style::default().green(),
165 argv: Style::default(),
166 search_match: Style::default().add_modifier(Modifier::REVERSED),
168 query_no_match: Style::default().light_red(),
169 query_match_current_no: Style::default().light_cyan(),
170 query_match_total_cnt: Style::default().white(),
171 empty_field: Style::default().bold(),
173 uid_gid_name: Style::default().white().bold(),
174 uid_gid_value: Style::default().italic(),
175 exec_result_success: Style::default().green(),
176 exec_result_failure: Style::default().red(),
177 fd_closed: Style::default().light_red(),
178 value_unknown: Style::default().light_red().italic(),
179 plus_sign: Style::default().light_green(),
180 minus_sign: Style::default().light_red(),
181 equal_sign: Style::default().yellow().bold(),
182 added_env_key: Style::default().light_green().bold(),
183 added_env_val: Style::default().light_green(),
184 removed_env_key: Style::default().light_red().bold(),
185 removed_env_val: Style::default().light_red(),
186 unchanged_env_key: Style::default().white().bold(),
187 unchanged_env_val: Style::default().white(),
188 fd_label: Style::default().black().on_light_green().bold(),
189 fd_number_label: Style::default().white().on_light_magenta().bold(),
190 sublabel: Style::default().white().bold(),
191 label: Style::default().black().on_light_green().bold(),
192 selected_label: Style::default().white().on_light_magenta().bold(),
193 selection_indicator: Style::default().light_green().bold(),
194 open_flag_cloexec: Style::default().light_green().bold(),
195 open_flag_access_mode: Style::default().light_blue().bold(),
196 open_flag_creation: Style::default().light_cyan().bold(),
197 open_flag_status: Style::default().light_yellow().bold(),
198 open_flag_other: Style::default().light_red().bold(),
199 visual_separator: Style::default().light_green(),
200 error_popup: Style::default().white().on_red(),
202 info_popup: Style::default().black().on_white(),
203 active_tab: Style::default().white().on_magenta(),
205 status_process_running: Style::new().light_green().bold(),
207 status_process_paused: Style::new().yellow().bold(),
208 status_process_detached: Style::new().light_magenta().bold(),
209 status_exec_error: Style::new().light_red().bold(),
210 status_process_exited_normally: Style::new().green().bold(),
211 status_process_exited_abnormally: Style::new().light_yellow().bold(),
212 status_process_killed: Style::new().light_red().bold().italic(),
213 status_process_terminated: Style::new().light_red().bold().italic(),
214 status_process_interrupted: Style::new().light_red().bold().italic(),
215 status_process_segfault: Style::new().light_red().bold().italic(),
216 status_process_aborted: Style::new().light_red().bold().italic(),
217 status_process_sigill: Style::new().light_red().bold().italic(),
218 status_process_signaled: Style::new().light_red().bold().italic(),
219 status_internal_failure: Style::new().light_red().bold().italic(),
220 breakpoint_title_selected: Style::default().white().bold().on_magenta(),
222 breakpoint_title: Style::default().white().bold(),
223 breakpoint_pattern_type_label: Style::default().black().on_light_green(),
224 breakpoint_pattern: Style::default().cyan().bold(),
225 breakpoint_info_label: Style::default().black().on_light_yellow(),
226 breakpoint_info_label_active: Style::default().black().on_light_green(),
227 breakpoint_info_value: Style::default().black().bold().on_light_cyan(),
228 hit_entry_pid: Style::default().light_magenta(),
230 hit_entry_plain_text: Style::default().bold().white(),
231 hit_entry_breakpoint_stop: Style::default().yellow().bold(),
232 hit_entry_breakpoint_pattern: Style::default().cyan().bold(),
233 hit_entry_no_breakpoint_pattern: Style::default().light_red().bold(),
234 hit_manager_default_command: Style::default().light_cyan().bold(),
235 hit_manager_no_default_command: Style::default().light_yellow().bold(),
236 backtrace_parent_spawns: Span::raw(" S ").on_gray().light_blue().bold(),
238 backtrace_parent_becomes: Span::raw(" B ").on_white().light_red().bold(),
239 backtrace_parent_unknown: Span::raw(" "),
240 }
241 }
242}
243
244pub static THEME: LazyLock<Theme> = LazyLock::new(Theme::default);