diff --git a/default-plugins/status-bar/src/main.rs b/default-plugins/status-bar/src/main.rs index 2410a9b1..ddc0a821 100644 --- a/default-plugins/status-bar/src/main.rs +++ b/default-plugins/status-bar/src/main.rs @@ -9,17 +9,6 @@ use zellij_tile::prelude::*; use first_line::{ctrl_keys, superkey}; use second_line::keybinds; -pub mod colors { - use ansi_term::Colour::{self, Fixed}; - pub const WHITE: Colour = Fixed(255); - pub const BLACK: Colour = Fixed(16); - pub const GREEN: Colour = Fixed(154); - pub const ORANGE: Colour = Fixed(166); - pub const GRAY: Colour = Fixed(238); - pub const BRIGHT_GRAY: Colour = Fixed(245); - pub const RED: Colour = Fixed(88); -} - // for more of these, copy paste from: https://en.wikipedia.org/wiki/Box-drawing_character static ARROW_SEPARATOR: &str = ""; static MORE_MSG: &str = " ... "; @@ -130,187 +119,74 @@ impl ColoredElements { } } +macro_rules! rgb { + ($a:expr) => { + RGB($a.0, $a.1, $a.2) + }; +} +macro_rules! style { + ($a:expr, $b:expr) => { + Style::new() + .fg(RGB($a.0, $a.1, $a.2)) + .on(RGB($b.0, $b.1, $b.2)) + }; +} + +// I really hate this, but I can't come up with a good solution for this, +// we need different colors from palette for the default theme +// plus here we can add new sources in the future, like Theme +// that can be defined in the config perhaps fn color_elements(palette: Palette) -> ColoredElements { match palette.source { PaletteSource::Default => ColoredElements::new( - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)), - Style::new() - .fg(RGB(palette.black.0, palette.black.1, palette.black.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.black.0, palette.black.1, palette.black.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.black.0, palette.black.1, palette.black.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .bold(), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .bold() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .bold() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.black.0, palette.black.1, palette.black.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .dimmed(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), - Style::new() - .fg(RGB(palette.white.0, palette.white.1, palette.white.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .bold(), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), + style!(palette.bg, palette.green), + style!(palette.black, palette.green).bold(), + style!(palette.red, palette.green).bold(), + style!(palette.black, palette.green).bold(), + style!(palette.black, palette.green).bold(), + style!(palette.green, palette.bg).bold(), + style!(palette.bg, palette.fg), + style!(palette.bg, palette.fg).bold(), + style!(palette.red, palette.fg).bold(), + style!(palette.bg, palette.fg).bold(), + style!(palette.black, palette.fg).bold(), + style!(palette.fg, palette.bg), + style!(palette.fg, palette.bg), + style!(palette.bg, palette.fg).dimmed(), + style!(palette.fg, palette.bg), + style!(palette.fg, palette.green), + style!(palette.red, palette.green).bold(), + style!(palette.green, palette.fg), + style!(palette.fg, palette.bg), + style!(palette.red, palette.fg).bold(), + style!(palette.fg, palette.bg), + style!(palette.white, palette.bg).bold(), + Style::new().fg(rgb!(palette.bg)).on(rgb!(palette.bg)), ), PaletteSource::Xresources => ColoredElements::new( - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .bold(), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .bold() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .bold() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .dimmed(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.green.0, palette.green.1, palette.green.2)) - .bold(), - Style::new() - .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)), - Style::new() - .bold() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), - Style::new() - .fg(RGB(palette.bg.0, palette.bg.1, palette.bg.2)) - .on(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .bold(), - Style::new() - .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) - .on(RGB(palette.bg.0, palette.bg.1, palette.bg.2)), + style!(palette.bg, palette.green), + style!(palette.fg, palette.green).bold(), + style!(palette.red, palette.green).bold(), + style!(palette.fg, palette.green).bold(), + style!(palette.bg, palette.green).bold(), + style!(palette.green, palette.bg).bold(), + style!(palette.bg, palette.fg), + style!(palette.bg, palette.fg).bold(), + style!(palette.red, palette.fg).bold(), + style!(palette.bg, palette.fg).bold(), + style!(palette.bg, palette.fg).bold(), + style!(palette.fg, palette.bg), + style!(palette.fg, palette.bg), + style!(palette.bg, palette.fg).dimmed(), + style!(palette.fg, palette.bg), + style!(palette.fg, palette.green), + style!(palette.red, palette.green).bold(), + style!(palette.green, palette.fg), + style!(palette.fg, palette.bg), + style!(palette.red, palette.fg).bold(), + style!(palette.fg, palette.bg), + style!(palette.bg, palette.fg).bold(), + style!(palette.fg, palette.bg), ), } } diff --git a/default-plugins/status-bar/src/second_line.rs b/default-plugins/status-bar/src/second_line.rs index 8cea48a2..73c4d765 100644 --- a/default-plugins/status-bar/src/second_line.rs +++ b/default-plugins/status-bar/src/second_line.rs @@ -2,10 +2,6 @@ use ansi_term::{ANSIStrings, Color::RGB, Style}; use zellij_tile::prelude::*; -use crate::{ - colors::{GREEN, ORANGE, WHITE}, - ColoredElements, -}; use crate::{LinePart, MORE_MSG}; fn full_length_shortcut( @@ -120,7 +116,7 @@ fn quicknav_full(palette: Palette) -> LinePart { "{}{}{}{}{}{}{}{}{}{}{}", text_first_part, Style::new() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) + .fg(RGB(palette.orange.0, palette.orange.1, palette.orange.2)) .bold() .paint(alt), text_second_part, @@ -130,7 +126,7 @@ fn quicknav_full(palette: Palette) -> LinePart { .paint(new_pane_shortcut), text_third_part, Style::new() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) + .fg(RGB(palette.orange.0, palette.orange.1, palette.orange.2)) .bold() .paint(second_alt), text_fourth_part, @@ -149,7 +145,7 @@ fn quicknav_full(palette: Palette) -> LinePart { } } -fn quicknav_medium() -> LinePart { +fn quicknav_medium(palette: Palette) -> LinePart { let text_first_part = " Tip: "; let alt = "Alt"; let text_second_part = " + "; @@ -176,22 +172,37 @@ fn quicknav_medium() -> LinePart { part: format!( "{}{}{}{}{}{}{}{}{}{}{}", text_first_part, - Style::new().fg(ORANGE).bold().paint(alt), + Style::new() + .fg(RGB(palette.orange.0, palette.orange.1, palette.orange.2)) + .bold() + .paint(alt), text_second_part, - Style::new().fg(GREEN).bold().paint(new_pane_shortcut), + Style::new() + .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) + .bold() + .paint(new_pane_shortcut), text_third_part, - Style::new().fg(ORANGE).bold().paint(second_alt), + Style::new() + .fg(RGB(palette.orange.0, palette.orange.1, palette.orange.2)) + .bold() + .paint(second_alt), text_fourth_part, - Style::new().fg(GREEN).bold().paint(brackets_navigation), + Style::new() + .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) + .bold() + .paint(brackets_navigation), text_fifth_part, - Style::new().fg(GREEN).bold().paint(hjkl_navigation), + Style::new() + .fg(RGB(palette.green.0, palette.green.1, palette.green.2)) + .bold() + .paint(hjkl_navigation), text_sixths_part, ), len, } } -fn quicknav_short() -> LinePart { +fn quicknav_short(palette: Palette) -> LinePart { let text_first_part = " QuickNav: "; let alt = "Alt"; let text_second_part = " + "; @@ -212,13 +223,13 @@ fn quicknav_short() -> LinePart { part: format!( "{}{}{}{}{}{}{}{}", text_first_part, - Style::new().fg(ORANGE).bold().paint(alt), + Style::new().fg(RGB(palette.orange.0, palette.orange.1, palette.orange.2)).bold().paint(alt), text_second_part, - Style::new().fg(GREEN).bold().paint(new_pane_shortcut), + Style::new().fg(RGB(palette.green.0, palette.green.1, palette.green.2)).bold().paint(new_pane_shortcut), text_third_part, - Style::new().fg(GREEN).bold().paint(brackets_navigation), + Style::new().fg(RGB(palette.green.0, palette.green.1, palette.green.2)).bold().paint(brackets_navigation), text_fifth_part, - Style::new().fg(GREEN).bold().paint(hjkl_navigation), + Style::new().fg(RGB(palette.green.0, palette.green.1, palette.green.2)).bold().paint(hjkl_navigation), ), len, } @@ -249,7 +260,7 @@ fn select_pane_shortcut(is_first_shortcut: bool, palette: Palette) -> LinePart { .fg(RGB(palette.fg.0, palette.fg.1, palette.fg.2)) .paint("<"); let shortcut = Style::new() - .fg(RGB(palette.red.0, palette.red.1, palette.red.2)) + .fg(RGB(palette.orange.0, palette.orange.1, palette.orange.2)) .bold() .paint(shortcut); let shortcut_right_separator = Style::new() @@ -297,7 +308,7 @@ fn full_shortcut_list(help: &ModeInfo) -> LinePart { fn shortened_shortcut_list(help: &ModeInfo) -> LinePart { match help.mode { - InputMode::Normal => quicknav_medium(), + InputMode::Normal => quicknav_medium(help.palette), InputMode::Locked => locked_interface_indication(help.palette), _ => { let mut line_part = LinePart::default(); @@ -317,7 +328,7 @@ fn shortened_shortcut_list(help: &ModeInfo) -> LinePart { fn best_effort_shortcut_list(help: &ModeInfo, max_len: usize) -> LinePart { match help.mode { InputMode::Normal => { - let line_part = quicknav_short(); + let line_part = quicknav_short(help.palette); if line_part.len <= max_len { line_part } else { diff --git a/src/common/utils/shared.rs b/src/common/utils/shared.rs index e559ebc1..2decc905 100644 --- a/src/common/utils/shared.rs +++ b/src/common/utils/shared.rs @@ -40,6 +40,7 @@ pub mod colors { pub const GRAY: (u8, u8, u8) = (68, 68, 68); pub const BRIGHT_GRAY: (u8, u8, u8) = (138, 138, 138); pub const RED: (u8, u8, u8) = (135, 0, 0); + pub const ORANGE: (u8, u8, u8) = (215,95,0); pub const BLACK: (u8, u8, u8) = (0, 0, 0); } @@ -85,6 +86,7 @@ pub fn load_palette() -> Palette { magenta: colors[5], cyan: colors[6], white: colors[7], + orange: colors[9] } } None => Palette { @@ -100,6 +102,7 @@ pub fn load_palette() -> Palette { magenta: colors::GRAY, cyan: colors::GRAY, white: colors::WHITE, + orange: colors::ORANGE }, }; palette diff --git a/zellij-tile/src/data.rs b/zellij-tile/src/data.rs index 8efb0899..02a6217a 100644 --- a/zellij-tile/src/data.rs +++ b/zellij-tile/src/data.rs @@ -82,6 +82,7 @@ pub mod colors { pub const GRAY: (u8, u8, u8) = (68, 68, 68); pub const BRIGHT_GRAY: (u8, u8, u8) = (138, 138, 138); pub const RED: (u8, u8, u8) = (135, 0, 0); + pub const ORANGE: (u8, u8, u8) = (215,95,0); pub const BLACK: (u8, u8, u8) = (0, 0, 0); } @@ -99,6 +100,7 @@ pub struct Palette { pub magenta: (u8, u8, u8), pub cyan: (u8, u8, u8), pub white: (u8, u8, u8), + pub orange: (u8, u8, u8) } impl Default for Palette { @@ -116,6 +118,7 @@ impl Default for Palette { magenta: colors::GRAY, cyan: colors::GRAY, white: colors::WHITE, + orange: colors::ORANGE } } }