feat(ui): add status bar tips (#1462)
* feat(ui): add more tips to status bar * fix(e2e): clear status-bar-tips cache for each test * style(fmt): rustfmt
This commit is contained in:
parent
3e5312087b
commit
3be718371a
14 changed files with 676 additions and 39 deletions
|
|
@ -151,19 +151,14 @@ fn color_elements(palette: Palette, different_color_alternates: bool) -> Colored
|
|||
unselected_single_letter_char_shortcut: style!(palette.red, palette.fg).bold().dimmed(),
|
||||
unselected_single_letter_suffix_separator: style!(palette.fg, background),
|
||||
|
||||
unselected_alternate_single_letter_prefix_separator: style!(
|
||||
palette.fg,
|
||||
alternate_background_color
|
||||
),
|
||||
unselected_alternate_single_letter_prefix_separator: style!(background, palette.fg),
|
||||
unselected_alternate_single_letter_char_shortcut: style!(
|
||||
palette.red,
|
||||
alternate_background_color
|
||||
)
|
||||
.bold(),
|
||||
unselected_alternate_single_letter_suffix_separator: style!(
|
||||
palette.fg,
|
||||
alternate_background_color
|
||||
),
|
||||
.bold()
|
||||
.dimmed(),
|
||||
unselected_alternate_single_letter_suffix_separator: style!(palette.fg, background),
|
||||
|
||||
superkey_prefix: style!(foreground, background).bold(),
|
||||
superkey_suffix_separator: style!(background, background),
|
||||
|
|
@ -209,19 +204,14 @@ fn color_elements(palette: Palette, different_color_alternates: bool) -> Colored
|
|||
unselected_single_letter_char_shortcut: style!(palette.red, palette.fg).bold(),
|
||||
unselected_single_letter_suffix_separator: style!(palette.fg, background),
|
||||
|
||||
unselected_alternate_single_letter_prefix_separator: style!(
|
||||
palette.fg,
|
||||
alternate_background_color
|
||||
),
|
||||
unselected_alternate_single_letter_prefix_separator: style!(background, palette.fg),
|
||||
unselected_alternate_single_letter_char_shortcut: style!(
|
||||
palette.red,
|
||||
alternate_background_color
|
||||
)
|
||||
.bold(),
|
||||
unselected_alternate_single_letter_suffix_separator: style!(
|
||||
palette.fg,
|
||||
alternate_background_color
|
||||
),
|
||||
.bold()
|
||||
.dimmed(),
|
||||
unselected_alternate_single_letter_suffix_separator: style!(palette.fg, background),
|
||||
|
||||
superkey_prefix: style!(background, palette.fg).bold(),
|
||||
superkey_suffix_separator: style!(palette.fg, background),
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
pub const DEFAULT_CACHE_FILE_PATH: &str = "/tmp/status-bar-tips.cache";
|
||||
pub const MAX_CACHE_HITS: usize = 10;
|
||||
pub const MAX_CACHE_HITS: usize = 20; // this should be 10, but right now there's a bug where the plugin load function is called twice, and sot he cache is hit twice
|
||||
|
|
|
|||
87
default-plugins/status-bar/src/tip/data/compact_layout.rs
Normal file
87
default-plugins/status-bar/src/tip/data/compact_layout.rs
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn compact_layout_full(palette: Palette) -> LinePart {
|
||||
// Tip: UI taking up too much space? Start Zellij with
|
||||
// zellij -l compact or remove pane frames with Ctrl + <p> + <z>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("UI taking up too much space? Start Zellij with "),
|
||||
Style::new()
|
||||
.fg(green_color)
|
||||
.bold()
|
||||
.paint("zellij -l compact"),
|
||||
Style::new().paint(" or remove pane frames with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<p>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<z>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn compact_layout_medium(palette: Palette) -> LinePart {
|
||||
// Tip: To save screen space, start Zellij with
|
||||
// zellij -l compact or remove pane frames with Ctrl + <p> + <z>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("To save screen space, start Zellij with "),
|
||||
Style::new()
|
||||
.fg(green_color)
|
||||
.bold()
|
||||
.paint("zellij -l compact"),
|
||||
Style::new().paint(" or remove frames with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<p>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<z>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn compact_layout_short(palette: Palette) -> LinePart {
|
||||
// Save screen space, start Zellij with
|
||||
// zellij -l compact or remove pane frames with Ctrl + <p> + <z>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Save screen space, start with: "),
|
||||
Style::new()
|
||||
.fg(green_color)
|
||||
.bold()
|
||||
.paint("zellij -l compact"),
|
||||
Style::new().paint(" or remove frames with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<p>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<z>"),
|
||||
])
|
||||
}
|
||||
78
default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs
Normal file
78
default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn edit_scrollbuffer_full(palette: Palette) -> LinePart {
|
||||
// Tip: Search through the scrollbuffer using your default $EDITOR with
|
||||
// Ctrl + <s> + <e>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Search through the scrollbuffer using your default "),
|
||||
Style::new().fg(green_color).bold().paint("$EDITOR"),
|
||||
Style::new().paint(" with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<s>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<e>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn edit_scrollbuffer_medium(palette: Palette) -> LinePart {
|
||||
// Tip: Search the scrollbuffer using your $EDITOR with
|
||||
// Ctrl + <s> + <e>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Search the scrollbuffer using your "),
|
||||
Style::new().fg(green_color).bold().paint("$EDITOR"),
|
||||
Style::new().paint(" with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<s>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<e>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn edit_scrollbuffer_short(palette: Palette) -> LinePart {
|
||||
// Search using $EDITOR with
|
||||
// Ctrl + <s> + <e>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Search using "),
|
||||
Style::new().fg(green_color).bold().paint("$EDITOR"),
|
||||
Style::new().paint(" with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<s>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<e>"),
|
||||
])
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn floating_panes_mouse_full(palette: Palette) -> LinePart {
|
||||
// Tip: Toggle floating panes with Ctrl + <p> + <w> and move them with keyboard or mouse
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Toggle floating panes with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<p>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<w>"),
|
||||
Style::new().paint(" and move them with keyboard or mouse"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn floating_panes_mouse_medium(palette: Palette) -> LinePart {
|
||||
// Tip: Toggle floating panes with Ctrl + <p> + <w>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Toggle floating panes with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<p>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<w>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn floating_panes_mouse_short(palette: Palette) -> LinePart {
|
||||
// Ctrl + <p> + <w> => floating panes
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().fg(orange_color).bold().paint(" Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<p>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<w>"),
|
||||
Style::new().paint(" => floating panes"),
|
||||
])
|
||||
}
|
||||
92
default-plugins/status-bar/src/tip/data/mod.rs
Normal file
92
default-plugins/status-bar/src/tip/data/mod.rs
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use lazy_static::lazy_static;
|
||||
|
||||
use crate::tip::TipBody;
|
||||
|
||||
mod compact_layout;
|
||||
mod edit_scrollbuffer;
|
||||
mod floating_panes_mouse;
|
||||
mod move_focus_hjkl_tab_switch;
|
||||
mod quicknav;
|
||||
mod send_mouse_click_to_terminal;
|
||||
mod sync_tab;
|
||||
mod use_mouse;
|
||||
mod zellij_setup_check;
|
||||
|
||||
lazy_static! {
|
||||
pub static ref TIPS: HashMap<&'static str, TipBody> = HashMap::from([
|
||||
(
|
||||
"quicknav",
|
||||
TipBody {
|
||||
short: quicknav::quicknav_short,
|
||||
medium: quicknav::quicknav_medium,
|
||||
full: quicknav::quicknav_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"floating_panes_mouse",
|
||||
TipBody {
|
||||
short: floating_panes_mouse::floating_panes_mouse_short,
|
||||
medium: floating_panes_mouse::floating_panes_mouse_medium,
|
||||
full: floating_panes_mouse::floating_panes_mouse_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"send_mouse_clicks_to_terminal",
|
||||
TipBody {
|
||||
short: send_mouse_click_to_terminal::mouse_click_to_terminal_short,
|
||||
medium: send_mouse_click_to_terminal::mouse_click_to_terminal_medium,
|
||||
full: send_mouse_click_to_terminal::mouse_click_to_terminal_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"move_focus_hjkl_tab_switch",
|
||||
TipBody {
|
||||
short: move_focus_hjkl_tab_switch::move_focus_hjkl_tab_switch_short,
|
||||
medium: move_focus_hjkl_tab_switch::move_focus_hjkl_tab_switch_medium,
|
||||
full: move_focus_hjkl_tab_switch::move_focus_hjkl_tab_switch_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"zellij_setup_check",
|
||||
TipBody {
|
||||
short: zellij_setup_check::zellij_setup_check_short,
|
||||
medium: zellij_setup_check::zellij_setup_check_medium,
|
||||
full: zellij_setup_check::zellij_setup_check_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"use_mouse",
|
||||
TipBody {
|
||||
short: use_mouse::use_mouse_short,
|
||||
medium: use_mouse::use_mouse_medium,
|
||||
full: use_mouse::use_mouse_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"sync_tab",
|
||||
TipBody {
|
||||
short: sync_tab::sync_tab_short,
|
||||
medium: sync_tab::sync_tab_medium,
|
||||
full: sync_tab::sync_tab_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"edit_scrollbuffer",
|
||||
TipBody {
|
||||
short: edit_scrollbuffer::edit_scrollbuffer_short,
|
||||
medium: edit_scrollbuffer::edit_scrollbuffer_medium,
|
||||
full: edit_scrollbuffer::edit_scrollbuffer_full,
|
||||
}
|
||||
),
|
||||
(
|
||||
"compact_layout",
|
||||
TipBody {
|
||||
short: compact_layout::compact_layout_short,
|
||||
medium: compact_layout::compact_layout_medium,
|
||||
full: compact_layout::compact_layout_full,
|
||||
}
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn move_focus_hjkl_tab_switch_full(palette: Palette) -> LinePart {
|
||||
// Tip: When changing focus with Alt + <←↓↑→> moving off screen left/right focuses the next tab.
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("When changing focus with "),
|
||||
Style::new().fg(orange_color).bold().paint("Alt"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<←↓↑→>"),
|
||||
Style::new().paint(" moving off screen left/right focuses the next tab."),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn move_focus_hjkl_tab_switch_medium(palette: Palette) -> LinePart {
|
||||
// Tip: Changing focus with Alt + <←↓↑→> off screen focuses the next tab.
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Changing focus with "),
|
||||
Style::new().fg(orange_color).bold().paint("Alt"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<←↓↑→>"),
|
||||
Style::new().paint(" off screen focuses the next tab."),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn move_focus_hjkl_tab_switch_short(palette: Palette) -> LinePart {
|
||||
// Alt + <←↓↑→> off screen edge focuses next tab.
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().fg(orange_color).bold().paint(" Alt"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<←↓↑→>"),
|
||||
Style::new().paint(" off screen edge focuses next tab."),
|
||||
])
|
||||
}
|
||||
|
|
@ -1,13 +1,10 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
use lazy_static::lazy_static;
|
||||
|
||||
use crate::{tip::TipBody, LinePart};
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
|
|
@ -24,18 +21,7 @@ macro_rules! strings {
|
|||
}};
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
pub static ref TIPS: HashMap<&'static str, TipBody> = HashMap::from([(
|
||||
"quicknav",
|
||||
TipBody {
|
||||
short: quicknav_short,
|
||||
medium: quicknav_medium,
|
||||
full: quicknav_full,
|
||||
}
|
||||
)]);
|
||||
}
|
||||
|
||||
fn quicknav_full(palette: Palette) -> LinePart {
|
||||
pub fn quicknav_full(palette: Palette) -> LinePart {
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
|
|
@ -58,7 +44,7 @@ fn quicknav_full(palette: Palette) -> LinePart {
|
|||
])
|
||||
}
|
||||
|
||||
fn quicknav_medium(palette: Palette) -> LinePart {
|
||||
pub fn quicknav_medium(palette: Palette) -> LinePart {
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
|
|
@ -81,7 +67,7 @@ fn quicknav_medium(palette: Palette) -> LinePart {
|
|||
])
|
||||
}
|
||||
|
||||
fn quicknav_short(palette: Palette) -> LinePart {
|
||||
pub fn quicknav_short(palette: Palette) -> LinePart {
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn mouse_click_to_terminal_full(palette: Palette) -> LinePart {
|
||||
// Tip: SHIFT + <mouse-click> bypasses Zellij and sends the mouse click directly to the terminal
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().fg(orange_color).bold().paint("SHIFT"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<mouse-click>"),
|
||||
Style::new().paint(" bypasses Zellij and sends the mouse click directly to the terminal."),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn mouse_click_to_terminal_medium(palette: Palette) -> LinePart {
|
||||
// Tip: SHIFT + <mouse-click> sends the click directly to the terminal
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().fg(orange_color).bold().paint("SHIFT"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<mouse-click>"),
|
||||
Style::new().paint(" sends the click directly to the terminal."),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn mouse_click_to_terminal_short(palette: Palette) -> LinePart {
|
||||
// Tip: SHIFT + <mouse-click> => sends click to terminal.
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().fg(orange_color).bold().paint("SHIFT"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<mouse-click>"),
|
||||
Style::new().paint(" => sends click to terminal."),
|
||||
])
|
||||
}
|
||||
69
default-plugins/status-bar/src/tip/data/sync_tab.rs
Normal file
69
default-plugins/status-bar/src/tip/data/sync_tab.rs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn sync_tab_full(palette: Palette) -> LinePart {
|
||||
// Tip: Sync a tab and write keyboard input to all panes with Ctrl + <t> + <s>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Sync a tab and write keyboard input to all its panes with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<t>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<s>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn sync_tab_medium(palette: Palette) -> LinePart {
|
||||
// Tip: Sync input to panes in a tab with Ctrl + <t> + <s>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Sync input to panes in a tab with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<t>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<s>"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn sync_tab_short(palette: Palette) -> LinePart {
|
||||
// Sync input in a tab with Ctrl + <t> + <s>
|
||||
let green_color = palette_match!(palette.green);
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Sync input in a tab with "),
|
||||
Style::new().fg(orange_color).bold().paint("Ctrl"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<t>"),
|
||||
Style::new().paint(" + "),
|
||||
Style::new().fg(green_color).bold().paint("<s>"),
|
||||
])
|
||||
}
|
||||
56
default-plugins/status-bar/src/tip/data/use_mouse.rs
Normal file
56
default-plugins/status-bar/src/tip/data/use_mouse.rs
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn use_mouse_full(palette: Palette) -> LinePart {
|
||||
// Tip: Use the mouse to switch pane focus, scroll through the pane
|
||||
// scrollbuffer, switch or scroll through tabs
|
||||
let green_color = palette_match!(palette.green);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().fg(green_color).bold().paint("Use the mouse"),
|
||||
Style::new().paint(" to switch pane focus, scroll through the pane scrollbuffer, switch or scroll through the tabs."),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn use_mouse_medium(palette: Palette) -> LinePart {
|
||||
// Tip: Use the mouse to switch panes/tabs or scroll through the pane
|
||||
// scrollbuffer
|
||||
let green_color = palette_match!(palette.green);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().fg(green_color).bold().paint("Use the mouse"),
|
||||
Style::new().paint(" to switch pane/tabs or scroll through the pane scrollbuffer."),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn use_mouse_short(palette: Palette) -> LinePart {
|
||||
// Tip: Use the mouse to switch panes/tabs or scroll
|
||||
let green_color = palette_match!(palette.green);
|
||||
|
||||
strings!(&[
|
||||
Style::new().fg(green_color).bold().paint(" Use the mouse"),
|
||||
Style::new().paint(" to switch pane/tabs or scroll."),
|
||||
])
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
use ansi_term::{
|
||||
unstyled_len, ANSIString, ANSIStrings,
|
||||
Color::{Fixed, RGB},
|
||||
Style,
|
||||
};
|
||||
|
||||
use crate::LinePart;
|
||||
use zellij_tile::prelude::*;
|
||||
use zellij_tile_utils::palette_match;
|
||||
|
||||
macro_rules! strings {
|
||||
($ANSIStrings:expr) => {{
|
||||
let strings: &[ANSIString<'static>] = $ANSIStrings;
|
||||
|
||||
let ansi_strings = ANSIStrings(strings);
|
||||
|
||||
LinePart {
|
||||
part: format!("{}", ansi_strings),
|
||||
len: unstyled_len(&ansi_strings),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn zellij_setup_check_full(palette: Palette) -> LinePart {
|
||||
// Tip: Having issues with Zellij? Try running "zellij setup --check"
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Having issues with Zellij? Try running "),
|
||||
Style::new()
|
||||
.fg(orange_color)
|
||||
.bold()
|
||||
.paint("zellij setup --check"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn zellij_setup_check_medium(palette: Palette) -> LinePart {
|
||||
// Tip: Run "zellij setup --check" to find issues
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Tip: "),
|
||||
Style::new().paint("Run "),
|
||||
Style::new()
|
||||
.fg(orange_color)
|
||||
.bold()
|
||||
.paint("zellij setup --check"),
|
||||
Style::new().paint(" to find issues"),
|
||||
])
|
||||
}
|
||||
|
||||
pub fn zellij_setup_check_short(palette: Palette) -> LinePart {
|
||||
// Run "zellij setup --check" to find issues
|
||||
let orange_color = palette_match!(palette.orange);
|
||||
|
||||
strings!(&[
|
||||
Style::new().paint(" Run "),
|
||||
Style::new()
|
||||
.fg(orange_color)
|
||||
.bold()
|
||||
.paint("zellij setup --check"),
|
||||
Style::new().paint(" to find issues"),
|
||||
])
|
||||
}
|
||||
|
|
@ -21,6 +21,14 @@ macro_rules! get_name_and_caching {
|
|||
}};
|
||||
}
|
||||
|
||||
macro_rules! populate_cache {
|
||||
($cache:expr) => {{
|
||||
for tip_name in TIPS.keys() {
|
||||
$cache.caching(tip_name.clone()).unwrap();
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn get_random_tip_name() -> String {
|
||||
TIPS.keys()
|
||||
.choose(&mut rand::thread_rng())
|
||||
|
|
@ -38,13 +46,19 @@ pub fn get_cached_tip_name() -> String {
|
|||
}
|
||||
|
||||
if local_cache.is_empty() {
|
||||
get_name_and_caching!(local_cache);
|
||||
populate_cache!(local_cache);
|
||||
}
|
||||
|
||||
let quicknav_show_count = local_cache.get_cached_data().get("quicknav").unwrap_or(&0);
|
||||
eprintln!("quicknav_show_count: {:?}", quicknav_show_count);
|
||||
if quicknav_show_count <= &MAX_CACHE_HITS {
|
||||
let _ = local_cache.caching("quicknav");
|
||||
return String::from("quicknav");
|
||||
}
|
||||
|
||||
let usable_tips = local_cache
|
||||
.get_cached_data()
|
||||
.iter()
|
||||
.filter(|(_, &v)| v < MAX_CACHE_HITS)
|
||||
.map(|(k, _)| k.to_string())
|
||||
.collect::<Vec<String>>();
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,10 @@ fn setup_remote_environment(channel: &mut ssh2::Channel, win_size: Size) {
|
|||
}
|
||||
|
||||
fn stop_zellij(channel: &mut ssh2::Channel) {
|
||||
// here we remove the status-bar-tips cache to make sure only the quicknav tip is loaded
|
||||
channel
|
||||
.write_all(b"find /tmp | grep status-bar-tips | xargs rm\n")
|
||||
.unwrap();
|
||||
channel.write_all(b"killall -KILL zellij\n").unwrap();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue