wip: trying to make it less messy so people don't hate me

This commit is contained in:
denis 2021-04-24 18:28:28 +03:00
parent de72d3d2fb
commit 2e94ef51aa
4 changed files with 100 additions and 207 deletions

View file

@ -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),
),
}
}

View file

@ -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 {

View file

@ -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

View file

@ -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
}
}
}