summaryrefslogtreecommitdiffstats
path: root/default-plugins
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2022-06-07 14:28:39 +0200
committerGitHub <noreply@github.com>2022-06-07 14:28:39 +0200
commit3be718371af9029822e2aeb3f52b5dde1b7397d1 (patch)
tree017147ebe5418a67570b9e7ea3d9ba3bf990cd83 /default-plugins
parent3e5312087b762a7dc4988162f8691e8c79a9bdc2 (diff)
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
Diffstat (limited to 'default-plugins')
-rw-r--r--default-plugins/status-bar/src/main.rs26
-rw-r--r--default-plugins/status-bar/src/tip/consts.rs2
-rw-r--r--default-plugins/status-bar/src/tip/data/compact_layout.rs87
-rw-r--r--default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs78
-rw-r--r--default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs69
-rw-r--r--default-plugins/status-bar/src/tip/data/mod.rs92
-rw-r--r--default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs64
-rw-r--r--default-plugins/status-bar/src/tip/data/quicknav.rs (renamed from default-plugins/status-bar/src/tip/data.rs)22
-rw-r--r--default-plugins/status-bar/src/tip/data/send_mouse_click_to_terminal.rs63
-rw-r--r--default-plugins/status-bar/src/tip/data/sync_tab.rs69
-rw-r--r--default-plugins/status-bar/src/tip/data/use_mouse.rs56
-rw-r--r--default-plugins/status-bar/src/tip/data/zellij_setup_check.rs65
-rw-r--r--default-plugins/status-bar/src/tip/utils.rs18
13 files changed, 672 insertions, 39 deletions
diff --git a/default-plugins/status-bar/src/main.rs b/default-plugins/status-bar/src/main.rs
index 7257556bc..4a53fed8a 100644
--- a/default-plugins/status-bar/src/main.rs
+++ b/default-plugins/status-bar/src/main.rs
@@ -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),
diff --git a/default-plugins/status-bar/src/tip/consts.rs b/default-plugins/status-bar/src/tip/consts.rs
index 62bbeaa9c..1af302471 100644
--- a/default-plugins/status-bar/src/tip/consts.rs
+++ b/default-plugins/status-bar/src/tip/consts.rs
@@ -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
diff --git a/default-plugins/status-bar/src/tip/data/compact_layout.rs b/default-plugins/status-bar/src/tip/data/compact_layout.rs
new file mode 100644
index 000000000..1632a836e
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/compact_layout.rs
@@ -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>"),
+ ])
+}
diff --git a/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs b/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs
new file mode 100644
index 000000000..3807f55db
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/edit_scrollbuffer.rs
@@ -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>"),
+ ])
+}
diff --git a/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs b/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs
new file mode 100644
index 000000000..64594987b
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/floating_panes_mouse.rs
@@ -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"),
+ ])
+}
diff --git a/default-plugins/status-bar/src/tip/data/mod.rs b/default-plugins/status-bar/src/tip/data/mod.rs
new file mode 100644
index 000000000..1354b1ab4
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/mod.rs
@@ -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,
+ }
+ ),
+ ]);
+}
diff --git a/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs b/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs
new file mode 100644
index 000000000..8e9f678c6
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/move_focus_hjkl_tab_switch.rs
@@ -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."),
+ ])
+}
diff --git a/default-plugins/status-bar/src/tip/data.rs b/default-plugins/status-bar/src/tip/data/quicknav.rs
index d8dba13d8..21d46fe8f 100644
--- a/default-plugins/status-bar/src/tip/data.rs
+++ b/default-plugins/status-bar/src/tip/data/quicknav.rs
@@ -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);
diff --git a/default-plugins/status-bar/src/tip/data/send_mouse_click_to_terminal.rs b/default-plugins/status-bar/src/tip/data/send_mouse_click_to_terminal.rs
new file mode 100644
index 000000000..a4f7ee60a
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/send_mouse_click_to_terminal.rs
@@ -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."),
+ ])
+}
diff --git a/default-plugins/status-bar/src/tip/data/sync_tab.rs b/default-plugins/status-bar/src/tip/data/sync_tab.rs
new file mode 100644
index 000000000..27d0ae7f0
--- /dev/null
+++ b/default-plugins/status-bar/src/tip/data/sync_tab.rs
@@ -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 key