Skip to content

Commit eee19a3

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

File tree

12 files changed

+887
-1421
lines changed

12 files changed

+887
-1421
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ log = {version = "~0.4", default-features = false, features = ["serde"]}
2222
nix = {version = "~0", default-features = false, features = ["user"]}
2323
notify = "~8"
2424
open = "~5"
25+
paste = "1.0.15"
2526
rat-text = {git = "https://github.com/thscharler/rat-salsa", rev = "677fe2c", package = "rat-text"}
2627
rat-widget = {git = "https://github.com/thscharler/rat-salsa", rev = "677fe2c", package = "rat-widget"}
2728
ratatui = {version = "~0.29", features = ["all-widgets", "serde"]}

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: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use etcetera::{choose_base_strategy, BaseStrategy};
1010
use log::{debug, info, LevelFilter};
1111
use serde::{Deserialize, Serialize};
1212

13-
use self::{default_config::DEFAULT_CONFIG_TOML, ls_colors::apply_ls_colors, theme::Theme};
13+
use self::{default_config::DEFAULT_CONFIG_TOML, theme::Theme};
1414

1515
const CONFIG_RELATIVE_PATH: &str = "filectrl/config.toml";
1616

@@ -34,12 +34,13 @@ pub struct UiConfig {
3434
pub frame_delay_milliseconds: u64,
3535
}
3636

37-
#[derive(Debug, Deserialize, Serialize)]
37+
#[derive(Deserialize, Serialize)]
3838
pub struct Config {
3939
pub file_system: FileSystemConfig,
4040
pub log_level: LevelFilter,
4141
pub templates: Templates,
4242
pub theme: Theme,
43+
pub theme256: Theme,
4344
pub ui: UiConfig,
4445
}
4546

@@ -95,10 +96,7 @@ impl Config {
9596
let mut config = toml::from_str::<Config>(content)
9697
.map_err(|error| anyhow!("Cannot parse config file content: {error}"))?;
9798

98-
if config.theme.file_types.ls_colors_take_precedence {
99-
apply_ls_colors(&mut config.theme.file_types);
100-
}
101-
99+
config.theme.maybe_apply_ls_colors();
102100
Ok(config)
103101
}
104102

0 commit comments

Comments
 (0)