diff --git a/.vscode/settings.json b/.vscode/settings.json index 0ebd8ca7..accd5163 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -86,6 +86,7 @@ "regexes", "rsplitn", "runlevel", + "rustflags", "rustfmt", "shilangyu", "softirq", diff --git a/src/constants.rs b/src/constants.rs index b633aca7..452e235e 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -355,7 +355,7 @@ pub const OLD_CONFIG_TEXT: &str = r##"# This is a default config file for bottom # This group of options represents a command-line flag/option. Flags explicitly # added when running (ie: btm -a) will override this config file if an option # is also set here. -[flags] +#[flags] # Whether to hide the average cpu entry. #hide_avg_cpu = false # Whether to use dot markers rather than braille. @@ -405,7 +405,7 @@ pub const OLD_CONFIG_TEXT: &str = r##"# This is a default config file for bottom # These are all the components that support custom theming. Note that colour support # will depend on terminal support. -[colors] +#[colors] # Represents the colour of table headers (processes, CPU, disks, temperature). #table_header_color="LightBlue" # Represents the colour of the label each widget has. diff --git a/src/options.rs b/src/options.rs index 21da8427..7e8da0a7 100644 --- a/src/options.rs +++ b/src/options.rs @@ -192,6 +192,18 @@ pub struct ConfigColours { pub low_battery_color: Option, } +impl ConfigColours { + pub fn is_empty(&self) -> bool { + if let Ok(serialized_string) = toml::to_string(self) { + if !serialized_string.is_empty() { + return false; + } + } + + true + } +} + #[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct IgnoreList { pub is_list_ignored: bool, @@ -918,9 +930,16 @@ pub fn get_color_scheme( if let Some(color) = matches.value_of("color") { // Highest priority is always command line flags... return ColourScheme::from_str(color); - } else if config.colors.is_some() { - // Then, give priority to custom colours... - return Ok(ColourScheme::Custom); + } else if let Some(colors) = &config.colors { + if !colors.is_empty() { + // Then, give priority to custom colours... + return Ok(ColourScheme::Custom); + } else if let Some(flags) = &config.flags { + // Last priority is config file flags... + if let Some(color) = &flags.color { + return ColourScheme::from_str(color); + } + } } else if let Some(flags) = &config.flags { // Last priority is config file flags... if let Some(color) = &flags.color {