From 7eb80b1b8d8db5ef4eb2a985d659fc2743116462 Mon Sep 17 00:00:00 2001 From: Stanislav Asunkin <1353637+stasjok@users.noreply.github.com> Date: Wed, 4 Jan 2023 13:52:23 +0300 Subject: [PATCH] perf: aggregate set-commands to one tmux call --- catppuccin.tmux | 72 ++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index f78366f..b9ba7af 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -1,34 +1,37 @@ #!/usr/bin/env bash -PLUGIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PLUGIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +get_tmux_option() { + local option value default + option="$1" + default="$2" + value="$(tmux show-option -gqv "$option")" + + if [ -n "$value" ]; then + echo "$value" + else + echo "$default" + fi +} + +set() { + local option=$1 + local value=$2 + tmux_commands+=(set-option -gq "$option" "$value" ";") +} + +setw() { + local option=$1 + local value=$2 + tmux_commands+=(set-window-option -gq "$option" "$value" ";") +} main() { - get-tmux-option() { - local option value default - option="$1" - default="$2" - value="$(tmux show-option -gqv "$option")" - - if [ -n "$value" ]; then - echo "$value" - else - echo "$default" - fi - } - - set() { - local option=$1 - local value=$2 - tmux set-option -gq "$option" "$value" - } - - setw() { - local option=$1 - local value=$2 - tmux set-window-option -gq "$option" "$value" - } - local theme - theme="$(get-tmux-option "@catppuccin_flavour" "mocha")" + theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" + + # Aggregate all commands in one array + local tmux_commands=() # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. @@ -58,16 +61,24 @@ main() { # --------=== Statusline # NOTE: Checking for the value of @catppuccin_window_tabs_enabled - wt_enabled="$(get-tmux-option "@catppuccin_window_tabs_enabled" "off")" + local wt_enabled + wt_enabled="$(get_tmux_option "@catppuccin_window_tabs_enabled" "off")" readonly wt_enabled # These variables are the defaults so that the setw and set calls are easier to parse. + local show_directory readonly show_directory="#[fg=$thm_pink,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_pink,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #{b:pane_current_path} #{?client_prefix,#[fg=$thm_red]" + local show_window readonly show_window="#[fg=$thm_pink,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_pink,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #W #{?client_prefix,#[fg=$thm_red]" + local show_session readonly show_session="#[fg=$thm_green]}#[bg=$thm_gray]#{?client_prefix,#[bg=$thm_red],#[bg=$thm_green]}#[fg=$thm_bg] #[fg=$thm_fg,bg=$thm_gray] #S " + local show_directory_in_window_status readonly show_directory_in_window_status="#[fg=$thm_bg,bg=$thm_blue] #I #[fg=$thm_fg,bg=$thm_gray] #{b:pane_current_path} " + local show_directory_in_window_status_current readonly show_directory_in_window_status_current="#[fg=$thm_bg,bg=$thm_orange] #I #[fg=$thm_fg,bg=$thm_bg] #{b:pane_current_path} " + local show_window_in_window_status readonly show_window_in_window_status="#[fg=$thm_fg,bg=$thm_bg] #W #[fg=$thm_bg,bg=$thm_blue] #I#[fg=$thm_blue,bg=$thm_bg]#[fg=$thm_fg,bg=$thm_bg,nobold,nounderscore,noitalics] " + local show_window_in_window_status_current readonly show_window_in_window_status_current="#[fg=$thm_fg,bg=$thm_gray] #W #[fg=$thm_bg,bg=$thm_orange] #I#[fg=$thm_orange,bg=$thm_bg]#[fg=$thm_fg,bg=$thm_bg,nobold,nounderscore,noitalics] " # Right column 1 by default shows the Window name. @@ -82,8 +93,7 @@ main() { # NOTE: With the @catppuccin_window_tabs_enabled set to on, we're going to # update the right_column1 and the window_status_* variables. - if [[ "${wt_enabled}" == "on" ]] - then + if [[ "${wt_enabled}" == "on" ]]; then right_column1=$show_directory window_status_format=$show_window_in_window_status window_status_current_format=$show_window_in_window_status_current @@ -100,6 +110,8 @@ main() { # setw clock-mode-colour "${thm_blue}" setw mode-style "fg=${thm_pink} bg=${thm_black4} bold" + + tmux "${tmux_commands[@]}" } main "$@"