From bb129ad37a2fb199a387f52cdffb5457301cdd7c Mon Sep 17 00:00:00 2001 From: ervinpopescu Date: Sat, 9 Sep 2023 16:28:50 +0300 Subject: [PATCH] Add config options `@catppuccin_window_left_separator_inverse` `@catppuccin_window_right_separator_inverse` `@catppuccin_status_left_separator_inverse` --- catppuccin.tmux | 140 ++++++++++++++++++++++++++---------------------- 1 file changed, 77 insertions(+), 63 deletions(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index 11d4030..c9eb7e6 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -7,10 +7,8 @@ get_tmux_option() { default="$2" value=$(tmux show-option -gqv "$option") - if [ -n "$value" ] - then - if [ "$value" = "null" ] - then + if [ -n "$value" ]; then + if [ "$value" = "null" ]; then echo "" else @@ -46,14 +44,12 @@ build_window_icon() { local custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󰖲") local custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞") - if [ "$window_status_icon_enable" = "yes" ] - then + if [ "$window_status_icon_enable" = "yes" ]; then # #!~[*-]MZ local show_window_status="#{?window_activity_flag,${custom_icon_window_activity},}#{?window_bell_flag,${custom_icon_window_bell},}#{?window_silence_flag,${custom_icon_window_silent},}#{?window_active,${custom_icon_window_current},}#{?window_last_flag,${custom_icon_window_last},}#{?window_marked_flag,${custom_icon_window_mark},}#{?window_zoomed_flag,${custom_icon_window_zoom},}" fi - if [ "$window_status_icon_enable" = "no" ] - then + if [ "$window_status_icon_enable" = "no" ]; then local show_window_status="#F" fi @@ -67,14 +63,12 @@ build_window_format() { local text=$4 local fill=$5 - if [ "$window_status_enable" = "yes" ] - then - local icon="$( build_window_icon )" + if [ "$window_status_enable" = "yes" ]; then + local icon="$(build_window_icon)" text="$text $icon" fi - if [ "$fill" = "none" ] - then + if [ "$fill" = "none" ]; then local show_left_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$window_left_separator" local show_number="#[fg=$thm_fg,bg=$thm_gray]$number" local show_middle_separator="#[fg=$thm_fg,bg=$thm_gray,nobold,nounderscore,noitalics]$window_middle_separator" @@ -83,8 +77,7 @@ build_window_format() { fi - if [ "$fill" = "all" ] - then + if [ "$fill" = "all" ]; then local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$window_left_separator" local show_number="#[fg=$background,bg=$color]$number" local show_middle_separator="#[fg=$background,bg=$color,nobold,nounderscore,noitalics]$window_middle_separator" @@ -93,35 +86,52 @@ build_window_format() { fi - if [ "$fill" = "number" ] - then + if [ "$fill" = "number" ]; then + local show_number="#[fg=$background,bg=$color]$number" local show_middle_separator="#[fg=$color,bg=$background,nobold,nounderscore,noitalics]$window_middle_separator" local show_text="#[fg=$thm_fg,bg=$background]$text" - if [ "$window_number_position" = "right" ] - then + if [ "$window_number_position" = "right" ]; then local show_left_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$window_left_separator" local show_right_separator="#[fg=$color,bg=$thm_bg]$window_right_separator" fi - if [ "$window_number_position" = "left" ] - then + if [ "$window_number_position" = "left" ]; then local show_right_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$window_right_separator" local show_left_separator="#[fg=$color,bg=$thm_bg]$window_left_separator" fi fi + if [ "$window_left_separator_inverse" = "yes" ]; then + local show_left_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$window_left_separator" + fi + + if [ "$window_right_separator_inverse" = "yes" ]; then + local show_right_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$window_right_separator" + fi + + if [ $((index)) -eq 0 ]; then + if [ "$window_left_separator_inverse" = "yes" ]; then + local show_left_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$window_left_separator" + else + local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$window_left_separator" + fi + if [ "$window_right_separator_inverse" = "yes" ]; then + local show_right_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$window_right_separator" + else + local show_right_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$window_right_separator" + fi + fi + local final_window_format - if [ "$window_number_position" = "right" ] - then + if [ "$window_number_position" = "right" ]; then final_window_format="$show_left_separator$show_text$show_middle_separator$show_number$show_right_separator" fi - if [ "$window_number_position" = "left" ] - then + if [ "$window_number_position" = "left" ]; then final_window_format="$show_left_separator$show_number$show_middle_separator$show_text$show_right_separator" fi @@ -134,8 +144,7 @@ build_status_module() { local color=$3 local text=$4 - if [ "$status_fill" = "icon" ] - then + if [ "$status_fill" = "icon" ]; then local show_left_separator="#[fg=$color,bg=$thm_gray,nobold,nounderscore,noitalics]$status_left_separator" local show_icon="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$icon " @@ -143,8 +152,7 @@ build_status_module() { local show_right_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_separator" - if [ "$status_connect_separator" = "yes" ] - then + if [ "$status_connect_separator" = "yes" ]; then local show_left_separator="#[fg=$color,bg=$thm_gray,nobold,nounderscore,noitalics]$status_left_separator" local show_right_separator="#[fg=$thm_gray,bg=$thm_gray,nobold,nounderscore,noitalics]$status_right_separator" @@ -155,8 +163,7 @@ build_status_module() { fi - if [ "$status_fill" = "all" ] - then + if [ "$status_fill" = "all" ]; then local show_left_separator="#[fg=$color,bg=$thm_gray,nobold,nounderscore,noitalics]$status_left_separator" local show_icon="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$icon " @@ -164,8 +171,7 @@ build_status_module() { local show_right_separator="#[fg=$color,bg=$thm_gray,nobold,nounderscore,noitalics]$status_right_separator" - if [ "$status_connect_separator" = "yes" ] - then + if [ "$status_connect_separator" = "yes" ]; then local show_left_separator="#[fg=$color,nobold,nounderscore,noitalics]$status_left_separator" local show_right_separator="#[fg=$color,bg=$color,nobold,nounderscore,noitalics]$status_right_separator" @@ -176,21 +182,29 @@ build_status_module() { fi - if [ "$status_right_separator_inverse" = "yes" ] - then - if [ "$status_connect_separator" = "yes" ] - then + if [ "$status_left_separator_inverse" = "yes" ]; then + if [ "$status_connect_separator" = "yes" ]; then + local show_left_separator="#[fg=$thm_gray,bg=$color,nobold,nounderscore,noitalics]$status_left_separator" + else + local show_left_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$status_left_separator" + fi + fi + + if [ "$status_right_separator_inverse" = "yes" ]; then + if [ "$status_connect_separator" = "yes" ]; then local show_right_separator="#[fg=$thm_gray,bg=$color,nobold,nounderscore,noitalics]$status_right_separator" else local show_right_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$status_right_separator" fi fi - if [ $(($index)) -eq 0 ] - then + if [ $((index)) -eq 0 ]; then + if [ "$status_left_separator_inverse" = "yes" ]; then + local show_left_separator="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$status_left_separator" + else local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" + fi fi - echo "$show_left_separator$show_icon$show_text$show_right_separator" } @@ -201,13 +215,13 @@ load_modules() { local modules_status_path=$PLUGIN_DIR/status local modules_window_path=$PLUGIN_DIR/window - local module_index=0; + local module_index=0 local module_name local loaded_modules local IN=$modules_list # https://stackoverflow.com/questions/918886/how-do-i-split-a-string-on-a-delimiter-in-bash#15988793 - while [ "$IN" != "$iter" ] ;do + while [ "$IN" != "$iter" ]; do # extract the substring from start of string up to delimiter. iter=${IN%% *} # delete this first "element" AND next separator, from $IN. @@ -219,9 +233,8 @@ load_modules() { local module_path=$modules_custom_path/$module_name.sh source $module_path - if [ 0 -eq $? ] - then - loaded_modules="$loaded_modules$( show_$module_name $module_index )" + if [ 0 -eq $? ]; then + loaded_modules="$loaded_modules$(show_$module_name $module_index)" module_index=$module_index+1 continue fi @@ -229,9 +242,8 @@ load_modules() { local module_path=$modules_status_path/$module_name.sh source $module_path - if [ 0 -eq $? ] - then - loaded_modules="$loaded_modules$( show_$module_name $module_index )" + if [ 0 -eq $? ]; then + loaded_modules="$loaded_modules$(show_$module_name $module_index)" module_index=$module_index+1 continue fi @@ -239,9 +251,8 @@ load_modules() { local module_path=$modules_window_path/$module_name.sh source $module_path - if [ 0 -eq $? ] - then - loaded_modules="$loaded_modules$( show_$module_name $module_index )" + if [ 0 -eq $? ]; then + loaded_modules="$loaded_modules$(show_$module_name $module_index)" module_index=$module_index+1 continue fi @@ -263,14 +274,14 @@ main() { # shellcheck source=catppuccin-frappe.tmuxtheme # https://github.com/dylanaraps/pure-sh-bible#parsing-a-keyval-file while IFS='=' read -r key val; do - # Skip over lines containing comments. - # (Lines starting with '#'). - [ "${key##\#*}" ] || continue + # Skip over lines containing comments. + # (Lines starting with '#'). + [ "${key##\#*}" ] || continue - # '$key' stores the key. - # '$val' stores the value. - eval "local $key"="$val" - done < "${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" + # '$key' stores the key. + # '$val' stores the value. + eval "local $key"="$val" + done <"${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" # status set status "on" @@ -295,28 +306,31 @@ main() { # --------=== Statusline local window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") + local window_left_separator_inverse=$(get_tmux_option "@catppuccin_window_left_separator_inverse" "no") local window_right_separator=$(get_tmux_option "@catppuccin_window_right_separator" "█") + local window_right_separator_inverse=$(get_tmux_option "@catppuccin_window_right_separator_inverse" "no") local window_middle_separator=$(get_tmux_option "@catppuccin_window_middle_separator" "█ ") local window_number_position=$(get_tmux_option "@catppuccin_window_number_position" "left") # right, left - local window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left + local window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left - local window_format=$( load_modules "window_default_format") - local window_current_format=$( load_modules "window_current_format") + local window_format=$(load_modules "window_default_format") + local window_current_format=$(load_modules "window_current_format") setw window-status-format "$window_format" setw window-status-current-format "$window_current_format" local status_left_separator=$(get_tmux_option "@catppuccin_status_left_separator" "") + local status_left_separator_inverse=$(get_tmux_option "@catppuccin_status_left_separator_inverse" "no") local status_right_separator=$(get_tmux_option "@catppuccin_status_right_separator" "█") local status_right_separator_inverse=$(get_tmux_option "@catppuccin_status_right_separator_inverse" "no") local status_connect_separator=$(get_tmux_option "@catppuccin_status_connect_separator" "yes") local status_fill=$(get_tmux_option "@catppuccin_status_fill" "icon") local status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") - local loaded_modules_right=$( load_modules "$status_modules_right") + local loaded_modules_right=$(load_modules "$status_modules_right") local status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") - local loaded_modules_left=$( load_modules "$status_modules_left") + local loaded_modules_left=$(load_modules "$status_modules_left") set status-left "$loaded_modules_left" set status-right "$loaded_modules_right"