Skip to content

Commit 2dc8833

Browse files
committed
Add a [theme256] fallback for terminals that don't support truecolor
1 parent cc90c44 commit 2dc8833

File tree

9 files changed

+986
-568
lines changed

9 files changed

+986
-568
lines changed

src/app.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,12 @@ impl App {
124124
fn render(&mut self) -> Result<()> {
125125
self.terminal.draw(|frame: &mut Frame| {
126126
let area = frame.area();
127-
self.root
128-
.render(area, frame, &self.mode, &self.config.theme);
127+
let theme = if terminal::supports_truecolor() {
128+
&self.config.theme
129+
} else {
130+
&self.config.theme256
131+
};
132+
self.root.render(area, frame, &self.mode, theme);
129133
})?;
130134
Ok(())
131135
}

src/app/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ pub struct Config {
4040
pub log_level: LevelFilter,
4141
pub templates: Templates,
4242
pub theme: Theme,
43+
pub theme256: Theme,
4344
pub ui: UiConfig,
4445
}
4546

src/app/config/default_config.rs

Lines changed: 251 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,71 +27,98 @@ frame_delay_milliseconds = 30
2727
[theme]
2828
alert_bg = "#373424"
2929
alert_fg = "#9f8800"
30+
alert_modifiers = []
3031
3132
alert_error_bg = "#373424"
3233
alert_error_fg = "#DC322F"
34+
alert_error_modifiers = []
3335
3436
alert_info_bg = "#373424"
3537
alert_info_fg = "#73c991"
38+
alert_info_modifiers = []
3639
3740
alert_warning_bg = "#373424"
3841
alert_warning_fg = "#E6DB74"
42+
alert_warning_modifiers = []
3943
4044
header_active_bg = "#CCC8B0"
4145
header_active_fg = "#1D1F21"
46+
header_active_modifiers = []
4247
header_bg = "#373424"
4348
header_fg = "#CCC8B0"
49+
header_modifiers = []
4450
4551
help_bg = "#373424"
4652
help_fg = "#9C9977"
53+
help_modifiers = []
4754
4855
notice_clipboard_bg = "#70C0B1"
4956
notice_clipboard_fg = "#1D1F21"
57+
notice_clipboard_modifiers = []
5058
notice_filter_bg = "#777755"
5159
notice_filter_fg = "#1D1F21"
60+
notice_filter_modifiers = []
5261
notice_progress_bg = "#006B6B"
5362
notice_progress_fg = "#70C0B1"
63+
notice_progress_modifiers = []
5464
5565
prompt_input_bg = "#373424"
5666
prompt_input_fg = "#CCC8B0"
67+
prompt_input_modifiers = []
5768
prompt_label_bg = "#9C9977"
5869
prompt_label_fg = "#1D1F21"
70+
prompt_label_modifiers = []
5971
prompt_cursor_bg = "#CCC8B0"
6072
prompt_cursor_fg = "#1D1F21"
73+
prompt_cursor_modifiers = []
6174
prompt_selection_bg = "#9C9977"
6275
prompt_selection_fg = "#1D1F21"
76+
prompt_selection_modifiers = []
6377
6478
status_directory_bg = "#33A999"
6579
status_directory_fg = "#1D1F21"
80+
status_directory_modifiers = []
6681
status_directory_label_bg = "#006B6B"
6782
status_directory_label_fg = "#C5C8C6"
83+
status_directory_label_modifiers = []
6884
status_selected_bg = "#33A999"
6985
status_selected_fg = "#1D1F21"
86+
status_selected_modifiers = []
7087
status_selected_label_bg = "#006B6B"
7188
status_selected_label_fg = "#C5C8C6"
89+
status_selected_label_modifiers = []
7290
7391
table_body_bg = "#373424"
7492
table_body_fg = "#FFFFFF"
93+
table_body_modifiers = []
7594
table_copied_bg = "#33A999"
7695
table_copied_fg = "#006400" # Dark Green
96+
table_copied_modifiers = []
7797
table_cut_bg = "#33A999"
7898
table_cut_fg = "#800080" # Purple
99+
table_cut_modifiers = []
79100
table_header_active_bg = "#9C9977"
80101
table_header_active_fg = "#1D1F21"
102+
table_header_active_modifiers = []
81103
table_header_bg = "#777755"
82104
table_header_fg = "#1D1F21"
105+
table_header_modifiers = []
83106
table_scrollbar_begin_bg = "#777755"
84-
# Whether to show the up/down arrows at the beginning and end of the scrollbar
85107
table_scrollbar_begin_end_enabled = false
86108
table_scrollbar_begin_fg = "#373424"
109+
table_scrollbar_begin_modifiers = []
87110
table_scrollbar_end_bg = "#777755"
88111
table_scrollbar_end_fg = "#373424"
112+
table_scrollbar_end_modifiers = []
89113
table_scrollbar_thumb_bg = "#373424"
90114
table_scrollbar_thumb_fg = "#CCC8B0"
115+
table_scrollbar_thumb_modifiers = []
91116
table_scrollbar_track_bg = "#423F2E"
92117
table_scrollbar_track_fg = "#777755"
118+
table_scrollbar_track_modifiers = []
93119
table_selected_bg = "#CCC8B0"
94120
table_selected_fg = "#1D1F21"
121+
table_selected_modifiers = []
95122
96123
[theme.file_modified_date]
97124
less_than_minute_bg = ""
@@ -131,7 +158,7 @@ pib_fg = "#FF0000" # Red
131158
pib_modifiers = []
132159
133160
[theme.file_types]
134-
# Whether to apply colors defined in the $LS_COLORS environment variable on top of colors configured in this section
161+
# Whether to apply colors defined in the $LS_COLORS environment variable (if set) on top of colors configured in this section
135162
ls_colors_take_precedence = true
136163
137164
# Normal file default (rs=0)
@@ -220,4 +247,226 @@ setgid_modifiers = []
220247
setuid_bg = "#D70000" # 160
221248
setuid_fg = "#FFFFD7" # 230
222249
setuid_modifiers = []
250+
251+
[theme256]
252+
alert_bg = "#3a3a3a" # 237
253+
alert_fg = "#d7af00" # 178
254+
alert_modifiers = []
255+
256+
alert_error_bg = "#3a3a3a" # 237
257+
alert_error_fg = "#d70000" # 160
258+
alert_error_modifiers = []
259+
260+
alert_info_bg = "#3a3a3a" # 237
261+
alert_info_fg = "#5fd787" # 78
262+
alert_info_modifiers = []
263+
264+
alert_warning_bg = "#3a3a3a" # 237
265+
alert_warning_fg = "#ffff87" # 228
266+
alert_warning_modifiers = []
267+
268+
header_active_bg = "#d7d7af" # 187
269+
header_active_fg = "#262626" # 235
270+
header_active_modifiers = []
271+
header_bg = "#3a3a3a" # 237
272+
header_fg = "#d7d7af" # 187
273+
header_modifiers = []
274+
275+
help_bg = "#3a3a3a" # 237
276+
help_fg = "#d7af87" # 180
277+
help_modifiers = []
278+
279+
notice_clipboard_bg = "#5fd7af" # 79
280+
notice_clipboard_fg = "#262626" # 235
281+
notice_clipboard_modifiers = []
282+
notice_filter_bg = "#87875f" # 101
283+
notice_filter_fg = "#262626" # 235
284+
notice_filter_modifiers = []
285+
notice_progress_bg = "#008787" # 30
286+
notice_progress_fg = "#5fd7af" # 79
287+
notice_progress_modifiers = []
288+
289+
prompt_input_bg = "#3a3a3a" # 237
290+
prompt_input_fg = "#d7d7af" # 187
291+
prompt_input_modifiers = []
292+
prompt_label_bg = "#d7af87" # 180
293+
prompt_label_fg = "#262626" # 235
294+
prompt_label_modifiers = []
295+
prompt_cursor_bg = "#d7d7af" # 187
296+
prompt_cursor_fg = "#262626" # 235
297+
prompt_cursor_modifiers = []
298+
prompt_selection_bg = "#d7af87" # 180
299+
prompt_selection_fg = "#262626" # 235
300+
prompt_selection_modifiers = []
301+
302+
status_directory_bg = "#00afaf" # 37
303+
status_directory_fg = "#262626" # 235
304+
status_directory_modifiers = []
305+
status_directory_label_bg = "#008787" # 30
306+
status_directory_label_fg = "#d7d7d7" # 188
307+
status_directory_label_modifiers = []
308+
status_selected_bg = "#00afaf" # 37
309+
status_selected_fg = "#262626" # 235
310+
status_selected_modifiers = []
311+
status_selected_label_bg = "#008787" # 30
312+
status_selected_label_fg = "#d7d7d7" # 188
313+
status_selected_label_modifiers = []
314+
315+
table_body_bg = "#3a3a3a" # 237
316+
table_body_fg = "#ffffff" # 231
317+
table_body_modifiers = []
318+
table_copied_bg = "#00afaf" # 37
319+
table_copied_fg = "#005f00" # 22
320+
table_copied_modifiers = []
321+
table_cut_bg = "#00afaf" # 37
322+
table_cut_fg = "#5f005f" # 53
323+
table_cut_modifiers = []
324+
table_header_active_bg = "#d7af87" # 180
325+
table_header_active_fg = "#262626" # 235
326+
table_header_active_modifiers = []
327+
table_header_bg = "#87875f" # 101
328+
table_header_fg = "#262626" # 235
329+
table_header_modifiers = []
330+
table_scrollbar_begin_bg = "#87875f" # 101
331+
table_scrollbar_begin_end_enabled = false
332+
table_scrollbar_begin_fg = "#3a3a3a" # 237
333+
table_scrollbar_begin_modifiers = []
334+
table_scrollbar_end_bg = "#87875f" # 101
335+
table_scrollbar_end_fg = "#3a3a3a" # 237
336+
table_scrollbar_end_modifiers = []
337+
table_scrollbar_thumb_bg = "#3a3a3a" # 237
338+
table_scrollbar_thumb_fg = "#d7d7af" # 187
339+
table_scrollbar_thumb_modifiers = []
340+
table_scrollbar_track_bg = "#4e4e4e" # 239
341+
table_scrollbar_track_fg = "#87875f" # 101
342+
table_scrollbar_track_modifiers = []
343+
table_selected_bg = "#d7d7af" # 187
344+
table_selected_fg = "#262626" # 235
345+
table_selected_modifiers = []
346+
347+
[theme256.file_modified_date]
348+
less_than_minute_bg = ""
349+
less_than_minute_fg = "#00ffff" # 14
350+
less_than_minute_modifiers = []
351+
less_than_day_bg = ""
352+
less_than_day_fg = "#00ff00" # 10
353+
less_than_day_modifiers = []
354+
less_than_month_bg = ""
355+
less_than_month_fg = "#ffff00" # 11
356+
less_than_month_modifiers = []
357+
less_than_year_bg = ""
358+
less_than_year_fg = "#ff00ff" # 13
359+
less_than_year_modifiers = []
360+
greater_than_year_bg = ""
361+
greater_than_year_fg = "#ff0000" # 9
362+
greater_than_year_modifiers = []
363+
364+
[theme256.file_sizes]
365+
bytes_bg = ""
366+
bytes_fg = "#87d7ff" # 117
367+
bytes_modifiers = []
368+
kib_bg = ""
369+
kib_fg = "#00ffff" # 14
370+
kib_modifiers = []
371+
mib_bg = ""
372+
mib_fg = "#00ff00" # 10
373+
mib_modifiers = []
374+
gib_bg = ""
375+
gib_fg = "#ffff00" # 11
376+
gib_modifiers = []
377+
tib_bg = ""
378+
tib_fg = "#ff00ff" # 13
379+
tib_modifiers = []
380+
pib_bg = ""
381+
pib_fg = "#ff0000" # 9
382+
pib_modifiers = []
383+
384+
[theme256.file_types]
385+
# Whether to apply colors defined in the $LS_COLORS environment variable (if set) on top of colors configured in this section
386+
ls_colors_take_precedence = true
387+
388+
# Normal file default (rs=0)
389+
normal_file_bg = ""
390+
normal_file_fg = "#e4e4e4" # 254
391+
normal_file_modifiers = []
392+
393+
# Regular file (fi)
394+
regular_file_bg = ""
395+
regular_file_fg = "#e4e4e4" # 254
396+
regular_file_modifiers = []
397+
398+
# Directory (di=00;38;5;33)
399+
directory_bg = ""
400+
directory_fg = "#0087ff" # 33
401+
directory_modifiers = []
402+
403+
# Other-writable directory (ow=48;5;235;38;5;33)
404+
directory_other_writable_bg = "#262626" # 235
405+
directory_other_writable_fg = "#0087ff" # 33
406+
directory_other_writable_modifiers = []
407+
408+
# Symlink (ln=01;38;5;37)
409+
symlink_bg = ""
410+
symlink_fg = "#00afaf" # 37
411+
symlink_modifiers = ["bold"]
412+
413+
# Pipe/FIFO (pi=48;5;230;38;5;136;01)
414+
pipe_bg = "#ffffd7" # 230
415+
pipe_fg = "#af8700" # 136
416+
pipe_modifiers = ["bold"]
417+
418+
# Socket (so=48;5;230;38;5;136;01)
419+
socket_bg = "#ffffd7" # 230
420+
socket_fg = "#af8700" # 136
421+
socket_modifiers = ["bold"]
422+
423+
# Door (do=48;5;230;38;5;136;01)
424+
door_bg = "#ffffd7" # 230
425+
door_fg = "#af8700" # 136
426+
door_modifiers = ["bold"]
427+
428+
# Block device (bd=48;5;230;38;5;244;01)
429+
block_device_bg = "#ffffd7" # 230
430+
block_device_fg = "#808080" # 244
431+
block_device_modifiers = ["bold"]
432+
433+
# Character device (cd=48;5;230;38;5;244;01)
434+
character_device_bg = "#ffffd7" # 230
435+
character_device_fg = "#808080" # 244
436+
character_device_modifiers = ["bold"]
437+
438+
# Broken symlink (or=48;5;235;38;5;160)
439+
symlink_broken_bg = "#262626" # 235
440+
symlink_broken_fg = "#d70000" # 160
441+
symlink_broken_modifiers = []
442+
443+
# Missing file (mi=00)
444+
missing_bg = ""
445+
missing_fg = ""
446+
missing_modifiers = []
447+
448+
# Executable (ex=01;38;5;64)
449+
executable_bg = ""
450+
executable_fg = "#5f8700" # 64
451+
executable_modifiers = ["bold"]
452+
453+
# Sticky directory (st=48;5;33;38;5;230)
454+
directory_sticky_bg = "#0087ff" # 33
455+
directory_sticky_fg = "#ffffd7" # 230
456+
directory_sticky_modifiers = []
457+
458+
# Sticky and other-writable directory (tw=48;5;64;38;5;230)
459+
directory_sticky_other_writable_bg = "#5f8700" # 64
460+
directory_sticky_other_writable_fg = "#ffffd7" # 230
461+
directory_sticky_other_writable_modifiers = []
462+
463+
# Setgid (sg=48;5;136;38;5;230)
464+
setgid_bg = "#af8700" # 136
465+
setgid_fg = "#ffffd7" # 230
466+
setgid_modifiers = []
467+
468+
# Setuid (su=48;5;160;38;5;230)
469+
setuid_bg = "#d70000" # 160
470+
setuid_fg = "#ffffd7" # 230
471+
setuid_modifiers = []
223472
"##;

0 commit comments

Comments
 (0)