From a43527df70afdcedb8d9ee8d159e7362a1e8d984 Mon Sep 17 00:00:00 2001 From: vdbewout Date: Tue, 30 Jan 2024 14:48:24 +0100 Subject: [PATCH 01/72] perf(load_modules): only check relevant directories --- catppuccin.tmux | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index 9b84ab5..da1e5f4 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -259,12 +259,8 @@ build_status_module() { load_modules() { local modules_list=$1 - - local custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" - local modules_custom_path=$custom_path - local modules_status_path=$PLUGIN_DIR/status - local modules_window_path=$PLUGIN_DIR/window - local modules_pane_path=$PLUGIN_DIR/pane + shift + local module_directories=("$@") local -i module_index=0; local module_name @@ -282,7 +278,7 @@ load_modules() { module_name=$iter - for module_dir in "${modules_custom_path}" "${modules_status_path}" "${modules_window_path}" "${modules_pane_path}" ; do + for module_dir in "${module_directories[@]}" ; do module_path="$module_dir/$module_name.sh" if [ -r "$module_path" ]; then @@ -318,6 +314,13 @@ main() { eval "local $key"="$val" done < "${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" + # module directories + local custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" + local modules_custom_path=$custom_path + local modules_status_path=$PLUGIN_DIR/status + local modules_window_path=$PLUGIN_DIR/window + local modules_pane_path=$PLUGIN_DIR/pane + # status set status "on" set status-bg "${thm_bg}" @@ -338,7 +341,7 @@ main() { local pane_middle_separator=$(get_tmux_option "@catppuccin_pane_middle_separator" "█") local pane_right_separator=$(get_tmux_option "@catppuccin_pane_right_separator" "█") local pane_number_position=$(get_tmux_option "@catppuccin_pane_number_position" "left") # right, left - local pane_format=$( load_modules "pane_default_format") + local pane_format=$(load_modules "pane_default_format" "$modules_custom_path" "$modules_pane_path") setw pane-border-status "$pane_border_status" setw pane-active-border-style "$pane_active_border_style" @@ -359,8 +362,8 @@ main() { 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_format=$( load_modules "window_default_format") - local window_current_format=$( load_modules "window_current_format") + local window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") + local window_current_format=$(load_modules "window_current_format" "$modules_custom_path" "$modules_window_path") setw window-status-format "$window_format" setw window-status-current-format "$window_current_format" @@ -372,10 +375,10 @@ main() { 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" "$modules_custom_path" "$modules_status_path") 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" "$modules_custom_path" "$modules_status_path") set status-left "$loaded_modules_left" set status-right "$loaded_modules_right" From 51b85e07a981d531ae18ea79dba2f665be2adee2 Mon Sep 17 00:00:00 2001 From: YongJieYongJie Date: Wed, 7 Feb 2024 00:22:10 -0800 Subject: [PATCH 02/72] feat(pane): different border color if pane_synchronized --- catppuccin.tmux | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index da1e5f4..bae70b3 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -336,7 +336,10 @@ main() { local pane_status_enable=$(get_tmux_option "@catppuccin_pane_status_enabled" "no") # yes local pane_border_status=$(get_tmux_option "@catppuccin_pane_border_status" "off") # bottom local pane_border_style=$(get_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}") - local pane_active_border_style=$(get_tmux_option "@catppuccin_pane_active_border_style" "fg=${thm_orange}") + local pane_active_border_style=$(\ + get_tmux_option "@catppuccin_pane_active_border_style" \ + "#{?pane_in_mode,fg=${thm_yellow},#{?pane_synchronized,fg=${thm_magenta},fg=${thm_orange}}}" + ) local pane_left_separator=$(get_tmux_option "@catppuccin_pane_left_separator" "█") local pane_middle_separator=$(get_tmux_option "@catppuccin_pane_middle_separator" "█") local pane_right_separator=$(get_tmux_option "@catppuccin_pane_right_separator" "█") From 1882a279257176258ac60a3eda441ed17062c581 Mon Sep 17 00:00:00 2001 From: Henri Sota Date: Sat, 17 Feb 2024 21:04:18 +0100 Subject: [PATCH 03/72] feat(uptime): add uptime module based on robhurring/tmux-uptime --- README.md | 22 ++++++++++++++++++++++ status/uptime.sh | 11 +++++++++++ 2 files changed, 33 insertions(+) create mode 100644 status/uptime.sh diff --git a/README.md b/README.md index 6ef5d28..11c3dfd 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ 6. [Battery module](#battery-module) 7. [CPU module](#CPU-module) 8. [Weather module](#weather-module) + 9. [Uptime module](#uptime-module) 5. [Create a custom module](#create-a-custom-module) 6. [Configuration Examples](#configuration-examples) 1. [Config 1](#config-1) @@ -369,6 +370,27 @@ Add the weather module to the status modules list. set -g @catppuccin_status_modules_right "... weather ..." ``` +### Uptime module + +#### Requirements +This module depends on [tmux-uptime](https://github.com/robhurring/tmux-uptime). + +#### Install +The prefered way to install tmux-uptime is using [TPM](https://github.com/tmux-plugins/tpm). + +#### Configure +Load tmux-uptime after you load catppuccin. +```sh +set -g @plugin 'catppuccin/tmux' +... +set -g @plugin 'robhurring/tmux-uptime' +``` + +Add the uptime module to the status modules list. +```sh +set -g @catppuccin_status_modules_right "... uptime ..." +``` + ## Create a custom module It is possible to add a new custom module or overrite any of the existing modules. diff --git a/status/uptime.sh b/status/uptime.sh new file mode 100644 index 0000000..f531d57 --- /dev/null +++ b/status/uptime.sh @@ -0,0 +1,11 @@ +# Requires https://github.com/robhurring/tmux-uptime. +show_uptime() { + local index=$1 + local icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" + local color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" + local text="$(get_tmux_option "@catppuccin_uptime_text" "#{uptime}")" + + local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" +} From 307edce7da9aa241cec79a80789682b7042fd372 Mon Sep 17 00:00:00 2001 From: Henri Sota Date: Sun, 18 Feb 2024 10:34:21 +0100 Subject: [PATCH 04/72] feat(load): add load module based on jamesoff/tmux-loadavg --- README.md | 22 ++++++++++++++++++++++ status/load.sh | 11 +++++++++++ 2 files changed, 33 insertions(+) create mode 100644 status/load.sh diff --git a/README.md b/README.md index 6ef5d28..745ae9e 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ 6. [Battery module](#battery-module) 7. [CPU module](#CPU-module) 8. [Weather module](#weather-module) + 9. [Load module](#load-module) 5. [Create a custom module](#create-a-custom-module) 6. [Configuration Examples](#configuration-examples) 1. [Config 1](#config-1) @@ -369,6 +370,27 @@ Add the weather module to the status modules list. set -g @catppuccin_status_modules_right "... weather ..." ``` +### Load module + +#### Requirements +This module depends on [tmux-loadavg](https://github.com/jamesoff/tmux-loadavg). + +#### Install +The prefered way to install tmux-loadavg is using [TPM](https://github.com/tmux-plugins/tpm). + +#### Configure +Load tmux-weather after you load catppuccin. +```sh +set -g @plugin 'catppuccin/tmux' +... +set -g @plugin 'jamesoff/tmux-loadavg' +``` + +Add the weather module to the status modules list. +```sh +set -g @catppuccin_status_modules_right "... load ..." +``` + ## Create a custom module It is possible to add a new custom module or overrite any of the existing modules. diff --git a/status/load.sh b/status/load.sh new file mode 100644 index 0000000..942c7f3 --- /dev/null +++ b/status/load.sh @@ -0,0 +1,11 @@ +show_load() { + local index=$1 + local icon="$(get_tmux_option "@catppuccin_load_icon" "󰊚")" + local color="$(get_tmux_option "@catppuccin_load_color" "$thm_blue")" + local text="$(get_tmux_option "@catppuccin_load_text" "#{load_full}")" + + local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" +} + From e321a25dabfda6c91301cbc0501eecf453f79b06 Mon Sep 17 00:00:00 2001 From: Connor Deckers Date: Sat, 2 Mar 2024 13:51:49 +1100 Subject: [PATCH 05/72] feat(config): allow status bar to be disabled by default This allows setting the status bar visibility on load, rather than forcing it to be on by default. It also prevents flashing from the status bar if the status bar is disabled in config after plugins are loaded. --- README.md | 4 ++++ catppuccin.tmux | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ef5d28..4141042 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,10 @@ set -g @catppuccin_pane_active_border_style "fg=red" # Use a value compatible wi ### Status +#### Set the default status bar visibility +```sh +set -g @catppuccin_status_default "off" # defaults to "on" +``` #### Set the status module left separator: ```sh diff --git a/catppuccin.tmux b/catppuccin.tmux index da1e5f4..ecf619e 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -322,7 +322,8 @@ main() { local modules_pane_path=$PLUGIN_DIR/pane # status - set status "on" + local status_default=$(get_tmux_option "@catppuccin_status_default" "on") + set status "$status_default" set status-bg "${thm_bg}" set status-justify "left" set status-left-length "100" From 36a5b0584cf585b867605d23c00960174afeaae5 Mon Sep 17 00:00:00 2001 From: Carlos Ortiz <574641+cortiz@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:36:40 -0600 Subject: [PATCH 06/72] docs(README.md): fix minor spelling errors (#151) --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6ef5d28..503fc2c 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,8 @@ ## Installation -In order to have the icons displayed correctly please use / update your favorite [patched font](https://www.nerdfonts.com/font-downloads). -If you do not have a patched font installed, you can override or remove any icon. Check the documentation bellow on the options available. +In order to have the icons displayed correctly please use/update your favorite [patched font](https://www.nerdfonts.com/font-downloads). +If you do not have a patched font installed, you can override or remove any icon. Check the documentation below on the options available. ### TPM @@ -59,7 +59,7 @@ set -g @plugin 'catppuccin/tmux' set -g @plugin 'tmux-plugins/tpm' ``` -3. (Optional) Set your preferred flavour, it defaults to `"mocha"`: +3. (Optional) Set your preferred flavor, it defaults to `"mocha"`: ```bash set -g @catppuccin_flavour 'latte' # or frappe, macchiato, mocha @@ -73,11 +73,11 @@ set -g @catppuccin_flavour 'latte' # or frappe, macchiato, mocha ## Overview ![Default](./assets/overview.png) -This is a diagram on how the theme is split between it's components. +This is a diagram of how the theme is split between its components. ## Configuration options -All flavours support certain levels of customization that match our [Catppuccin +All flavors support certain levels of customization that match our [Catppuccin Style Guide][style-guide]. To add these customizations, add any of the following options to your Tmux configuration. @@ -187,13 +187,13 @@ set -g @catppuccin_window_current_text "#{b:pane_current_path}" # use "#W" for a ```sh set -g @catppuccin_window_current_format_directory_text "#{b:pane_current_path}" ``` -Use this to overide the way the current directory is displayed. +Use this to override the way the current directory is displayed. #### Set the directory format ```sh set -g @catppuccin_window_format_directory_text "#{b:pane_current_path}" ``` -Use this to overide the way the directory is displayed. +Use this to override the way the directory is displayed. ### Pane @@ -231,8 +231,8 @@ Values: set -g @catppuccin_status_connect_separator "yes" ``` Values: -- yes - the background color of the separator will not blend in with the brackground color of tmux -- no - the background color of the separator will blend in with the brackground color of tmux +- yes - the background color of the separator will not blend in with the background color of tmux +- no - the background color of the separator will blend in with the background color of tmux #### Set the status module color fill: @@ -312,7 +312,7 @@ set -g @catppuccin_date_time_icon "null" This module depends on [tmux-battery](https://github.com/tmux-plugins/tmux-battery/tree/master). #### Install -The prefered way to install tmux-battery is using [TPM](https://github.com/tmux-plugins/tpm). +The preferred way to install tmux-battery is using [TPM](https://github.com/tmux-plugins/tpm). #### Configure Load tmux-battery after you load catppuccin. @@ -333,7 +333,7 @@ set -g @catppuccin_status_modules_right "... battery ..." This module depends on [tmux-cpu](https://github.com/tmux-plugins/tmux-cpu/tree/master). #### Install -The prefered way to install tmux-cpu is using [TPM](https://github.com/tmux-plugins/tpm). +The preferred way to install tmux-cpu is using [TPM](https://github.com/tmux-plugins/tpm). #### Configure Load tmux-cpu after you load catppuccin. @@ -354,7 +354,7 @@ set -g @catppuccin_status_modules_right "... cpu ..." This module depends on [tmux-weather](https://github.com/xamut/tmux-weather). #### Install -The prefered way to install tmux-cpu is using [TPM](https://github.com/tmux-plugins/tpm). +The preferred way to install tmux-weather is using [TPM](https://github.com/tmux-plugins/tpm). #### Configure Load tmux-weather after you load catppuccin. @@ -371,7 +371,7 @@ set -g @catppuccin_status_modules_right "... weather ..." ## Create a custom module -It is possible to add a new custom module or overrite any of the existing modules. +It is possible to add a new custom module or overwrite any of the existing modules. Look into custom/README.md for more details. @@ -385,7 +385,7 @@ When switching between configurations run: ```sh tmux kill-server ``` -In order to kill the tmux server and clear all global variables. +To kill the tmux server and clear all global variables. ### Config 1 From cbaf76cdddd38ed0de93db73ab2383a189452e65 Mon Sep 17 00:00:00 2001 From: Hamothy <58985301+sgoudham@users.noreply.github.com> Date: Wed, 6 Mar 2024 21:09:55 +0000 Subject: [PATCH 07/72] docs(README.md): improve manual install steps (#152) --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 503fc2c..a4c9427 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,13 @@ set -g @catppuccin_flavour 'latte' # or frappe, macchiato, mocha ### Manual -1. Copy your desired theme's configuration contents into your Tmux config (usually stored at `~/.tmux.conf`) -2. Reload Tmux by either restarting the session or reloading it with `tmux source-file ~/.tmux.conf` +1. Clone this repository to your desired location (e.g. + `~/.config/tmux/plugins/catppuccin`) +2. Add the following line to your `tmux.conf` file: + `run ~/.config/tmux/plugins/catppuccin/catppuccin.tmux` +3. (Optional) Set your preferred flavor and/or add configuration options as + listed in [Configuration Options](#configuration-options). +4. Reload Tmux by either restarting the session or reloading it with `tmux source-file ~/.tmux.conf` ## Overview From 0be44ee9bd226cf6b9779d4ebd7f3d95362efce5 Mon Sep 17 00:00:00 2001 From: Roeeeee <35409124+5c077m4n@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:37:14 +0000 Subject: [PATCH 08/72] docs(README.md): add missing formatting for setting tmux options (#132) --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index a4c9427..7dac28d 100644 --- a/README.md +++ b/README.md @@ -204,11 +204,15 @@ Use this to override the way the directory is displayed. #### Set the pane border style: +```sh set -g @catppuccin_pane_border_style "fg=blue" # Use a value compatible with the standard tmux 'pane-border-style' +``` #### Set the pane active border style: +```sh set -g @catppuccin_pane_active_border_style "fg=red" # Use a value compatible with the standard tmux 'pane-border-active-style' +``` ### Status From 0f1d4a365e05e2ad2f593ed73a2eaa0197a24949 Mon Sep 17 00:00:00 2001 From: Hamothy <58985301+sgoudham@users.noreply.github.com> Date: Thu, 7 Mar 2024 00:55:28 +0000 Subject: [PATCH 09/72] docs(custom): fix outdated module name (#153) --- .gitignore | 1 - custom/README.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0d82d79..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -custom diff --git a/custom/README.md b/custom/README.md index e55aa9b..b4a11cb 100644 --- a/custom/README.md +++ b/custom/README.md @@ -13,7 +13,7 @@ Use the [Module template](#module-template) (or example.sh) as a starting point Save the new module under this folder using the module name as the file name and .sh as the extension. Update the status module list with your module. ```sh -set -g @catppuccin_status_modules "... ..." +set -g @catppuccin_status_modules_right "... ..." ``` From 219ff4330b00e7011c429fbc2bd082db0c83624d Mon Sep 17 00:00:00 2001 From: Henri Sota <56848082+henrisota@users.noreply.github.com> Date: Thu, 7 Mar 2024 02:02:05 +0100 Subject: [PATCH 10/72] docs(README.md) use correct option for default window color (#137) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7dac28d..31abd5b 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ Values: #### Override the window default colors: ```sh -set -g @catppuccin_window_default_text "color" # text color +set -g @catppuccin_window_default_color "color" # text color set -g @catppuccin_window_default_background "color" ``` From 32df6db4b44ce901b7a9a10d1299d507dd218641 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:58:25 +0100 Subject: [PATCH 11/72] refactor: re-include gitignore (#154) Ignore custom (with the exception of documentation/examples) so no custom user modules make it upstream --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..beab4f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +custom +!custom/README.md +!custom/example.sh From 8cb36097d19cef6a0ab42b05b58322965eb01110 Mon Sep 17 00:00:00 2001 From: Wen Sun Date: Fri, 8 Mar 2024 14:33:28 +0900 Subject: [PATCH 12/72] Add space to default window status icons --- README.md | 14 +++++++------- catppuccin.tmux | 15 +++++++-------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 207235b..1c72e25 100644 --- a/README.md +++ b/README.md @@ -131,13 +131,13 @@ Values: #### Override windows status icons ```sh -set -g @catppuccin_icon_window_last "󰖰" -set -g @catppuccin_icon_window_current "󰖯" -set -g @catppuccin_icon_window_zoom "󰁌" -set -g @catppuccin_icon_window_mark "󰃀" -set -g @catppuccin_icon_window_silent "󰂛" -set -g @catppuccin_icon_window_activity "󰖲" -set -g @catppuccin_icon_window_bell "󰂞" +set -g @catppuccin_icon_window_last "󰖰 " +set -g @catppuccin_icon_window_current "󰖯 " +set -g @catppuccin_icon_window_zoom "󰁌 " +set -g @catppuccin_icon_window_mark "󰃀 " +set -g @catppuccin_icon_window_silent "󰂛 " +set -g @catppuccin_icon_window_activity "󱅫 " +set -g @catppuccin_icon_window_bell "󰂞 " ``` ### Window default diff --git a/catppuccin.tmux b/catppuccin.tmux index be45bb5..0f94bf1 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -37,14 +37,13 @@ setw() { build_window_icon() { local window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") - - local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") - local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") - local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") - local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") - local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") - local custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󰖲") - local custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞") + local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰 ") + local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯 ") + local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌 ") + local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀 ") + local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛 ") + 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 From 45e4dec2bb683e1aef0111b1ca154277bedb27e3 Mon Sep 17 00:00:00 2001 From: Jesse Storms Date: Wed, 13 Mar 2024 18:36:53 +0100 Subject: [PATCH 13/72] Fixed typos and formatting oversight in readme.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1c72e25..29ef238 100644 --- a/README.md +++ b/README.md @@ -393,16 +393,17 @@ This module depends on [tmux-loadavg](https://github.com/jamesoff/tmux-loadavg). The prefered way to install tmux-loadavg is using [TPM](https://github.com/tmux-plugins/tpm). #### Configure -Load tmux-weather after you load catppuccin. +Load tmux-loadavg after you load catppuccin. ```sh set -g @plugin 'catppuccin/tmux' ... set -g @plugin 'jamesoff/tmux-loadavg' ``` -Add the weather module to the status modules list. +Add the load module to the status modules list. ```sh set -g @catppuccin_status_modules_right "... load ..." +``` ### Uptime module @@ -414,6 +415,7 @@ The prefered way to install tmux-uptime is using [TPM](https://github.com/tmux-p #### Configure Load tmux-uptime after you load catppuccin. + ```sh set -g @plugin 'catppuccin/tmux' ... From 4eb10fa510548891ac9c5afc5b43679096361fe3 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Fri, 15 Mar 2024 16:34:04 +0100 Subject: [PATCH 14/72] ci: add testing & shellcheck workflows (#159) --- .github/scripts/test.bash | 71 ++++++++++++++++++++++++++++++++ .github/workflows/shellcheck.yml | 33 +++++++++++++++ .github/workflows/test.yml | 53 ++++++++++++++++++++++++ 3 files changed, 157 insertions(+) create mode 100755 .github/scripts/test.bash create mode 100644 .github/workflows/shellcheck.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/scripts/test.bash b/.github/scripts/test.bash new file mode 100755 index 0000000..513800a --- /dev/null +++ b/.github/scripts/test.bash @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +# +# Usage: +# ./test.bash catpuccin-tmux/catpuccin-tmux.tmux +# ./test.bash catpuccin-tmux/catpuccin-tmux.tmux ./config-example1 +# + +SOCKET_NAME="${SOCKET_NAME:-test}" + +tmux() { + command tmux -L "$SOCKET_NAME" "$@" +} + +start_tmux_server() { + echo "Starting tmux server" >&2 + tmux new -s dummy -d +} + +kill_tmux_server() { + echo "Stopping tmux server" >&2 + tmux kill-server +} + +check() { + local out exit_code + exit_code="$1" + out="$2" + + if [ "$exit_code" -ne 0 ] || [ -n "$out" ]; then + echo "Failed with exit code $exit_code and output:" + echo "$out" + exit 1 + fi + +} + +main() { + local config_file plugin output exit_code + + plugin="$1" + config_file="$2" + + echo "Using socket '$SOCKET_NAME'" >&2 + + # Make sure its a new/clean server + kill_tmux_server 2>/dev/null + start_tmux_server + + if [ -z "$config_file" ]; then + echo "No config file provided" >&2 + else + echo "sourcing config file '$config_file'" >&2 + tmux source-file "$config_file" + fi + + if [ -z "$plugin" ]; then + echo "ERROR: No path to the plugin provided" >&2 + exit 1 + else + echo "Running plugin: $plugin" >&2 + output=$(tmux run-shell "$plugin" 2>&2) + exit_code="$?" + + check "$exit_code" "$output" + fi + + kill_tmux_server +} + +main "$@" diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml new file mode 100644 index 0000000..127b024 --- /dev/null +++ b/.github/workflows/shellcheck.yml @@ -0,0 +1,33 @@ +--- +name: Shellcheck +permissions: + contents: read +on: + pull_request: + paths-ignore: + - "*.md" + - "assets/**" + push: + paths-ignore: + - "*.md" + - "assets/**" + branches: + - main + workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + shellcheck: + name: Shellcheck + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run ShellCheck + uses: ludeeus/action-shellcheck@master + with: + severity: error + additional_files: "catppuccin.tmux" + env: + SHELLCHECK_OPTS: "-s bash" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..7b85e57 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,53 @@ +--- +name: Tests +permissions: + contents: read +on: + pull_request: + paths-ignore: + - "*.md" + - "assets/**" + push: + paths-ignore: + - "*.md" + - "assets/**" + branches: + - main + workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + ubuntu: + name: Test + runs-on: ubuntu-latest + + steps: + - name: Install tmux + run: sudo apt-get update && sudo apt-get install -y tmux=3.2a-4ubuntu0.2 + - uses: actions/checkout@v4 + - name: Config and Plugin + shell: bash + run: | + bash --version + tmux -V + ./.github/scripts/test.bash ./catppuccin.tmux + + old-bash: + name: "Old Bash" + runs-on: ubuntu-latest + container: + image: bash:3.2.57 # Bash version used by macos + steps: + - uses: actions/checkout@v4 + - name: Check Syntax is Valid + shell: bash + run: | + # No tmux available in this container + tmp="$(mktemp -d)" + touch "$tmp/tmux" + chmod +x "$tmp/tmux" + export PATH="$tmp:$PATH" + bash --version + ./.github/scripts/test.bash ./catppuccin.tmux From 2a3bc9ea9124e93c00e4aafff06f49974c3dcc45 Mon Sep 17 00:00:00 2001 From: qadzek <84473512+qadzek@users.noreply.github.com> Date: Sun, 17 Mar 2024 16:41:20 +0100 Subject: [PATCH 15/72] Clarify creating a custom module (#164) * Clarify creating a custom module * Fix path Co-authored-by: Hamothy <58985301+sgoudham@users.noreply.github.com> * Fix formatting and mention required plugins * docs: indentation & small tweaks --------- Co-authored-by: Hamothy <58985301+sgoudham@users.noreply.github.com> Co-authored-by: sgoudham --- README.md | 2 +- custom/README.md | 95 +++++++++++++++++++++++++++++++---------------- custom/example.sh | 18 ++++++--- 3 files changed, 75 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 29ef238..f14b54f 100644 --- a/README.md +++ b/README.md @@ -431,7 +431,7 @@ set -g @catppuccin_status_modules_right "... uptime ..." It is possible to add a new custom module or overwrite any of the existing modules. -Look into custom/README.md for more details. +For further details, see the documentation in [custom/README.md](custom/README.md) Any file added to the custom folder will be preserved when updating catppuccin. diff --git a/custom/README.md b/custom/README.md index b4a11cb..65f66bf 100644 --- a/custom/README.md +++ b/custom/README.md @@ -1,43 +1,72 @@ -# User defined modules +# User Defined Modules -## Description +This folder is used to store user defined modules. You can use this folder to +add a new module or override any existing module. To override an existing +module, make sure that you use the same name for your module as the module you +want to override. You can also override the window module for the current and +default window. -This folder is used to store user defined modules. -You can use this folder to add a new module or override any existing module. -To override an existing module, make sure you use the same name for your module as the module you want to override. -You can also override the window module for current and default window. +## Creating A New Module -## Create a new module +> [!NOTE] +> Changes will only be applied after reloading your Tmux configuration by executing `tmux source-file ~/.tmux.conf`. -Use the [Module template](#module-template) (or example.sh) as a starting point when creating a new module. -Save the new module under this folder using the module name as the file name and .sh as the extension. -Update the status module list with your module. -```sh -set -g @catppuccin_status_modules_right "... ..." +You can create a custom module by following the steps outlined below. This can be something you create entirely by yourself or integrating an existing Tmux plugin. +1. Create a new file in `~/.tmux/plugins/tmux/custom/.sh` to store the custom module. + - The file **must** end in `.sh` + - The file **does not** need to be set as executable. + +2. Copy the following template to this new file. Make sure to replace every instance of `` by the name you chose as filename. + + ```bash + # If this module depends on an external Tmux plugin, say so in a comment. + # E.g.: Requires https://github.com/aaronpowell/tmux-weather + + show_() { # This function name must match the module name! + local index icon color text module + + index=$1 # This variable is used internally by the module loader in order to know the position of this module + + icon="$( get_tmux_option "@catppuccin__icon" "" )" + color="$( get_tmux_option "@catppuccin__color" "$thm_orange" )" + text="$( get_tmux_option "@catppuccin__text" "hello world" )" + + module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" + } + ``` + +3. Add the custom module to the list of modules in `.tmux.conf` + + ```bash + set -g @catppuccin_status_modules_right "... ..." + ``` + +## Customization + +Change the icon to one from [Nerd Fonts](https://www.nerdfonts.com/cheat-sheet). + +Change the color to one of the [official colors](../catppuccin-macchiato.tmuxtheme), for instance `"$thm_cyan"`, or to a hexadecimal color like `"#00ff00"`. + +The text to display can either be: + +- A static text, e.g. `"hello world"`. +- The output of a command, e.g. `"#( date +%T )"`. +- The output of a script, e.g. `"#( $HOME/my_script.sh )"` . Any script will do, e.g. a Bash or Python script that prints some text, but ensure that it is executable: `chmod u+x my_script.sh`. +- An existing Tmux plugin, e.g. `" #{forecast} "` for the [Tmux Weather plugin](https://github.com/aaronpowell/tmux-weather). + +Note that the icon and the color can be generated dynamically as well, for instance by having a Bash script `echo` a hexadecimal color. + +To modify how often the modules are updated, add the following to `.tmux.conf`: + +```tmux +set -g status-interval ``` -## Module template -```sh -show_() { # save this module in a file with the name .sh - local index=$1 # this variable is used by the module loader in order to know the position of this module - local icon="$(get_tmux_option "@catppuccin__icon" "")" - local color="$(get_tmux_option "@catppuccin__color" "")" - local text="$(get_tmux_option "@catppuccin__text" "")" +To configure a custom path for your modules, set this option: - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) - - echo "$module" -} -``` - -## Configure custom modules path - -You can configure a custom path for your modules by setting the `@catppuccin_custom_plugin_dir` option. -```sh +```tmux set -g @catppuccin_custom_plugin_dir "" ``` - -To use the output of a command, use e.g. `local text="$(get_tmux_option "@catppuccin_test_text" "#(date +%T)")"`. - -To use the output of a script, use e.g. `local text="$(get_tmux_option "@catppuccin_test_text" "#($HOME/my_script.sh)")"`. diff --git a/custom/example.sh b/custom/example.sh index 613caa7..3b09367 100644 --- a/custom/example.sh +++ b/custom/example.sh @@ -1,10 +1,16 @@ -show_example() { - local index=$1 - local icon="$(get_tmux_option "@catppuccin_test_icon" "󰙨")" - local color="$(get_tmux_option "@catppuccin_test_color" "$thm_blue")" - local text="$(get_tmux_option "@catppuccin_test_text" "It works!")" +# If this module depends on an external Tmux plugin, say so in a comment. +# E.g.: Requires https://github.com/aaronpowell/tmux-weather - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) +show_test() { # This function name must match the module name! + local index icon color text module + + index=$1 # This variable is used internally by the module loader in order to know the position of this module + icon="$( get_tmux_option "@catppuccin_test_icon" "" )" + color="$( get_tmux_option "@catppuccin_test_color" "$thm_orange" )" + text="$( get_tmux_option "@catppuccin_test_text" "hello world" )" + + module=$( build_status_module "$index" "$icon" "$color" "$text" ) echo "$module" } + From 843946e1761c48b408aea6aec48633dcc4b70988 Mon Sep 17 00:00:00 2001 From: David Kaufman Date: Sun, 17 Mar 2024 16:43:29 +0100 Subject: [PATCH 16/72] make status_justify configurable (#145) * make status_justify configurable * added README * moved below status_default * refactor: pr comments --------- Co-authored-by: Hamothy <58985301+sgoudham@users.noreply.github.com> Co-authored-by: sgoudham --- README.md | 10 ++++++++++ catppuccin.tmux | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f14b54f..7514082 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,16 @@ Values: - icon - only the icon of the module will have color - all - the entire module will have the same color +#### Set the status module justify value: +```sh +set -g @catppuccin_status_justify "left" +``` +Values: +- left +- centre - puts the window list in the relative centre of the available free space +- right +- absolute-centre - uses the centre of the entire horizontal space + ### Pane ```sh diff --git a/catppuccin.tmux b/catppuccin.tmux index 0f94bf1..ade9324 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -322,9 +322,11 @@ main() { # status local status_default=$(get_tmux_option "@catppuccin_status_default" "on") + local status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") + set status "$status_default" + set status-justify "$status_justify" set status-bg "${thm_bg}" - set status-justify "left" set status-left-length "100" set status-right-length "100" From c0861b786123d5b375074e3649a2a8575694504e Mon Sep 17 00:00:00 2001 From: Ikko Eltociear Ashimine Date: Mon, 18 Mar 2024 07:26:48 +0900 Subject: [PATCH 17/72] docs(README.md): fix typo `prefered` -> `preferred` --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7514082..6c3436c 100644 --- a/README.md +++ b/README.md @@ -400,7 +400,7 @@ set -g @catppuccin_status_modules_right "... weather ..." This module depends on [tmux-loadavg](https://github.com/jamesoff/tmux-loadavg). #### Install -The prefered way to install tmux-loadavg is using [TPM](https://github.com/tmux-plugins/tpm). +The preferred way to install tmux-loadavg is using [TPM](https://github.com/tmux-plugins/tpm). #### Configure Load tmux-loadavg after you load catppuccin. @@ -421,7 +421,7 @@ set -g @catppuccin_status_modules_right "... load ..." This module depends on [tmux-uptime](https://github.com/robhurring/tmux-uptime). #### Install -The prefered way to install tmux-uptime is using [TPM](https://github.com/tmux-plugins/tpm). +The preferred way to install tmux-uptime is using [TPM](https://github.com/tmux-plugins/tpm). #### Configure Load tmux-uptime after you load catppuccin. From d0371badc7fe61819d0dbfb55acdcb4cbd40895e Mon Sep 17 00:00:00 2001 From: Muhammad Zafar Date: Tue, 19 Mar 2024 00:16:23 +1100 Subject: [PATCH 18/72] Add tmux-clima as another module for weather (#161) * Add tmux-clima as a module * Update tmux option names according to the clima module * Add README for tmux-clima * Update README.md according to suggestions * Remove unnecessary readme part --------- Co-authored-by: vdbewout --- README.md | 33 ++++++++++++++++++++++++++++----- status/clima.sh | 11 +++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 status/clima.sh diff --git a/README.md b/README.md index 6c3436c..271174a 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ 5. [Customizing modules](#customizing-modules) 6. [Battery module](#battery-module) 7. [CPU module](#CPU-module) - 8. [Weather module](#weather-module) + 8. [Weather modules](#weather-modules) 9. [Load module](#load-module) 10. [Uptime module](#uptime-module) 5. [Create a custom module](#create-a-custom-module) @@ -373,15 +373,17 @@ Add the cpu module to the status modules list. set -g @catppuccin_status_modules_right "... cpu ..." ``` -### Weather module +### Weather modules -#### Requirements +#### tmux-weather + +##### Requirements This module depends on [tmux-weather](https://github.com/xamut/tmux-weather). -#### Install +##### Install The preferred way to install tmux-weather is using [TPM](https://github.com/tmux-plugins/tpm). -#### Configure +##### Configure Load tmux-weather after you load catppuccin. ```sh set -g @plugin 'catppuccin/tmux' @@ -394,6 +396,27 @@ Add the weather module to the status modules list. set -g @catppuccin_status_modules_right "... weather ..." ``` +#### tmux-clima + +##### Requirements +This module depends on [tmux-clima](https://github.com/vascomfnunes/tmux-clima). + +##### Install +The preferred way to install tmux-clima is using [TPM](https://github.com/tmux-plugins/tpm). + +##### Configure +Load tmux-clima after you load catppuccin. +```sh +set -g @plugin 'catppuccin/tmux' +... +set -g @plugin 'vascomfnunes/tmux-clima' +``` + +Add the weather module to the status modules list. +```sh +set -g @catppuccin_status_modules_right "... clima ..." +``` + ### Load module #### Requirements diff --git a/status/clima.sh b/status/clima.sh new file mode 100644 index 0000000..46851d4 --- /dev/null +++ b/status/clima.sh @@ -0,0 +1,11 @@ +# Requires https://github.com/vascomfnunes/tmux-clima +show_clima() { + local index=$1 + local icon="$(get_tmux_option "@catppuccin_clima_icon" "")" + local color="$(get_tmux_option "@catppuccin_clima_color" "$thm_yellow")" + local text="$(get_tmux_option "@catppuccin_clima_text" "#{clima}")" + + local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" +} From 6e40906b2de115edbc438cbb34e6b56274581ee6 Mon Sep 17 00:00:00 2001 From: Valentin Uveges Date: Mon, 18 Mar 2024 17:33:08 +0200 Subject: [PATCH 19/72] fix(window_status): fix window space between text, window status, right separator (#168) --- catppuccin.tmux | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index ade9324..d243787 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -37,23 +37,31 @@ setw() { build_window_icon() { local window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") - local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰 ") - local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯 ") - local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌 ") - local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀 ") - local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛 ") - local custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󱅫 ") - local custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞 ") + local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") + local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") + local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") + local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") + local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") + 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 # #!~[*-]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},}" + local show_window_status="" + show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" + show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" + show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" + show_window_status+="#{?window_active, ${custom_icon_window_current},}" + show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" + show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" + show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" + fi if [ "$window_status_icon_enable" = "no" ] then - local show_window_status="#F" + local show_window_status=" #F" fi echo "$show_window_status" @@ -132,7 +140,7 @@ build_window_format() { if [ "$window_status_enable" = "yes" ] then local icon="$( build_window_icon )" - text="$text $icon" + text="$text$icon" fi if [ "$fill" = "none" ] From e80cb735bbcd264ff971fdf7e58b219b60286c81 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Fri, 22 Mar 2024 19:29:25 +0100 Subject: [PATCH 20/72] feat(uptime): replace plugin with sed (#163) * module(uptime): replace plugin with custom sed * module(uptime): update doc --- README.md | 23 +---------------------- status/uptime.sh | 5 ++--- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 271174a..7b7ba3d 100644 --- a/README.md +++ b/README.md @@ -300,6 +300,7 @@ Available modules: - user - display the username - host - display the hostname - date_time - display the date and time +- uptime - display the uptime - [battery](#battery-module) - display the battery ### Customizing modules @@ -438,28 +439,6 @@ Add the load module to the status modules list. set -g @catppuccin_status_modules_right "... load ..." ``` -### Uptime module - -#### Requirements -This module depends on [tmux-uptime](https://github.com/robhurring/tmux-uptime). - -#### Install -The preferred way to install tmux-uptime is using [TPM](https://github.com/tmux-plugins/tpm). - -#### Configure -Load tmux-uptime after you load catppuccin. - -```sh -set -g @plugin 'catppuccin/tmux' -... -set -g @plugin 'robhurring/tmux-uptime' -``` - -Add the uptime module to the status modules list. -```sh -set -g @catppuccin_status_modules_right "... uptime ..." -``` - ## Create a custom module It is possible to add a new custom module or overwrite any of the existing modules. diff --git a/status/uptime.sh b/status/uptime.sh index f531d57..7b59173 100644 --- a/status/uptime.sh +++ b/status/uptime.sh @@ -1,11 +1,10 @@ -# Requires https://github.com/robhurring/tmux-uptime. show_uptime() { local index=$1 local icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" local color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" - local text="$(get_tmux_option "@catppuccin_uptime_text" "#{uptime}")" + local text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* users.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + local module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } From 809361f5c2a7b5eb2fa75d981dcb8e2f9454800b Mon Sep 17 00:00:00 2001 From: Valentin Uveges Date: Sun, 24 Mar 2024 10:36:51 +0200 Subject: [PATCH 21/72] =?UTF-8?q?feat(status,=20window):=20add=20option=20?= =?UTF-8?q?to=20make=20overwrite=20status=20background=20=E2=80=A6=20(#170?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(status, window): add option to make overwrite status background color, add option to set the separator between windows * feat(window): update documentation * feat(window): update documentation --- README.md | 54 +++++++++++++++++++++++++++++------------- catppuccin.tmux | 63 +++++++++++++++++++++++++++++-------------------- 2 files changed, 74 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 7b7ba3d..59a475e 100644 --- a/README.md +++ b/README.md @@ -18,25 +18,25 @@ ## Content 1. [Themes](#themes) -2. [Installation](#installation) -3. [Overview](#overview) -4. [Configuration options](#configuration-options) +1. [Installation](#installation) +1. [Overview](#overview) +1. [Configuration options](#configuration-options) 1. [Window](#window) - 2. [Window default](#window-default) - 3. [Window current](#window-current) - 4. [Status](#status) - 4. [Pane](#pane) - 5. [Customizing modules](#customizing-modules) - 6. [Battery module](#battery-module) - 7. [CPU module](#CPU-module) - 8. [Weather modules](#weather-modules) - 9. [Load module](#load-module) - 10. [Uptime module](#uptime-module) -5. [Create a custom module](#create-a-custom-module) -6. [Configuration Examples](#configuration-examples) + 1. [Window default](#window-default) + 1. [Window current](#window-current) + 1. [Status](#status) + 1. [Pane](#pane) + 1. [Customizing modules](#customizing-modules) + 1. [Battery module](#battery-module) + 1. [CPU module](#CPU-module) + 1. [Weather modules](#weather-modules) + 1. [Load module](#load-module) + 1. [Uptime module](#uptime-module) +1. [Create a custom module](#create-a-custom-module) +1. [Configuration Examples](#configuration-examples) 1. [Config 1](#config-1) - 2. [Config 2](#config-2) - 3. [Config 3](#config-3) + 1. [Config 2](#config-2) + 1. [Config 3](#config-3) ## Themes @@ -90,6 +90,11 @@ options to your Tmux configuration. ### Window +### Set the window separator +```sh +set -g @catppuccin_window_separator "" +``` + #### Set the window left separator: ```sh set -g @catppuccin_window_left_separator "█" @@ -221,6 +226,21 @@ set -g @catppuccin_pane_active_border_style "fg=red" # Use a value compatible wi #### Set the default status bar visibility ```sh set -g @catppuccin_status_default "off" # defaults to "on" + +``` + +#### Override the default status background color +```sh +set -g @catppuccin_status_background "theme" +``` +This will overwrite the status bar background: +- "theme" will use the color from the selected theme +- "default" will make the status bar transparent +- use hex color codes for other colors + +Note: you need to restart tmux for this to take effect: +```sh +tmux kill-server & tmux ``` #### Set the status module left separator: diff --git a/catppuccin.tmux b/catppuccin.tmux index d243787..cbe6551 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -301,12 +301,18 @@ load_modules() { } main() { - local theme - theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" - # Aggregate all commands in one array local tmux_commands=() + # module directories + local custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" + local modules_custom_path=$custom_path + local modules_status_path=$PLUGIN_DIR/status + local modules_window_path=$PLUGIN_DIR/window + local modules_pane_path=$PLUGIN_DIR/pane + + # load local theme + local theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. # shellcheck source=catppuccin-frappe.tmuxtheme @@ -321,23 +327,30 @@ main() { eval "local $key"="$val" done < "${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" - # module directories - local custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" - local modules_custom_path=$custom_path - local modules_status_path=$PLUGIN_DIR/status - local modules_window_path=$PLUGIN_DIR/window - local modules_pane_path=$PLUGIN_DIR/pane - - # status + # status general local status_default=$(get_tmux_option "@catppuccin_status_default" "on") - local status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") - set status "$status_default" + + local status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") set status-justify "$status_justify" - set status-bg "${thm_bg}" + + local status_background=$(get_tmux_option "@catppuccin_status_background" "theme") + if [ "${status_background}" = "theme" ]; + then + set status-bg "${thm_bg}" + else + if [ "${status_background}" = "default" ] + then + set status-style bg=default + else + set status-bg "${status_background}" + fi + fi + set status-left-length "100" set status-right-length "100" + # messages set message-style "fg=${thm_cyan},bg=${thm_gray},align=centre" set message-command-style "fg=${thm_cyan},bg=${thm_gray},align=centre" @@ -361,14 +374,13 @@ main() { setw pane-border-style "$pane_border_style" setw pane-border-format "$pane_format" + # window + local window_status_separator=$(get_tmux_option "@catppuccin_window_separator" "") + setw window-status-separator "$window_status_separator" - # windows setw window-status-activity-style "fg=${thm_fg},bg=${thm_bg},none" - setw window-status-separator "" setw window-status-style "fg=${thm_fg},bg=${thm_bg},none" - # --------=== Statusline - local window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") local window_right_separator=$(get_tmux_option "@catppuccin_window_right_separator" "█") local window_middle_separator=$(get_tmux_option "@catppuccin_window_middle_separator" "█ ") @@ -376,28 +388,27 @@ main() { local window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left local window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") - local window_current_format=$(load_modules "window_current_format" "$modules_custom_path" "$modules_window_path") - setw window-status-format "$window_format" + + local window_current_format=$(load_modules "window_current_format" "$modules_custom_path" "$modules_window_path") setw window-status-current-format "$window_current_format" + # status module local status_left_separator=$(get_tmux_option "@catppuccin_status_left_separator" "") 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" "$modules_custom_path" "$modules_status_path") - local status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") local loaded_modules_left=$(load_modules "$status_modules_left" "$modules_custom_path" "$modules_status_path") - set status-left "$loaded_modules_left" + + local status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") + local loaded_modules_right=$(load_modules "$status_modules_right" "$modules_custom_path" "$modules_status_path") set status-right "$loaded_modules_right" - # --------=== Modes - # + # modes setw clock-mode-colour "${thm_blue}" setw mode-style "fg=${thm_pink} bg=${thm_black4} bold" From e2d345648cb7e56302ee82fec6cafbbd8db23129 Mon Sep 17 00:00:00 2001 From: Valentin Uveges Date: Sun, 24 Mar 2024 13:33:34 +0200 Subject: [PATCH 22/72] Move code out of main (#172) * feat(status, window): add option to make overwrite status background color, add option to set the separator between windows * feat(window): update documentation * feat(window): update documentation * feat(refactor): move code out of main and into separated files * Update catppuccin.tmux Co-authored-by: vdbe <44153531+vdbe@users.noreply.github.com> * Update catppuccin.tmux Co-authored-by: vdbe <44153531+vdbe@users.noreply.github.com> --------- Co-authored-by: vdbe <44153531+vdbe@users.noreply.github.com> --- builder/module_builder.sh | 68 +++++++++ builder/pane_builder.sh | 64 ++++++++ builder/window_builder.sh | 101 +++++++++++++ catppuccin.tmux | 305 +------------------------------------- utils/module_utils.sh | 37 +++++ utils/tmux_utils.sh | 35 +++++ 6 files changed, 313 insertions(+), 297 deletions(-) create mode 100644 builder/module_builder.sh create mode 100644 builder/pane_builder.sh create mode 100644 builder/window_builder.sh create mode 100644 utils/module_utils.sh create mode 100644 utils/tmux_utils.sh diff --git a/builder/module_builder.sh b/builder/module_builder.sh new file mode 100644 index 0000000..114becd --- /dev/null +++ b/builder/module_builder.sh @@ -0,0 +1,68 @@ +#!/bin/sh + +build_status_module() { + local index=$1 + local icon=$2 + local color=$3 + local text=$4 + + 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 " + local show_text="#[fg=$thm_fg,bg=$thm_gray] $text" + + local show_right_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_separator" + + 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" + + else + local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" + local show_right_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_separator" + fi + + fi + + 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 " + local show_text="#[fg=$thm_bg,bg=$color]$text" + + local show_right_separator="#[fg=$color,bg=$thm_gray,nobold,nounderscore,noitalics]$status_right_separator" + + 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" + + else + local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" + local show_right_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_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 + local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" + fi + + echo "$show_left_separator$show_icon$show_text$show_right_separator" +} + diff --git a/builder/pane_builder.sh b/builder/pane_builder.sh new file mode 100644 index 0000000..1cc5759 --- /dev/null +++ b/builder/pane_builder.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +build_pane_format() { + local number=$1 + local color=$2 + local background=$3 + local text=$4 + local fill=$5 + + if [ "$pane_status_enable" = "yes" ] + then + if [ "$fill" = "none" ] + then + local show_left_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_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]$pane_middle_separator" + local show_text="#[fg=$thm_fg,bg=$thm_gray]$text" + local show_right_separator="#[fg=$thm_gray,bg=$thm_bg]$pane_right_separator" + fi + + if [ "$fill" = "all" ] + then + local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" + local show_number="#[fg=$background,bg=$color]$number" + local show_middle_separator="#[fg=$background,bg=$color,nobold,nounderscore,noitalics]$pane_middle_separator" + local show_text="#[fg=$background,bg=$color]$text" + local show_right_separator="#[fg=$color,bg=$thm_bg]$pane_right_separator" + fi + + if [ "$fill" = "number" ] + then + local show_number="#[fg=$background,bg=$color]$number" + local show_middle_separator="#[fg=$color,bg=$background,nobold,nounderscore,noitalics]$pane_middle_separator" + local show_text="#[fg=$thm_fg,bg=$background]$text" + + if [ "$pane_number_position" = "right" ] + then + local show_left_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" + local show_right_separator="#[fg=$color,bg=$thm_bg]$pane_right_separator" + fi + + if [ "$pane_number_position" = "left" ] + then + local show_right_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_right_separator" + local show_left_separator="#[fg=$color,bg=$thm_bg]$pane_left_separator" + fi + + fi + + local final_pane_format + + if [ "$pane_number_position" = "right" ] + then + final_pane_format="$show_left_separator$show_text$show_middle_separator$show_number$show_right_separator" + fi + + if [ "$pane_number_position" = "left" ] + then + final_pane_format="$show_left_separator$show_number$show_middle_separator$show_text$show_right_separator" + fi + + echo "$final_pane_format" + fi +} diff --git a/builder/window_builder.sh b/builder/window_builder.sh new file mode 100644 index 0000000..821163f --- /dev/null +++ b/builder/window_builder.sh @@ -0,0 +1,101 @@ +#!/bin/sh + +build_window_format() { + local number=$1 + local color=$2 + local background=$3 + local text=$4 + local fill=$5 + + if [ "$window_status_enable" = "yes" ] + then + local icon="$( build_window_icon )" + text="$text$icon" + fi + + 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" + local show_text="#[fg=$thm_fg,bg=$thm_gray]$text" + local show_right_separator="#[fg=$thm_gray,bg=$thm_bg]$window_right_separator" + + fi + + 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" + local show_text="#[fg=$background,bg=$color]$text" + local show_right_separator="#[fg=$color,bg=$thm_bg]$window_right_separator" + + fi + + 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 + 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 + 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 + + local final_window_format + + 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 + final_window_format="$show_left_separator$show_number$show_middle_separator$show_text$show_right_separator" + fi + + echo "$final_window_format" +} + +build_window_icon() { + local window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") + local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") + local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") + local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") + local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") + local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") + 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 + # #!~[*-]MZ + local show_window_status="" + show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" + show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" + show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" + show_window_status+="#{?window_active, ${custom_icon_window_current},}" + show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" + show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" + show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" + + fi + + if [ "$window_status_icon_enable" = "no" ] + then + local show_window_status=" #F" + fi + + echo "$show_window_status" +} diff --git a/catppuccin.tmux b/catppuccin.tmux index cbe6551..2663e78 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -1,304 +1,15 @@ #!/usr/bin/env bash + +# Set path of script 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") +# import +source "${PLUGIN_DIR}/builder/module_builder.sh" +source "${PLUGIN_DIR}/builder/window_builder.sh" +source "${PLUGIN_DIR}/builder/pane_builder.sh" +source "${PLUGIN_DIR}/utils/tmux_utils.sh" +source "${PLUGIN_DIR}/utils/module_utils.sh" - if [ -n "$value" ] - then - if [ "$value" = "null" ] - then - echo "" - - else - echo "$value" - fi - - 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" ";") -} - -build_window_icon() { - local window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") - local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") - local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") - local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") - local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") - local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") - 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 - # #!~[*-]MZ - local show_window_status="" - show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" - show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" - show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" - show_window_status+="#{?window_active, ${custom_icon_window_current},}" - show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" - show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" - show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" - - fi - - if [ "$window_status_icon_enable" = "no" ] - then - local show_window_status=" #F" - fi - - echo "$show_window_status" -} - -build_pane_format() { - local number=$1 - local color=$2 - local background=$3 - local text=$4 - local fill=$5 - - if [ "$pane_status_enable" = "yes" ] - then - if [ "$fill" = "none" ] - then - local show_left_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_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]$pane_middle_separator" - local show_text="#[fg=$thm_fg,bg=$thm_gray]$text" - local show_right_separator="#[fg=$thm_gray,bg=$thm_bg]$pane_right_separator" - fi - - if [ "$fill" = "all" ] - then - local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" - local show_number="#[fg=$background,bg=$color]$number" - local show_middle_separator="#[fg=$background,bg=$color,nobold,nounderscore,noitalics]$pane_middle_separator" - local show_text="#[fg=$background,bg=$color]$text" - local show_right_separator="#[fg=$color,bg=$thm_bg]$pane_right_separator" - fi - - if [ "$fill" = "number" ] - then - local show_number="#[fg=$background,bg=$color]$number" - local show_middle_separator="#[fg=$color,bg=$background,nobold,nounderscore,noitalics]$pane_middle_separator" - local show_text="#[fg=$thm_fg,bg=$background]$text" - - if [ "$pane_number_position" = "right" ] - then - local show_left_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" - local show_right_separator="#[fg=$color,bg=$thm_bg]$pane_right_separator" - fi - - if [ "$pane_number_position" = "left" ] - then - local show_right_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_right_separator" - local show_left_separator="#[fg=$color,bg=$thm_bg]$pane_left_separator" - fi - - fi - - local final_pane_format - - if [ "$pane_number_position" = "right" ] - then - final_pane_format="$show_left_separator$show_text$show_middle_separator$show_number$show_right_separator" - fi - - if [ "$pane_number_position" = "left" ] - then - final_pane_format="$show_left_separator$show_number$show_middle_separator$show_text$show_right_separator" - fi - - echo "$final_pane_format" - fi -} - -build_window_format() { - local number=$1 - local color=$2 - local background=$3 - local text=$4 - local fill=$5 - - if [ "$window_status_enable" = "yes" ] - then - local icon="$( build_window_icon )" - text="$text$icon" - fi - - 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" - local show_text="#[fg=$thm_fg,bg=$thm_gray]$text" - local show_right_separator="#[fg=$thm_gray,bg=$thm_bg]$window_right_separator" - - fi - - 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" - local show_text="#[fg=$background,bg=$color]$text" - local show_right_separator="#[fg=$color,bg=$thm_bg]$window_right_separator" - - fi - - 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 - 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 - 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 - - local final_window_format - - 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 - final_window_format="$show_left_separator$show_number$show_middle_separator$show_text$show_right_separator" - fi - - echo "$final_window_format" -} - -build_status_module() { - local index=$1 - local icon=$2 - local color=$3 - local text=$4 - - 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 " - local show_text="#[fg=$thm_fg,bg=$thm_gray] $text" - - local show_right_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_separator" - - 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" - - else - local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" - local show_right_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_separator" - fi - - fi - - 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 " - local show_text="#[fg=$thm_bg,bg=$color]$text" - - local show_right_separator="#[fg=$color,bg=$thm_gray,nobold,nounderscore,noitalics]$status_right_separator" - - 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" - - else - local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" - local show_right_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_right_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 - local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$status_left_separator" - fi - - echo "$show_left_separator$show_icon$show_text$show_right_separator" -} - -load_modules() { - local modules_list=$1 - shift - local module_directories=("$@") - - local -i module_index=0; - local module_name - local module_path - 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 - # extract the substring from start of string up to delimiter. - iter=${IN%% *} - # delete this first "element" AND next separator, from $IN. - IN="${IN#$iter }" - # Print (or doing anything with) the first "element". - - module_name=$iter - - for module_dir in "${module_directories[@]}" ; do - module_path="$module_dir/$module_name.sh" - - if [ -r "$module_path" ]; then - source "$module_path" - loaded_modules="$loaded_modules$( "show_$module_name" "$module_index" )" - module_index+=1 - break - fi - done - done - - echo "$loaded_modules" -} main() { # Aggregate all commands in one array diff --git a/utils/module_utils.sh b/utils/module_utils.sh new file mode 100644 index 0000000..58dcef4 --- /dev/null +++ b/utils/module_utils.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +load_modules() { + local modules_list=$1 + shift + local module_directories=("$@") + + local -i module_index=0; + local module_name + local module_path + 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 + # extract the substring from start of string up to delimiter. + iter=${IN%% *} + # delete this first "element" AND next separator, from $IN. + IN="${IN#$iter }" + # Print (or doing anything with) the first "element". + + module_name=$iter + + for module_dir in "${module_directories[@]}" ; do + module_path="$module_dir/$module_name.sh" + + if [ -r "$module_path" ]; then + source "$module_path" + loaded_modules="$loaded_modules$( "show_$module_name" "$module_index" )" + module_index+=1 + break + fi + done + done + + echo "$loaded_modules" +} diff --git a/utils/tmux_utils.sh b/utils/tmux_utils.sh new file mode 100644 index 0000000..10711d1 --- /dev/null +++ b/utils/tmux_utils.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +get_tmux_option() { + local option value default + option="$1" + default="$2" + value=$(tmux show-option -gqv "$option") + + if [ -n "$value" ] + then + if [ "$value" = "null" ] + then + echo "" + + else + echo "$value" + fi + + 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" ";") +} From a1079943b6850b2ebb8214f5067edd4d7f5b4deb Mon Sep 17 00:00:00 2001 From: Valentin Uveges Date: Thu, 28 Mar 2024 18:55:01 +0200 Subject: [PATCH 23/72] feat: improve transparent background (#175) * feat: improve transparent background * fix: fix for config2 * chore: remove status right separator invert * chore: update config presets in documentation --- README.md | 12 +---- assets/config1.png | Bin 93462 -> 30407 bytes assets/config2.png | Bin 79236 -> 31017 bytes assets/config3.png | Bin 84927 -> 28905 bytes builder/module_builder.sh | 52 ++++++---------------- builder/window_builder.sh | 89 +++++++++++++++++++++++--------------- catppuccin.tmux | 31 +++++-------- 7 files changed, 82 insertions(+), 102 deletions(-) diff --git a/README.md b/README.md index 59a475e..860ebba 100644 --- a/README.md +++ b/README.md @@ -253,14 +253,6 @@ set -g @catppuccin_status_left_separator "" set -g @catppuccin_status_right_separator "█" ``` -#### Set the status module right separator inverse: -```sh -set -g @catppuccin_status_right_separator_inverse "no" -``` -Values: -- yes - the colors will be inverted for the right separator -- no - the colors will not be inverted for the right separator - #### Set the status connect separator: ```sh set -g @catppuccin_status_connect_separator "yes" @@ -514,9 +506,8 @@ set -g @catppuccin_window_current_text "#{pane_current_path}" set -g @catppuccin_status_modules_right "application session date_time" set -g @catppuccin_status_left_separator "" set -g @catppuccin_status_right_separator " " -set -g @catppuccin_status_right_separator_inverse "yes" set -g @catppuccin_status_fill "all" -set -g @catppuccin_status_connect_separator "no" +set -g @catppuccin_status_connect_separator "yes" ``` ### Config 3 @@ -537,7 +528,6 @@ set -g @catppuccin_window_current_text "#W" set -g @catppuccin_status_modules_right "directory user host session" set -g @catppuccin_status_left_separator " " set -g @catppuccin_status_right_separator "" -set -g @catppuccin_status_right_separator_inverse "no" set -g @catppuccin_status_fill "icon" set -g @catppuccin_status_connect_separator "no" diff --git a/assets/config1.png b/assets/config1.png index d75206b16efb3e464485a30de1c9a81052441719..6eede6d810ce3ea8c5c8aec2c6e044bcbdf88a96 100644 GIT binary patch literal 30407 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 rv;FGp3p>nn^2_tt+ps)c{an^LB{Ts5#{as` literal 93462 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 literal 79236 zcmeAS@N?(olHy`uVBq!ia0y~y;GW08z+lJ0#=yYvbBF3h1_mDcOlRi+PiJR^fTH}g z%$!sP29M6E;p`E?C&lJP2Ptl0UdWFcYQLhj_22$q zUvyU7qmn^kqd@wHrF&{R_!%0)KOULn#L!W6uPA6?L|-E7E+GkpBcGpIcz3RTV&UBR zT_Z>6@lAp43=Uz>i&P^SGGf|n7I#c%H8rVHEED|Ls>EO-De(LGbMX&~e(g8-ZgnV5 zdu?o7cj4r(*=ffXs7;@3+A*~_P^4%>fY!Oken0Imf86g~H!tTvJMWrTHz$3l_&F!> zUfwe?ms1<9j@T~hc_GnJs_;+YiS`>sx0N?HeNb6yn{{ULro?j%c1QGT@(NUr9202o z`m|_qNR8VvgDK30F^Vrz5*5`2lbAc6b1zZk)SBHpsi|VB{uaC7Luo626vuQPT7Tzy zZDgL1_tO7X(FX!wCQBW?*{LZIthh}}NX^}O4dcemCgzGksm7ZuX3N?pC{H|k`tkNA zi#P=??x0u6t}`cHsF+$CxvwN)-;HBAit16V-$m2Z+q6G7Z~d^N>&L^G4X2p|wKE;u z6=Y>i4aD~;Sh!f0znSSUWy*p}KNa+Ny2AU8u6(p7VybPP;tB4_pTz`rdv^ryhG_s^H zG8P0GGAjp(*eX@{G8}#2-@)QwWufPBQJcYa!hfq1TI>B3f-godk(kIm&tVR~lB3+7 z>6&hxYbAKdkcq{^#sB-t%x91!}pOJ(#%AGQpEakxlq;=R%k2 zI~?DS*M8Kf;BC1on*Qh>^XDIV{uNFc>NYAd>Lo&Xz5>%c>bi93FFS9)qiE&2`ZN7T*Ln`tY-X>n`*!}H;_sRpZvS#R&mRAloW61LjmkG1*BB&j z6s{4>KH7Kc!Rz_{2%}q5U6To5)JFrFvWS?&`%)scmgK`6=HdLA+zR zM@!_*RvxiCf-F3J9nWog9=>|?imjohKCo`zy(606cwP2?wKjjw&+w=3`}gni|IWF} zuqUh+uldVg`~1y}g4Y4e5AG<=^9fq=q~K>O!+xPzAAF5ls;8@NX#QNtI`4ouOOt>A zW0HfC2kYa+FESJ#KajC06ylTBNpu*GeXJk&cOwugmd;kuO}fNX+fl za|&O4^@ZOSIor-Sm-UP1zTn=%&pbnFS^vyrKMCRFWWxxlX`P-MBqJol8bgyyBZOUp*!~VNNxX|j{fw>R3_>NC5kh2q<->84&`lH()tM;(&@3KEo{V|_K>fnqA9v>77 zI2Ln8ws^J#Ik6^cKU8>VQZs!Q$NLVKMRpgby zD^29_>{GE1;_39(QkgpG+Jv%6eUsNs*ySOAA}hssleXoQIc{PTy-$cfk$sZi>Zr2%E1Y{6vNy0m`h{{WGEPD7~jY(xcgwT;$ed$2G?R1>B@#?^^%WJaM=0yjunR)Hzwbg6R zNA2IfajWOXndz4kKA*XEU|Mo?PIPwl^}aOm1oMmQZoQjjdvRXo{OtYb{%vA@_2A)z zw*fB;P70QODG{++SDYj7Ch^SH$7D@aMEm4j!lzfBSb6PbT;b@j^KUi5TG1R5>MJdz#G9zHL7>1$K-S(QmsW>XmKv1K+<2z-Oz}OI_X_W4-gDn$|EuDc z$gek_f1bX6()@aP`}@rkw<)tKZ||vjlK$}c*V|97zdZlJ|NH$H_azhL4)CtvtB}Z$ zJi&iQ>c^DS^QRKurtIY@;+(`H%Tsm!TcUsZe2!yHhnr3}-F7N*n&fn??GFD|jJ9+i)pWuyK7IB z-K)GUrCT(1DY6|YNSb#1PWRT{xf0bDeG=l*;ga7~>RkS8`LUVvOA9Bbwa`6PHdQ^p zJ(E+Wt9WPmUGtHf9W(ilovKA@q}THo4;L@*-!~&`ik45VkMdI0<+;AErG<^sp3Yde zQ7+m0_&teq>%31pK0od~_Pp2L%CVTK{LsG=rz)>seP8tNNaUGr*KeL2IQ8P`?z?X-#Km`+IlG5@}Z@4(Y@!#p5&c= zd*1ux?YaKv{LkB~ToQcR6~*PlttP&uTlVPEN9Q{2gv0&bOm*?v<|X*jA~SiR-k*v2 zQ*WNEn`o=?Nq?2jF9XfWOaD&Zn(R6`dbx#9q`}k7!i%dS$X#IndN8aeM_*) z{3otx|R3pFFdK9%{MnzL-DT5+ArQW^tUdR zS~}@cU**2fW@nB+=YGCjw;*~$+QIEcbvIj!rhn@Cq|aT+t^ddB(e z@yB1PM^qQ7noncXxx3G&I`ZQt_tWmW>*Ehb1a5ou_7tb~`S2a#IT5b0s?k?>T4j|! zmRfD=N%lzIQk!>sY-CDLQ z$+)oi;xqN=N!#cA?fn^jHf-_Qr_uZKgmYitk=ws_>9N(z(%L`v9o?F-cFnfx=Qrj~ zFK2z9wWfI0?Jd#udFV}5A2VscK=?scha6$ z^?N_`KAfGKfA_xG_oLtL)=&Tc?(^?W{B82v>Qm}$errCxeEIz3eG~Sr`Iq&7>&xgT z+jsx{`S)+qx|Y>HL=Pmm8XGfK?B!*M(qbs7uv^?0IPbp*Yv8;{QI0?AYiyLYy3`p; zKm4~{$Nukb3B!hTZksyC+Or!Oj$C5!_`&I3vHL=CPa)0|NtRfk$L91A~|<2s3&HseE8yV7!(Y z5>XQ2>tmIipR1RclAn~SSCLx)GKayY!m1*-AUCxnQK2F?C$HG5!d3~a!YZ%W3M8zr zqySb@l5MLL;TxdfoL`ixV5VoFXP{)qrJ$f-QgNl0w%STAW(soS&PUnpa|nh%TsRWJ#z- z8-0+^kwO9z%wW+V7dJaD8+~wufFj3^tKy>VTLuOOnM@b|5C#SYCUB%OFvv47FlaD9 zXn6*PDK7HeQ8yVF92h)Z978G?-^8*ugoR$7w{-Vz7e|9YM^51l8yy@SCr+6lV7)Qg z(bZMQN#v-5m&1m~;XFA@?Np|{o6z@ne)>7fe4Y1tyN_%-5Hs!jz3QyAc{7cl->H5+ zZ+6JiQy(>xW-BIeNHDcEP>Gtr#^fnhF^|n?S`IahUBD6XV5ejgl^hB7vBNHohzFIs zK13{|rl}3A^Jeo>F+3AEmUK6;&RfpipDIPYSV{l|=S^zGIcjjGeREV${kL=hytZeb=5#fZ4s|^c0rA z`VaUQGhKL5e?_#vu;J0JpR#>3-<9oKFs-;WQe@_uB~{6~@fGqH;&&GrN{0T@ym7f& z!}62F%l|%3^SGY&PxYOmT7Baf-y2=;Xa64GI<)h-#WRO)*ZK(2FAvU6aQl__oa=$g zK2t6kUS0ZedT>WT%=wRp6(`zT*&qBNeTy%7=WOO9@%1f6bL!u5{ynPw|1*yR zTh~M;$EUS6zH58TYn_BetUJolI@xeiw!Qmy5Zh1^_FShTu-a&E0;VjY|>f9y14qR zdz9GO|Cbl-FMArqA@EE7rf>bf^^aI0la5IJwpzzMY5A&5@Yc(oKKpOY|C#>{|DSeLG!pozk`^4E`FMZt|GGZObaji3zxNw{&gbX* z?KA6o{EKL_{|pZAlC+cjCN@jlKkS^;x#`;fHUAF^1@#6S@O`##P>uQj+wX{7@;~)= z|N3V?sl1=`Z@ORT!4G1SSH)M(*|Au6=Ks6vAN&8?^YiJES;sw|7KtwLy2%x^GRD>N zZHtwkW#$k2kKg|b-;4G-{O@a6TF8xWsQ#qV z%-tFLRPL92ocHG?FV=SJHv;ZKjVlb^3@X`Z1KCH~SdGUtuM^8Klg z!)AUxUK43nzf>oFgV(e(@v6b~GoCJJS~F2M!E@%v_{~b}N;`|5Pwu*!?fLQ2)TI?G zwSv~)aJ@zUvfEIBM_u=KPcIwY}F^Y-j&#Jf3%>p07mU!SgdG zEf+~#cP-dxc=zq5-G5a#9%fH7zWiTPuGak3n|XhF>^mBs7#{v9_e=h3=gN=gAO7Ge z4xeg%?w_L_k5;wEeBGr>|F4ZUJJ}Su|MaTV&nZ_Yv2M!x88h?m_muEd@%_7HEBqWd zHvcPf>YLn99WzhbFJvK0*LFV*kItafnAm5Vm7W(fOgXqn%4E?}ncfU8q0-{F7QZ|` zusxo`AI)znqq}wyk5$mQ4NTLkC)-utw}VjrnslvsvR+L#~=_?VDDly7hSDH05?zx}Pu78&P zja?#x``Z6G+siU${9l-E_FsBU;{Sg8Ir)FSI7L6-y>P~Y*#`X2cb?0({C~Z&;?c)` zQRmq7r+-TS+CSM*v;6;r<@_uh%>Ue%S)Vwg_oaUJRu`*pvixl)wtr6hlIz{dbPyLo>21YOD{kyR4|J#4< zck4I))-T}r!g;4je)Grs$Nt|CynpO}gvo{IoPWum*4}f0C|kmws?qEZ~`9-&e=> z+wC%UnKQobzajj&;eV5A_tU-p$4{+TuXeJnSGuP9#=?*by_Y&J+8aOmR1mhxsnBxq zOV6PHi-c9{58C7~obSBAR?&5#JSX%2{fE&UAx(b40ryzdjgDWvddwl<=;bm;`P`jl zl>&2CEz2nUC)4vKTrWa7zV}z8TK|7%v$gkqG(XP2b>P|8`4fM}KMb1sWQnof^vAE` zRVqJ;_iPc$G9%FZB2F{MXN_O@A%@Jat3%efP!uPcBwR z-YI{yX50UQ+*yjhc-|a)R`*vzFjdxQ$@BU@H#SUvdR#*&qWsHGC)t@-bOrxeUU7fN z{U=;MT4R6h-+h06{*Ab~N09sTQmK08@Rx6mWh>+g|K*rU1Z8n)OkqkWO1RK_Kv;9O zO6BKgQ=MG9EL1q<|Cv;@T-(UZ+B~&j!=*y&5Wk|2FBdF-d+9^qk-r;wBAxiAynA8Y zsr`V;k_4%Ham5q0TPqG$ojGj3|K5sh_xhV^QUOXn z3DxJOZPxz#J^qE}N#lCO&3WEO_kFf6`T9^uL!@WA$*ftgJQNk;5_fc*Wsh@ISG@V+ z_{{!?{>=uzH~&ljr~XP}&gP!dsRwJ{Z8879y7=T8sd~Lt;l6TN#cit`(Kiw|rZqYI4w~aY#XWxD=*>Q|im@BH6i_kXqiqg@GB>$qRc_?Gy8^H2K^cl-aH|6u;->_3aVpS|z&zPN+T znq439fAc@_jpnl!+?@Z_{Hn_(S^qQs`rSpf=jOkTI3hp$|Bb)pyZ_70 zow4JepmpeH+qCDhT!zyWSHH7=f284}y~YRopEDjmouxMYbmsB-J=2v;W-0vZw0YiR za^lMD>-Bs;KDc~zxB9=Zn!j{of9*ekcmF^BWPaIJq$2)Yu&0h?wuR^$#eeqxe`DKx zB~j_O^rm&b4Z_VCh*pPCU@|8OjKU+YpE^w8pBg@jnyuYO+JWV!u% z!c1o)GnW6D9`Uz5d4Kr-;|q$PN?0#@-PYXP^RFlV`6==D|5fVi`$Nxa>i;i0{6BnM zVDu}K9MyLDX#O3~S$qz}d_2;>t-RofyzAe7uH_XM&+$$Dp*>k%)+P3^;);6NjPL9J zOgvs)_|LxgpZJ$4n*WgC0^W}h4LgW2&Db(uP*d)`iTzPK%>!79su|LND5 z(+}HS9jCn2(#V;W`%05Jv#`rV?QsVGi_MB=6AOQNMXa1;w%vB&`m4sS^CvIctG@r@ z`8EGGbJhFZ(0hL^o@=U(yYk^@Z|;}(CH%R#=EDCi5_K`pJI<%az3|pqFMHj5EnmaW zeR`+etY_-C$Vx9@RLh!wbItMjEbTx{rQLBchkwIQn{+4d(Q2*{I{{VV0rj0i@y0% zJ3da|{-flu-|Gi1uUA~={mb2%!_D^o*3-(G|HZY6)ffM#J`>vcZYJl1pt4M-Tz?zJD6q7|C@iscmJPq^mDv)ea@eaACDiCS4eogzIVUb zzgs_E=hy8BY!pAf=j_3`vH#uk#BTiMH;-FV{(q)h^7r~h-{Z@_{|lcNv-9b+YjdA= zx%t+(v#i_aeC*Nr+Y{C;E_!eER_>wvE$*{z#cz7|6?gm=`mYYA@utzCKTGS{DrWgM%_7W|N3b6!5gZR_!lFKYW=%KuG#e`EhIl`pPe>kl4b+Gq28 zfT=$35APpC#*?%9nkT%Ga=Wc(?ECA?`J`W-r+8jkUD~~b|KFV- z(*u8&ZYg;C-mA`Jr}r-gbM`L}k16%nR~YI&s-MX>lfyjf%cY%*?_T+D)^j?(ry{KG z|1W3#{mG$MU9G%0>{XVvHT~7w=EFX3`PF%sLQcJ#>u_Lkb3w~Y84vdS%FoZHA8PGZ zDCw%H$|wnN=f3kgJH4^%{P(9aywk<|rt(E`J!j0zmA-1aVeZ)k*0S7V)6d$}_ODLY zEngS2Dff5TmY4S&JtprfaKYmMUe{m4;TQugVc?VrtV|K4QROHSVZtF!m%mD5#jANZNY_cJ&Mm(0#O zK6T-=#62ZpFE+00IkzivlIWsoZ~JDR)17r(d0(%v%!K*#ek-l$XS&(?@AvuQt)JtS z@2pl~aC@rGch2xg_gnAdN(ZYp&OZHkeYV5JFU$>0Z~n#~Fj#Qh?8{q?NBif$5Z8}% zij(^>?*mi9FZ=qFcej_?FL`qR{*Ux&b)7=0sRs^}tCr8RF{*tvzv%kfyS4hZ25D_UsvOrd41#TkTpTB$NK*TsP#yfI(*yTb83B+Jj>qaP4|{t?q%2EOZh)J@aNnf z$45W@-kW4^|7>}*;l*n|`R8uQI~Tp&b-&Cr+qYIFlf9<$PwqcfryyT%;&nXiUQ3az z@b8>A|G%^RKP?q9{r7rX-=j-5#Hcn^%e|Z*x8vC9{la~QkJqn%SIECxnGb z>F&R-f1RxoyiEV3*)RKo_4|#?{_|cF$gek;X1nj7^@f+>>+eSR?Y^?N;N>sRAFN3w z!E@>#&5u)-Ir6#wx&0NZIsJ>|8~?~Z*p(o+j+^i3&;Rp&)VHhWcG~vu5By)R(NnLs z-}%6o{BQYx@Bf+qvtIhYh4h7+PZSIOW`lZtE(f03oBiMTv;S;8xLG>;|C@h*)<^x+ z`V?{AdP&vNRe4DZ_h0<|-^OdN;n}@*lW+Z3P(JvX{TlyyzAqNfemXz-CvU8D`=DF= z`!BENv?{6X`7b^(*873_zklU9-|ii#|JIbU^Yu~nlxur-<{3Rz3z_Hh>&NB^+VfPN zuAVlbjNfD`SE%>yU0Fgqq&j=+9i@^(XB^dC_-Eb03mdd0F5Qu=o5*lG@aM#>NYt+9@w>cX3|JXBCt8+CEcDkK?{o8xqgf6~iO~$1ubBw-HJ0h9Qi*#)QbT)cIzvpx02R({Jx>jdwIX&l}A{z2XQ ztbzm1RZhP&CN})Dd~P~XJ8Ik1tJ+~FT0Sm*GFxBmt&H*GtxuMeu+6Ic^*iq0l{yq9uCyg}x@2xAw#@-(p`sUum-4zY~{lfB!W3;+C)V4=x-} zXIT>YU3_Ulr_scdJdQlyjz3PQXUtyqa#?E(dqGqJliB_MA1*5XY3BW16tQ1lDyhMx zR+!^xEVo8GbJ8l`j9uCJ^_TqTeeACJ;H2;MaB1MTFYS*{ock;PN7=UY|MSx#Q|7NN z=*~UAbjP-moJ)UJ{7K?= zk1gN1Ba^$#gh)nP0A zB0FEQH~$S3OA`KYexh=FPtAj(l@XIx&)poq+xNFbUD9!T-|ickSK=a_bEi!$d{BO4 zw{kAC{W`Xj%CcMLh+mv_D!6Qked?{Gmv{0Pc}f-tl_e|E$=;U**@FUq29C zTK#0{(m8<_LkeE$XeI?(@PB(=6!9ow#{cE2`{TsFR5)^p>vP*Idc5BG*yE)EJN`W} zNM|8s{`?uL*0J_{eHY(D*G{;$rr>%ZK;V-ddbXa8{~ z>!c-nZ$7Ix`|n%&H}muV=GQ;jtM~r2|NP(V-$wNvmTP+J&Hkl-{qy`%+w+rebJtDZ z6A_@T`ksT$N%}iekDI%*1M_dua#!}CLZr)yZ*apf1e$0e*Tb* z<-|WTm!AK&$oIYduV}OUNpk*Qr!B3q<6?BTH=eP^b-TvoNWK3z)~lTi&gYrn8}Xqt zy6VSqyLzQrcMg5^`Kz{diR=2$D*pFks&s{S{_jeP5;8ir^{w9)-tUivK2&t3{5kgf z{*Pl@?y>W~ob&&~?#uW71sItewKeZkW!L_D^6~#E{J&~-qRom6FKPTUR1?v+Kc%wk zpY67Pu9tQk^_`^cA7{pNK&Fb%dp*O^zYpsEIq>+_U9P`&bAMFKAAhx9^2cv|5DB!s z@Ap{WX45bG>+|Qv7yPx1y8QJMhw#h={&RL*D1Rb)e6Pp+KbGfY_KT!UKW~4r^6_)| zl~2oqg2T$62o%n}r#!*)XK_>7oIeaITUN!bpFi|TzhqaDkw2m`Z?Wxkd;TzsyvzTpR#v~7`M|c|jl+^c!TDP` z6!t%Uwr*4I?Q144jX(T3gyISAK8(^YV55{m1*azm$*son!e`X_N+tibjj&90(8@1NGFf`m|ar{ZQPw(^p7<=#cn7HWEsR!Q;raha=dh+C@ z)zQ)=;ahdgTpKcBPdj9Qwxw}gaaSN;#tdKkPe*M4g z>tDv#W%2I(K8x+Zp`Vg-lRh~4Rx1b=y)1D}{CD=CqkZAqi<}W{AFqF0!`pJ}T}!V* z>%P2WO;>*{@_hKGa!JukCqb)7$NQQ0PJ5?6+avyMj`IU^w|{--{iekK-#+8=${fRg zvJuzg&-Kl@mdW%`V^@0T3m?@7{@R`X=~ol#CHMccu6Pk{FF0TJY1Z=tiTP*$3!mK| zT$VHWDRk*~7nOZ!or|{a^g=@*?{` zKi}=>`+0WiWvi$w*O%G8&8gq`@BUN;!AZqSlcP`Q{hfc|#vkdwv$zgEGbzo8|1a3; z{PWlKC+2@=|1Ey^ZfACtzul)Z1RMN-ug@4;px<5Yep09p7_pjX1gpNQ4t+MjF z!P(W~|BC3W*~YQD`~1J`eQP2&#;uZzcI>m*HtC7>6m{Hoq=Jc|fDYHCV?LRQjsG7@C#TWj_@5o-Ejs9Q$ zH11p%u|-BWMmk5l-tZ%Pwb1`5a<#|YbmKqRN1Bw+S`)q3B6w=umsir$xCJCt$cDeT;uRZ|J&PhCyRFfW3~T(VwdUZB{55-g8p?x z1#z5D?eN_5S9tl6ANjX7_)XKD(fNOK%HjIeA?r4U_Dxb!J!N&{JM+IIRjrRctAB{( ztLbab;hUeJFM09*GvDmgdp(+)s$SOI+?2U@%BqSbQ&xt=c1>N!Gv}q|rfdH!)Z;kk zp8fw_|K^6Wo!#pf-}@}iq%XPszpwOlk56CXQ@(!sxvBCo+lkQFQ;+H|8ckJE7h83< z=O6RDKD+sut5;?eIUGMYrR;z3^3#VlyiWa`zNn(>$+_qNuLk++ZnwUP``_8{{QTyCiP{?ALit&Sk1NL*IwaiA2Q63GP37OsRurM?$af% zy|iKFla$WNy2t8y7LEz?oZelyxXY)nW}D>Gg?470%xOR7ZaNaO-oXE|X8X~YdAC1C zbnmj|SN`(1I%oHS`#<({FHL>jXVod&f8aC!ed)F^k5vDc@1y?x`T5zq&}WIb-kkmJ zpUPjAO}?_Wd{)wil8;V5KYjL3c{$0I!{n^$Q7@6ni~Coq{{NTXR%6pA%=_xt!KqUJ zH$6S&)jjR)lA2bpPcN4getNoGe)Y!S=baz)qxY@3l3Oq>|J=)^K})rEz0zR)_3O0% z)3xStfj8&uE11DoYudbb+5gzb^P~Q~aj@6qTs`-DMIe{h<5g{0UALaU=*c`)RqTFt zURBQ*w&elwaiV7q!@$wTh9KWAh#>=78cT%0teSXcnIrU%fPGUK} zV!pvG_Aj!5n>d>|Ch^rBIQjIK{LikX_T|U?KOO8gudK7Zyh4uU!oTA!eG(50L0|E^Y4F8dj}Hngvr zNAt;l*Vi2Fy0k92d}YYaRXx&w8w+IYF8qpjd%OPX*0~>Br(V0Y{nyt@mcL&nHy`?+ z67uiG4}WFPH}yBd(!SJRmi>N8GJT%!<|(b8pPxR$nVfR*P|C@v+S{jSga&2J4RBBM z`5Wz4_o3{}pXBskTMmDdt@b#2s{N#U^1bQ($NR2qZ2l%Q^S@lmKYj6iQ6^lg=Z0%E zazB*t_;X^}C*!%!Ca(QwEDGK<{h8_cB$oGEz3t&0(#PV@UMifPTsXp8z)6>Wlvw#RJkH5cG^Re}%!LE*&eZqpdnkX#%Ua#< z40u|%G2GSt!IXyybL)2-Uivftr~QqFbIx~Cj{MpGv;On{Xa95mZ2ov3)aBp&bNy^( z_jeU9*NXq$_*;LD(J#&~|MvVZaXG4G^kd(?Acc6w7b;c%rzg+Y{j#I^#NT+MxB1_8 zYp%bX{N`_c$eV92`9D9-zyEmM|DtCnRGZ(uS3aI#Xu4KJdB0ibmAy{$-&RaBzV-i` z>EEr=|0W-cjnaxw^_nuF@H~I%j#h4sN5^yXADk~UQuzOd_4AUu&E}`ud}n`q@h|)5 zVegY?|K3*6FfO0aCbJ{?&f;gEnfBE@c+ZpFH}B}H`P-I>2d&KMKDle>a=u$_cIh8Z zu3298qQ`KKQF#A%roS`ypPkzHy>}Y#YqP4PzT+wq*H1owu=-KCNnv5>f*txVg2lLY zR=g{!Ty}eQ$M2geG%fiv2n9v zs^yzzeT-@QdU-pZGle%aibV zmoCG7Jl#dCorFWIPc((&0AimPpbdtbHa4R_8b=nqtZq5*pE$V z(eDXf_jz68JxLS4y~`cvAN*`zVciHi_w7FR0^Y_Ld=G=aF zseO**g8wo98xL&k$hp1GcU}JduBN86H9eAx{h90DEp?ov?r#^_dH%gk3BP(n$(|b= zeqxW~*Z<4BwD5JW*T38P>L+J6$M<%)a&q>*ISKj@OS`P=?IKe>~bf&=ec-Cno)5%;|xmd<*4zb8C7uwei8 zm)ieN8UNvK3DCTH)97Npo}hZ*&-=CSs@7!vSRTGI{;Bqq-YoO<-RhElzTfjc&~oRx>WQfbKKq|apR9Jo;|1U5 z$$$F9&tGR;@Slm5D|u`28oz$K?I|anUf$ek8ust*zGC^)$G(-P9WGvSeeL&4N1j~n zOfETEob@2!O}*sS{Y%k<$bUFq_pf-tulYTv{C|Gi_W$fm z>*+kT={oylCd7xWiBK{x&({C{u=j!U$^Y*;|Ao&9bbgn2)8V+sEA>3@!~b2pe{PiK zOuSO|xt?#8jP>0g-ORS}+Y4v&{K)9q^ZzPOOnR|gQ zj_^ct_xXSIgy+BQU+uM@ z@7&&z)XMU0y}|$Rkga{M53infc52}IJBq8P>vl{y(Yk))lk@Q`t7~1}+LzyBDvErr zzU0(I^|ztFo?Kkpx2VTjE=H+X=Dpt4|5~2~f3`o~m7utuo8iPlv;X|HjR$6chJF4! zzy5XqSA9u>!T+klT^_i!8{m$LV#yjV3|Wo z+1FkZ&au>tB&);%0r7xNr$M9;LKRRD!$MH4h zmjk8itG()9`EP!*wc7pUH{IwhYyY%<@;X`MDp<0UDYN4$!`i6yD^tq8$9A!97U+3Z zdGGe8e76mi^Vd12YKqlg+E#A-uT|SDzV`L%pfw?)-~V)SHSlmns?D=sbG+;J=6^q; zx~8vHn!4&b+ZD&jIsE@uCfjKL`Mi7MB>qBSQ@<>qlnt7WPZrL2#qPP=asJfg$Ngct zPm3qqzFRDitM6I#>?HRs*C+dDJXff>R}=YMUH1IT3-gV?s!M+U70Z!uf62BP>lq%c z@d}wB+MRy7%qIBp=ku?Q&({>+TFp=xR#`Tw{_3PkBcl(Ci@Kk)k!HV+3T-QD^e(1b@A!m zCr6C+`yZU&G_meU<&Eec=V$&~+*A4Xorc|p)r*#%I$gA;ZeQ~6uoWhrtL8G)+_GD7 zaF^hx2OT^?|8>lZ4y-le=U#c~{}abKu90il{H0?V|AaARf0}I^ZfCjM)!%ZRW3X+x z?~&K?>48G`{*}4^+gah6z!Ns>-Y!<71AP+l;Vj(dYh(WC?_0*Vx7qJ&RJx+XKS!4N z$}8q+Za5n8>$c+c71Q&k?li6socHOO{+gnvngJZzyUx3=xfgS_{@tC*1)HUx?zpUX zvgE&a?*ENnY=ci_|0rUVyt(J2{m*xcuRk$oIsDnuuJU=HrspNl1D{Vx#xm;GKs%6c;su7igJA z_8w<-`N{IcV7D9*R1B0+TzHn#2WTs!QusXIF!RrA5&y_vT?P@r%JK;>q0K@ z9V}*4T=L{q>!gWhH}Yg^x1ZXn-M=UHqWk9ObILixZ1VdTc^c)tVK@4;cf00^yi4bI z{8`Ue$*)p;;GxooKURAVa>Qw7raiU)c0>4y8XLo+U*_?(TKRlcM;}jR{5dtt!BnvJ zL-Ugby5WajIt9-ZXs_>D*K~WMxBgi*d*}8&b6S6$xA^DMe*50m{kDtGi@us&`d+`a zYg*H1rt|}0XO%J-E_{9~elBc<=`+JR@AD6qIQi-Xwp zCu}&#sBhDH;B#R{zfrpX&&=)F>Zxv6k*y56Rf%~8Ao4@*tzg=IX`lYXK)!$b~mkVzA zf6?(_y^+>_V}bY9SM7v;%RibN_}l*DkzGaio&B@_FP~ra^5^o4Mc=mDuPZum{@vU2 zAJxmxsjMlhYn`GS=+#Tx6129~+Il^rcx58qn&s@Up@E04>Ce`g;y>c7pZ z?ccv!rSxz8qw~c}&a>N}>e?FfmT?~A)4MgQ?Q>!l^Dv#)SJ+wW7N2^E|GC$a$7b`M zAF#AHe{m`K>HmlCTQBXk*K-J!JGH0&xP8%sb^9xlg%XSz4{iAW(c;X1ndv8-7k%EZ z^R6#;=>_`=vH5b(k{|wh{q*4b#JCwM(cANmb{nk~>GY6}bclcJveM1c_R5RrCuRoE z`c~n|C91jA|JnUL6HT66ytb+CE!V7xS2FJe^{uL&H$^L&H~-1=3!>8d(tMbqn0HzxSV4u@^gPv;SY@Joa~YTpQ!$-!#=d&@R~i z`D;t|Y14P!AAj2a`*N-%XWOUU`7i!&FWejbQReJ)&A>~n^O~FI{=94cCHQoG{{Q8v zm!7P@yk!2x*Zte}>QAP*>b)=g7PoZ$`Sv}3oaH68gYAC1X9{-QmHj_!%ij1ttDkRd z_x<1h;{N`Y?qf3H|C84IscpY(RMFe}|DjUX`Fl46R)>a9&3<3Syl3^XxpfbBedXbQ zcj&YJ@`SDz>;A8-lgc+>l6t2)EL!0*ubf9Z95)vJAZ3nZ+UTu{pGu*=tfxWDSBlH{)&TX+4?{C#xi+IJI@ z{dYQ~-fp_F#WTXT>eu@Dnu$l3OU5~QIs88@`1i^6d^e5ytJ!lot#=7G{`}Eop0arV zjIYnP8|8iYt9Org)(5?zQ6WwqtOwCub(gY-D_ekeD|jQ z+Wh+ou3vv&-8X4NQPu3~dsBp#uC`!2v3|P!;&1Z>e=bkl`bXb=pN8~@H5Xhhv-yL5 zuP#zyI$vFMv{>o1ZdSd{0n3I@kBq*SAHFs9)2rIEA3hx@(~MiTspQ4qzE=v)KeBm_ z&ih_(s>v?&gvtK9+0?h150;Dk*ja9IwBY~2`dh#JFHKKY)dzaVR%d;PL zJQg-T^`7y;jMk$ypPy)VTv_oyac{;S#v%({Ud|jP-(NEhFaK2knC-rLu%ONQFN)Hh z+00rz{X5?t`kyTuZnXCPU2Yro1p<734;s5U7d})HT*4{Q6=?bM)AQr2cD8<<<1;z; zDyNY%gI9>%lS?-O8mvOkT<21qUcH{nZ#gqPJX4p~R*s^+t) znujwle&^N5e?I57OH}M_K~GJix-acUkD3#`EQ`Mw>;FF;vCx9E(Z1&ON@-@RIRU5G zQ%`C9-7Ga%`TDlkYrd-YNh>Sgt3RDA`r&xp{KxWB_vih+yp);we4_CEx}P)mSU#Dm zvvj?|sr$3H zId(f~o}pNwiDS==v}ty$Go&pq2q@irQJ?fOd!JCT4eQT#`|F`%Xa7a7-o$unQR+wM zpIiQambg0O-2Yom{@oM4zKl{h_kYRz{}FauX2!mF-tJ#ld13df>EU|OYS+v6NeS=F zJ(d1os+H82YZ974Q}$VV?ke5mHBB$_QH!U-|Jd(#YRj)UKd|&Np78my=i`-0y7ITq z=zW?j&sDwP#r$NA@a4}fcGVmWdU@|-*3Es%v%mjm@B3@`Vb68l?^*xTAN*-}{##}e zsDhm?p6{{0C-fcn!>9dIPfvT4YP|gWkDuoo7yo~A>HqotAB0|B`kVIFKG}_D`ojDN zM|bDE`rj?8t$2KX#iTja2UU%}zTf|3?)Er;)Bk6q{>B%og<04lY6`w#s%eR0O;{(#=(W4C&vpR99?KlNl~ca81D&3)@t#ILSZE9d#; z^>lr8h-Kx=w$G;Z`IoO}3RgV(-KYL+WRr*{X1+v%eeTjuy*~P|D0>BepW8Kt~tZu6YI@)bJvyKSURab z{!;lZrh_FP>~FlhzM^=aNya5rCRc+Kcjx|JUAy}4L(rwc1M zuL>3~X#e^BxBizYKmY&sJvsmQ?3NvoYwQ@mO`rL?-{p(3(f{zri{ENSFL=4$zRmu& zXuRXE)6e7s*#5?r$^LJ8^`I=Yb=7&6>+)Ihg8qjKIj+6%F`RTtY}2j(lPoHgwZV%F zH~-duwfaNxf;;sK-W&aYU28El{jq=B{Qoz8q(9ydTAY;rIezy4+h6-*|K9)+1$F^! z-GP1YtRspPC5(#xYx;<6C_m30AaMMjS)cWT){go0@ppf-&9p4%d&E=ZHD9{gyE&>f z<>02Hm)=bCTi3Tz*FIspmZpr?-$8KvX>XruS$L^WZ z^Vb3KW+OfWbyH9O9_G^SK+hAj`M|+*~ohGX#3ug-zpI>Nl zc0N1bqYvyaw8hs=%)QO%azM7))@5&jf5?3Hg@sqmFCDIRohPmv%AxI0d^K}_W!1UM z%4g^A4y(Pb(^bMI>h?H)LPOh4vzPtyUwVCNK3h+l!hL&g+yCY6+KUf-(JWr_f9-oE zbI$m+=au{WUi68sDRzJHR~v-yH+4(&s<%togV*#Z5-tNCx!U<$8c}V zInXH}a^%pA>$X1_b8MDxE>21N_V53-v$IokB-ce(wMMqV#9trGTd!?H;X>in-zU zI>VTu^jwep)5GHV7hk`>!{PMy(}#>igWbx9?~6oQ{jWEwd%;}f^*H;(o~50a!tZHr zp8o&u^XjCn@8hrjpUYj>x3+v@(j=>Yug||f?)6kkJ$dP8u5cny>6%u=kYAljm74#eI8qeF{_Vv7^`TuK6~_JYVtU zuNN988$(aeZQRJRU4_w%pP3cHH^XXbvJoaEuzXYsA%t#UGZG2r->TwUt;O*AZHfAP$h*;;>8{+s02 z{Vn=&|2tnYw@Ccm-1`0)|CE!$0@E3jo-Fq}yn4}>PI2@8{0;jT{NKM{US0TprB7<+ zoj-0XYsFqMy}9yndf=bOFIP8R*r9wl$crO4#i8zm;FI|6Su1bxH8X8tHF^4HclN}$ z#<3s2d|rR#-~84~_l;yL)}3NW)t9m;WLv@WQNq&1ZQYp@P9-0X8eDwHl`*ABbw_69 z{Vugi&c#199KSHetyr-3_0DYPXhq)KS(!SF7b0A{Gk60Mtv$LgEEl;`<2e8Ll!#w8 zcHe$XUgCB2@X~~XPMZ`gBh${#((4x2J<|1@$L9TlEyw!*2H4g7&yBY>{Cmi?%VVu@ zmiNj_sjB*Rl@sUKL{EBtc48~H7=wO|kt*-c(^IrpA8hM;sIqhKcjZaK+Bb9WZVR1P z_a;uXQNp@%Qp(p;Pd8;fJr#RGzvx(G`f1a*f>RhI)%_%N<@Z@nd35~be6fG5AHo76 zYos_^%NL#Z57UX?7jkV~?Az#KvB#&Dt^L32tKan3yY4Ocvj5kk;L6v%(=VEFqy+u9 zOe{Zsb(OBDR_LTdtzD-c9pz5Fx96sjeWhMg!j2&GnS2#X*Z#khdfI#IE7PSZCxawr zaGlz;)H~(nBiBs@7i%7LZ!arxuKkmG?_Zg3ysioJr{^bTMz4GEbJCONtJ)rTwpV{z zl4Qktbn&|<{Y4MX#rCKDEqIa=Y#5lrKIh_s-_a*-nR%R4IzI{E)`gtnr z-_z?dG}qoPXS?kA>DTG=Cy&ebUP<;6@UH)Gd$C|eoXf)3*ETNIiQHx3`}6&azca3^ zz3y0HUcHgyM}?$yH#Pn})ef67%UxD`>8S(zMfG&N#q?VAeXjj~lP!64{`}dN zJM(N;M(kWAq8kqoHP3D|`NFJFSzNu-fE_R)@kz)erXE z8rT0+zH*K@9myG8uy)BYHL?1$&L>an<*VjCSl@a2wZ6T+@UdPOu~)}$$RArQHyd^q zz|XZYE4#Ms;(dJhP5uAnsX`CWmvM<{sfcQY1=^V=q~;o=n@7Z-hC%)YYzpLO;uof+*`hM(S_`gcC3qK|Ff<@NPOiEH-U`9E`Rj`GAm zDeaEmue4g3KNk==WbjY7Id@&;R;|1LrZbyst_rv3+ORaira;1S;#|F^Kd#-P&3vbs zr6*3+p6>Yl^i-YS^^6ZHE6mFZVqvh(Kt4d;KpSa1Cyt!hoanx13bIqB81 zk--b2cGk?)Y1h-JpSP!SsoUAbOP^gl?rA4;e*SzN`~N19W^1B%3;*kU^MB4~{YiSZ zKPQDu>XG}{x5rZAGjFctz5j|Qa}U`6`0v!Z!vB`yrWz~Lm0uUGP>pC!J}Y&me#Y`i z3l>aE)hv1+w3Wg5L%7Vo)m6QVpL+axE@N2V$TZ2mo>4P))tV`*BOD(l?q&U;Y#wvJ z%{NCLm}f;|F^t}f2bs^An@kA=S;`H z&AmxSz2AL)y*}sz@0as){tI_o7tD2vKVA6ZOv|*dGsy+Ph)|;H0 zGB2n7{CjwdJOM`=uW9|Jj+j(X$e_er9s@YWkY7+N-}siNhkYL)d&;iTjfEo>8qc zcG+xUb5^liv-0IF^$#CBUMsh!ZjIDctp9HjsK#3z!YyC>>1UCnbjtpk7pH>4|%JU+qIeB!e$r_!gR$vgDMq;bQ&+ zSO0O^nH|3WhW~HN=l2hkucW6O{B!-y`Cs#Y%1i&x`D6Y+`*DBoezX4t;n`;Yi>_EJEg_&Pp4nu}dv5bvpZStzCEz_*o}|hceUqDxBn7KHA*t@sIhhu}}4?gebuMBjnHRMda zDJ69v-f>Ni-JgyBfSDvbYcGPl*T`X#j|vd zJxYH4L1&}W%c3HSd9Jc;|5G<68AkJcu??JB|MwVg#K$>}&pm_0&NCk~`XFN|ZJs}I z|G&9<_2+)DAN&!$RO^>=nFHUK3evs+c``|4eJ%JmnKIl3y-J{CvAQ z)8dRx?RB;0eZ}7E#iP7il~1M3s@vfE$yY&U`31#CxpEmlH?4`==QsbZjoB*oM-x6Z zC;x5RaO%eT>(QUy%X2H8kB`1zx$%na_lUEPZL4HnOq=&7^J2N^RMnXVU!rFk{P_Rv z$G_yipKm8B>vZJRg(OpU`$)r0>9<=ks4F*_@F!e-bzIz5H)Vf@>(6Z$y%xRrq{^CaF>$w&wx+**@1?C( zpY^M6amCMa*LwF;W)Chi{m^ljN#SFeTHliXG$!P9=7jz4?QZ*uoombwpY1vEbJX`T z?RI0w%0q|Jw8c&yV2^%LDavM7?k>|ckJZ~D^3U1B+U+sA|FiFmbGEMe7sIO09iW%=IH2#;e4EGVKOY>G4t+Fh!fT}yM|HQXW!h|E?tlO3 zLQ@U%jepsH1_p61l1YlbU-_*n(&oFoX3U-*lYM{OR<>PzI$gzoa-#ob@d@XxF6}v9 zJTJuNpPk{Q|3ClC{iwA5ZaHh1WW3(a&rjNUdk$$m$V<##%e#-c_S8g=x~crV#{ILk z{qxEk=bHwd)W2|d_4oKbeYrJBFDzkJ+l`InH@p&$IhTM)>#rO)5U zIrKF90QV$Q{XZMHE);&5={fJtxr^!6dcE#1FRl+*$QAZrpW~`9+e4zR&NVB}zYnSY1SMg6IaTGh$^YlRR6q2;WwPJ2yuEq-1tQ+_Kkfg0P2uO8;F>TM* zW*cl(^47EB$?Wy^6BC`|E-Q7un0(&lm%Ze{*Js!7a_bV;Uu$&iQv9|Q#U`2gt`Dxs zOh0}t`Nd~mv2CXl4vVc_chs9{`2(A#0-k?Lm;e2AcB}uf?u=W*>cf%J#cwz93B_8~ zUDQdu5&kXy^Aql+?^v%-WOSd;a#*Z+|E<~2G}G7VJPCK3nyBzr^0`ajjSWkFAB`>x zuAdU9|5}YiN_@(chrwW${{E+&WBktq$kMWy zzc+EQfW*1(hbk}Y?oQ>fid|*2X+^uD(*L>N?X=!BpQ(P?y8Ov!&&Lc4+7F(N-{-`d zd3odPUncvqpLz%xEO`C){dxOkCq9_7pDc;tS>FC%GTm%i_N~&1K}!#*H=VF66p!3t z5c$il(fqAI!@4YwhW`f^Dlg5rD7517i}jJ)y{uv``#iP(yry_*>~pywmQBTr|6KY1 z;CkGY!en=i-iV)?;n62T*|qn%-z)OH`v2dLzv3sp?mE*Dv+iQg&G zvOVpq*Uo*(+Aq5GFKS3nlxN$;U-R1eUs6QYju?OE@t@Etpic~-mbo<8@0;C~KvexV!x zXYxvWpWpE4XG`IySKYNAc8agBztXkT|GUWQ|GU0QpLqM-Ml7*0|5c(3o9wm2ul}sx ztMJ&~DWS~j3%627)rk-NSA4?s;`L&0ZS(NhfAZ+rrM2mGhqPGrr|wnF=a*e^d`dUt zZ|3`d0zN%(yIyuj;l-72MJzh&m|k~2-T&&CF`4|Nn|Tt-fhL!=0Va zi;otw$TiKpxP$ZCvj^dYE9PYW_doxCe$fArosZ|afAzf>@jEyqfw?)pmeKB!^OoK_ zA^-F*T;Ft|erM6sC)ak%Pg@nb+Wn9GSLtJBvc(t9Z%b(H6Www1#B|TNm-of>4RR6; zpIUsH-1hhFx_`mn?LS?5v}W7Hm55 z$LMZkm$;~UW8H2$j%o8ZGyOc0c>S0E`v2;O;%}?gc^P}%S5;`PKf(Rw?$_{xwPycS z_?|2+-Y&iLoaXW-i>Ge0K6Nn9D>`00eZ|egACg|0$Jf29_5 z*S=8w(#>w*u6e9W>-_Zjebf2x)duhSw!^j0excuz|7#C>uk*L5;g73`UDTpcZ?{M0 zOU(a+UPYqMEXwcR3B4WgY>K$qES2C@BL*y(-`%?xmJbzt2O=4-l`#-!r>77??fr% zrJ%>>wfZX4K1tY5P(QO@=S8qn7>c^(HJvyD2mB`ziVEdde{eQ2NfqrY$B4Kq~ zpa1{Zmn|v$UVrBQ?El+8p8r`_GkXz{?WcK;qiaH_x88{vhV)C z!Tz0nL7>pOvbb#)^Y;Jxz5n6A`X|5SAJ1kBdg*ceh6U!O_;f4_C#`SK?FT{(S#;&fIhIWoh*# z_Vp)~UVcB9{pss^du^^Ijzt^4yp}7URFZoys&92$>#P~C=kNdUZ#mn%^4yiCr>1CV z$}4`T`7(X}smu916Lfd1U;Dj&>sA%b*gZ3BZoT!h-1uzc?j!co_8EyN*X#Ths6V*i zpm+XD1@D~|i;vfrzv+K#Yw)LPjai(8QK7Q>1WTqaH7f~*hTYNcPjBSmUUaIrcYf20 z3ctg@@9*pF_!p@1?Pu|ke>S}PFPG`Pz7-%9AF6-(%hZ$||7C6+t$W4)|5U^7d*Q#X z`dj%_eaUUzwzua&-7)>*CrhL6O+Dp4b$aEm&<7%xo6JtxHW#fDIn}|N`_d_Zi${2Z zr&Zj)Eia7cUXQOhpv#}M^>gUyf6l#k_y2p4v{Lq6eLR=Aw(p}pcAMQ;| zJN9d7`8DP0HF7@}zWvyLc4dvVeZBR^GijGzaIpwwr~cW%xR&8%j4SVx@^1%{yc%1X z6yMyPcJaCV!=KJZVdDQE9F^X((nz#_N_L*~9^t>1|Nkf~j(b}CQe|a}#cHvR&0JR^ zEGnPrcWmAjcq-H`YTB9PIihh9E8jiZIK}n*<5e1oSDX}`gw>hPO-}!#r5yKS>3RE8 zAuANa@AoYTo_5su^_dg<%Z@U!6vi)g(F(B*TeqvTd&fpzvuS3vmjW1#8vox}X@8=9 z{heiBV`Of9?qhfvsP@2^iSg=FK5I9zvp=Js+fQ9}b(&a*^JONlfRvw$B0oJ7mi_Y6 z|L5WUiL3LDh@TgJQGZN-@`j}EhjU{4?7t>iK3{eF>kRvuSL=0ZLxX$%6#qM@^>+P^ z)(=|O8}9A4f4|`4AGODlw>tjqofC7xdb03I|DE@$7TIo^Y$CS)=~;dCEC08|+fU?l zmJ9sZZ!KFCTgm=vLEtG?8R1v+e;mnK`LzGm4E-lx_ghr%`opi^edTbs`cA>ihjLH; zd1>@!BHc7^|2<|isU%LOQH^~=|K&L-`d z@}Kdr#IJfkxz+j&0`K4h84XmplKRY))+#+4FJz@LAU5_exDz7}0o?)AJNL^<` zmOS^Sdsb^soD7ZJsbsExKc(jKvffX>8tOhB&krtGCbK)<;MUV$(NCsS@d_j?oujRv zqkh8w*S%F2>blnHSrl8z1m{?L*uVLp{N&y5`9TjWH+C}rP2PE-=!pcU^u}HB>)%~h z%1r;`Z?SM)$!@`O^MCa(eE&-Q|QBGrS1)fvRpNTSPm}E=svhLM)$|}__~%qd`#sJ7Ch)W z856iKr88*O&dS$nk-IVkzij5zHcmEm+oS0ft?{0~R*5hA- zZ|{Gl*k-r0!?oY!`5$A+$vdnyeR}>n%5AL|;a{Mw*5~_g)t{_8E86Xq9=!NGBeTTD zBksLCe?uesj_L@4RXHA3t?2dihkpQ9s`1Q%SvM@T|s1o)w3y zCa+`JC-`@@OqiH%;HmYu_!+i8Zdx9`-RxIsr^}D{OKWy++4=5Q$N$6xy>OrBT=!fH zANrUY8hpEH$A7y2e(mgl|N8uH2IgS}&!pRS3LH7*l^YeOqdvEy>&vdcb#oggn|$zozmn}4g1`@QsTtDRdC zw;ZXB`VrjMt+z9#`9b6d-&d~>^FMl#ZGG;=lWn`@C+*^m`S3qm-&TFHUD|)=v?KqW ze84%%X4Vk#F@PTL)*n)~RkjiPYo#jhs++^?B zi{^jQR#0+Y@qOZp<@4&+{LN%^51H-lYp?q^d#}lh BG-&Ke7S-rB*b^Dz@Kc?@z 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 diff --git a/assets/config3.png b/assets/config3.png index 91b8454111dbed575a3a9f32a5a987e8a5262c1b..431a4ed2ce74eb902df32200782be386a74770dd 100644 GIT binary patch literal 28905 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 literal 84927 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 Date: Sat, 30 Mar 2024 21:07:56 +0100 Subject: [PATCH 24/72] Cleanup shellcheck warnings (#178) * chore: shellcheck-warnings for catppuccin.tmux Command used: `shellcheck catppuccin.tmux -ax -s bash` * shellcheck: fix all warnings Command used: `shellcheck -a catppuccin.tmux $(ls custom/*.sh pane/*.sh status/*.sh window/*.sh)` * shellcheck: update workflow to check warnings * shellcheck: include warnings from sourced files --- .github/scripts/test.bash | 2 +- .github/workflows/shellcheck.yml | 5 +- .shellcheckrc | 6 +++ builder/module_builder.sh | 2 +- builder/window_builder.sh | 23 +++++---- catppuccin.tmux | 89 +++++++++++++++++++------------- pane/pane_default_format.sh | 15 +++--- status/application.sh | 12 +++-- status/battery.sh | 14 ++--- status/clima.sh | 12 +++-- status/cpu.sh | 20 +++---- status/date_time.sh | 13 ++--- status/directory.sh | 12 +++-- status/host.sh | 12 +++-- status/load.sh | 13 ++--- status/session.sh | 12 +++-- status/uptime.sh | 12 +++-- status/user.sh | 12 +++-- status/weather.sh | 15 +++--- utils/module_utils.sh | 3 +- window/window_current_format.sh | 14 ++--- window/window_default_format.sh | 14 ++--- 22 files changed, 193 insertions(+), 139 deletions(-) create mode 100644 .shellcheckrc diff --git a/.github/scripts/test.bash b/.github/scripts/test.bash index 513800a..d1df7e5 100755 --- a/.github/scripts/test.bash +++ b/.github/scripts/test.bash @@ -59,7 +59,7 @@ main() { exit 1 else echo "Running plugin: $plugin" >&2 - output=$(tmux run-shell "$plugin" 2>&2) + output=$(tmux run-shell "$plugin" 2>&1) exit_code="$?" check "$exit_code" "$output" diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 127b024..d01b2be 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -26,8 +26,5 @@ jobs: - uses: actions/checkout@v4 - name: Run ShellCheck uses: ludeeus/action-shellcheck@master - with: - severity: error - additional_files: "catppuccin.tmux" env: - SHELLCHECK_OPTS: "-s bash" + SHELLCHECK_OPTS: "-a" diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 0000000..3f7e5f5 --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1,6 @@ +shell=bash + +# TODO: Find a way to declare color variables +disable=SC2154 + +external-sources=true diff --git a/builder/module_builder.sh b/builder/module_builder.sh index 11782d1..cfb9097 100644 --- a/builder/module_builder.sh +++ b/builder/module_builder.sh @@ -36,7 +36,7 @@ build_status_module() { fi - if [ $(($index)) -eq 0 ]; then + if [ $((index)) -eq 0 ]; then local show_left_separator="#[fg=$color,bg=default,nobold,nounderscore,noitalics]$status_left_separator" fi diff --git a/builder/window_builder.sh b/builder/window_builder.sh index f5a8c30..186b169 100644 --- a/builder/window_builder.sh +++ b/builder/window_builder.sh @@ -8,7 +8,8 @@ build_window_format() { local fill="$5" if [ "$window_status_enable" = "yes" ]; then - local icon="$(build_window_icon)" + local icon + icon="$(build_window_icon)" text="$text$icon" fi @@ -92,14 +93,18 @@ build_window_format() { } build_window_icon() { - local window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") - local custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") - local custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") - local custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") - local custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") - local custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") - local custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󱅫") - local custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞") + local window_status_icon_enable custom_icon_window_last \ + custom_icon_window_zoom custom_icon_window_mark custom_icon_window_mark \ + custom_icon_window_silent custom_icon_window_activity custom_icon_window_bell + + window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") + custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") + custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") + custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") + custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") + custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") + custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󱅫") + custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞") if [ "$window_status_icon_enable" = "yes" ]; then # #!~[*-]MZ diff --git a/catppuccin.tmux b/catppuccin.tmux index fefb507..46686a5 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -4,10 +4,15 @@ PLUGIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # import +# shellcheck source=./builder/module_builder.sh source "${PLUGIN_DIR}/builder/module_builder.sh" +# shellcheck source=./builder/window_builder.sh source "${PLUGIN_DIR}/builder/window_builder.sh" +# shellcheck source=./builder/pane_builder.sh source "${PLUGIN_DIR}/builder/pane_builder.sh" +# shellcheck source=./utils/tmux_utils.sh source "${PLUGIN_DIR}/utils/tmux_utils.sh" +# shellcheck source=./utils/module_utils.sh source "${PLUGIN_DIR}/utils/module_utils.sh" main() { @@ -15,18 +20,20 @@ main() { local tmux_commands=() # module directories - local custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" - local modules_custom_path=$custom_path - local modules_status_path=$PLUGIN_DIR/status - local modules_window_path=$PLUGIN_DIR/window - local modules_pane_path=$PLUGIN_DIR/pane + local custom_path modules_custom_path modules_status_path modules_window_path modules_pane_path + custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" + modules_custom_path=$custom_path + modules_status_path=$PLUGIN_DIR/status + modules_window_path=$PLUGIN_DIR/window + modules_pane_path=$PLUGIN_DIR/pane # load local theme - local theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" + local theme + theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. - # shellcheck source=catppuccin-frappe.tmuxtheme # https://github.com/dylanaraps/pure-sh-bible#parsing-a-keyval-file + # shellcheck source=./catppuccin-frappe.tmuxtheme while IFS='=' read -r key val; do # Skip over lines containing comments. # (Lines starting with '#'). @@ -38,13 +45,15 @@ main() { done <"${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" # status general - local status_default=$(get_tmux_option "@catppuccin_status_default" "on") + local status_default status_justify status_background + status_default=$(get_tmux_option "@catppuccin_status_default" "on") + # shellcheck disable=SC2121 set status "$status_default" - local status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") + status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") set status-justify "$status_justify" - local status_background=$(get_tmux_option "@catppuccin_status_background" "theme") + status_background=$(get_tmux_option "@catppuccin_status_background" "theme") if [ "${status_background}" = "theme" ]; then set status-bg "${thm_bg}" else @@ -63,18 +72,21 @@ main() { set message-command-style "fg=${thm_cyan},bg=${thm_gray},align=centre" # panes - local pane_status_enable=$(get_tmux_option "@catppuccin_pane_status_enabled" "no") # yes - local pane_border_status=$(get_tmux_option "@catppuccin_pane_border_status" "off") # bottom - local pane_border_style=$(get_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}") - local pane_active_border_style=$( + local pane_border_status pane_border_style \ + pane_active_border_style pane_left_separator pane_middle_separator \ + pane_right_separator pane_number_position pane_format + pane_status_enable=$(get_tmux_option "@catppuccin_pane_status_enabled" "no") # yes + pane_border_status=$(get_tmux_option "@catppuccin_pane_border_status" "off") # bottom + pane_border_style=$(get_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}") + pane_active_border_style=$( get_tmux_option "@catppuccin_pane_active_border_style" \ "#{?pane_in_mode,fg=${thm_yellow},#{?pane_synchronized,fg=${thm_magenta},fg=${thm_orange}}}" ) - local pane_left_separator=$(get_tmux_option "@catppuccin_pane_left_separator" "█") - local pane_middle_separator=$(get_tmux_option "@catppuccin_pane_middle_separator" "█") - local pane_right_separator=$(get_tmux_option "@catppuccin_pane_right_separator" "█") - local pane_number_position=$(get_tmux_option "@catppuccin_pane_number_position" "left") # right, left - local pane_format=$(load_modules "pane_default_format" "$modules_custom_path" "$modules_pane_path") + pane_left_separator=$(get_tmux_option "@catppuccin_pane_left_separator" "█") + pane_middle_separator=$(get_tmux_option "@catppuccin_pane_middle_separator" "█") + pane_right_separator=$(get_tmux_option "@catppuccin_pane_right_separator" "█") + pane_number_position=$(get_tmux_option "@catppuccin_pane_number_position" "left") # right, left + pane_format=$(load_modules "pane_default_format" "$modules_custom_path" "$modules_pane_path") setw pane-border-status "$pane_border_status" setw pane-active-border-style "$pane_active_border_style" @@ -82,34 +94,39 @@ main() { setw pane-border-format "$pane_format" # window - local window_status_separator=$(get_tmux_option "@catppuccin_window_separator" "") + local window_status_separator window_left_separator window_right_separator \ + window_middle_separator window_number_position window_status_enable \ + window_format window_current_format + + window_status_separator=$(get_tmux_option "@catppuccin_window_separator" "") setw window-status-separator "$window_status_separator" - local window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") - local window_right_separator=$(get_tmux_option "@catppuccin_window_right_separator" "█") - 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 + window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") + window_right_separator=$(get_tmux_option "@catppuccin_window_right_separator" "█") + window_middle_separator=$(get_tmux_option "@catppuccin_window_middle_separator" "█ ") + window_number_position=$(get_tmux_option "@catppuccin_window_number_position" "left") # right, left + window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left - local window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") + window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") setw window-status-format "$window_format" - local window_current_format=$(load_modules "window_current_format" "$modules_custom_path" "$modules_window_path") + window_current_format=$(load_modules "window_current_format" "$modules_custom_path" "$modules_window_path") setw window-status-current-format "$window_current_format" # status module - local status_left_separator=$(get_tmux_option "@catppuccin_status_left_separator" "") - 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_left_separator status_right_separator status_connect_separator \ + status_fill status_modules_left status_modules_right + status_left_separator=$(get_tmux_option "@catppuccin_status_left_separator" "") + status_right_separator=$(get_tmux_option "@catppuccin_status_right_separator" "█") + status_connect_separator=$(get_tmux_option "@catppuccin_status_connect_separator" "yes") + status_fill=$(get_tmux_option "@catppuccin_status_fill" "icon") - local status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") - local loaded_modules_left=$(load_modules "$status_modules_left" "$modules_custom_path" "$modules_status_path") + status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") + loaded_modules_left=$(load_modules "$status_modules_left" "$modules_custom_path" "$modules_status_path") set status-left "$loaded_modules_left" - local status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") - local loaded_modules_right=$(load_modules "$status_modules_right" "$modules_custom_path" "$modules_status_path") + status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") + loaded_modules_right=$(load_modules "$status_modules_right" "$modules_custom_path" "$modules_status_path") set status-right "$loaded_modules_right" # modes diff --git a/pane/pane_default_format.sh b/pane/pane_default_format.sh index a3f177c..53ef75b 100644 --- a/pane/pane_default_format.sh +++ b/pane/pane_default_format.sh @@ -1,12 +1,13 @@ show_pane_default_format() { - local number="#{pane_index}" - local color="$(get_tmux_option "@catppuccin_pane_color" "$thm_green")" - local background="$(get_tmux_option "@catppuccin_pane_background_color" "$thm_gray")" - local text="$(get_tmux_option "@catppuccin_pane_default_text" "#{b:pane_current_path}")" - local fill="$(get_tmux_option "@catppuccin_pane_default_fill" "number")" # number, all, none - local active="#{pane_active}" + local number color background text fill - local default_pane_format=$( build_pane_format "$number" "$color" "$background" "$text" "$fill") + number="#{pane_index}" + color="$(get_tmux_option "@catppuccin_pane_color" "$thm_green")" + background="$(get_tmux_option "@catppuccin_pane_background_color" "$thm_gray")" + text="$(get_tmux_option "@catppuccin_pane_default_text" "#{b:pane_current_path}")" + fill="$(get_tmux_option "@catppuccin_pane_default_fill" "number")" # number, all, none + + default_pane_format=$(build_pane_format "$number" "$color" "$background" "$text" "$fill") echo "$default_pane_format" } diff --git a/status/application.sh b/status/application.sh index 56f2e76..331dee5 100644 --- a/status/application.sh +++ b/status/application.sh @@ -1,10 +1,12 @@ show_application() { - local index=$1 - local icon=$(get_tmux_option "@catppuccin_application_icon" "") - local color=$(get_tmux_option "@catppuccin_application_color" "$thm_pink") - local text=$(get_tmux_option "@catppuccin_application_text" "#W") + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon=$(get_tmux_option "@catppuccin_application_icon" "") + color=$(get_tmux_option "@catppuccin_application_color" "$thm_pink") + text=$(get_tmux_option "@catppuccin_application_text" "#W") + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/battery.sh b/status/battery.sh index 7ad978f..bcd8a76 100644 --- a/status/battery.sh +++ b/status/battery.sh @@ -1,4 +1,11 @@ show_battery() { + local index icon color text module + + index=$1 + icon=$(get_tmux_option "@catppuccin_battery_icon" "#{battery_icon}") + color=$(get_tmux_option "@catppuccin_battery_color" "$thm_yellow") + text=$(get_tmux_option "@catppuccin_battery_text" "#{battery_percentage}") + tmux set-option -g @batt_icon_charge_tier8 '󰁹' tmux set-option -g @batt_icon_charge_tier7 '󰂁' tmux set-option -g @batt_icon_charge_tier6 '󰁿' @@ -12,12 +19,7 @@ show_battery() { tmux set-option -g @batt_icon_status_discharging '󰂃' tmux set-option -g @batt_icon_status_unknown '󰂑' - local index=$1 - local icon=$(get_tmux_option "@catppuccin_battery_icon" "#{battery_icon}") - local color=$(get_tmux_option "@catppuccin_battery_color" "$thm_yellow") - local text=$(get_tmux_option "@catppuccin_battery_text" "#{battery_percentage}") - - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/clima.sh b/status/clima.sh index 46851d4..7e1801b 100644 --- a/status/clima.sh +++ b/status/clima.sh @@ -1,11 +1,13 @@ # Requires https://github.com/vascomfnunes/tmux-clima show_clima() { - local index=$1 - local icon="$(get_tmux_option "@catppuccin_clima_icon" "")" - local color="$(get_tmux_option "@catppuccin_clima_color" "$thm_yellow")" - local text="$(get_tmux_option "@catppuccin_clima_text" "#{clima}")" + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon="$(get_tmux_option "@catppuccin_clima_icon" "")" + color="$(get_tmux_option "@catppuccin_clima_color" "$thm_yellow")" + text="$(get_tmux_option "@catppuccin_clima_text" "#{clima}")" + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/cpu.sh b/status/cpu.sh index 0d43359..fd12951 100644 --- a/status/cpu.sh +++ b/status/cpu.sh @@ -1,14 +1,16 @@ show_cpu() { - tmux set-option -g @cpu_low_bg_color "$thm_yellow" # background color when cpu is low - tmux set-option -g @cpu_medium_bg_color "$thm_orange" # background color when cpu is medium - tmux set-option -g @cpu_high_bg_color "$thm_red" # background color when cpu is high - - local index=$1 - local icon=$(get_tmux_option "@catppuccin_cpu_icon" "") - local color="$(get_tmux_option "@catppuccin_cpu_color" "#{cpu_bg_color}")" - local text="$(get_tmux_option "@catppuccin_cpu_text" "#{cpu_percentage}")" + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon=$(get_tmux_option "@catppuccin_cpu_icon" "") + color="$(get_tmux_option "@catppuccin_cpu_color" "#{cpu_bg_color}")" + text="$(get_tmux_option "@catppuccin_cpu_text" "#{cpu_percentage}")" + + tmux set-option -g @cpu_low_bg_color "$thm_yellow" # background color when cpu is low + tmux set-option -g @cpu_medium_bg_color "$thm_orange" # background color when cpu is medium + tmux set-option -g @cpu_high_bg_color "$thm_red" # background color when cpu is high + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/date_time.sh b/status/date_time.sh index 9f7030e..04695b9 100644 --- a/status/date_time.sh +++ b/status/date_time.sh @@ -1,11 +1,12 @@ show_date_time() { - local index=$1 - local icon="$(get_tmux_option "@catppuccin_date_time_icon" "󰃰")" - local color="$(get_tmux_option "@catppuccin_date_time_color" "$thm_blue")" - local text="$(get_tmux_option "@catppuccin_date_time_text" "%Y-%m-%d %H:%M")" + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon="$(get_tmux_option "@catppuccin_date_time_icon" "󰃰")" + color="$(get_tmux_option "@catppuccin_date_time_color" "$thm_blue")" + text="$(get_tmux_option "@catppuccin_date_time_text" "%Y-%m-%d %H:%M")" + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } - diff --git a/status/directory.sh b/status/directory.sh index 1ff293d..8982dbe 100644 --- a/status/directory.sh +++ b/status/directory.sh @@ -1,10 +1,12 @@ show_directory() { - local index=$1 - local icon=$(get_tmux_option "@catppuccin_directory_icon" "") - local color=$(get_tmux_option "@catppuccin_directory_color" "$thm_pink") - local text=$(get_tmux_option "@catppuccin_directory_text" "#{b:pane_current_path}") + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon=$(get_tmux_option "@catppuccin_directory_icon" "") + color=$(get_tmux_option "@catppuccin_directory_color" "$thm_pink") + text=$(get_tmux_option "@catppuccin_directory_text" "#{b:pane_current_path}") + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/host.sh b/status/host.sh index 5abd71e..8e4bd23 100644 --- a/status/host.sh +++ b/status/host.sh @@ -1,10 +1,12 @@ show_host() { - local index=$1 - local icon=$(get_tmux_option "@catppuccin_host_icon" "󰒋") - local color=$(get_tmux_option "@catppuccin_host_color" "$thm_magenta") - local text=$(get_tmux_option "@catppuccin_host_text" "#H") + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon=$(get_tmux_option "@catppuccin_host_icon" "󰒋") + color=$(get_tmux_option "@catppuccin_host_color" "$thm_magenta") + text=$(get_tmux_option "@catppuccin_host_text" "#H") + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/load.sh b/status/load.sh index 942c7f3..5809423 100644 --- a/status/load.sh +++ b/status/load.sh @@ -1,11 +1,12 @@ show_load() { - local index=$1 - local icon="$(get_tmux_option "@catppuccin_load_icon" "󰊚")" - local color="$(get_tmux_option "@catppuccin_load_color" "$thm_blue")" - local text="$(get_tmux_option "@catppuccin_load_text" "#{load_full}")" + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon="$(get_tmux_option "@catppuccin_load_icon" "󰊚")" + color="$(get_tmux_option "@catppuccin_load_color" "$thm_blue")" + text="$(get_tmux_option "@catppuccin_load_text" "#{load_full}")" + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } - diff --git a/status/session.sh b/status/session.sh index 58d6c90..6e79cfb 100644 --- a/status/session.sh +++ b/status/session.sh @@ -1,10 +1,12 @@ show_session() { - local index=$1 - local icon=$(get_tmux_option "@catppuccin_session_icon" "") - local color=$(get_tmux_option "@catppuccin_session_color" "#{?client_prefix,$thm_red,$thm_green}") - local text=$(get_tmux_option "@catppuccin_session_text" "#S") + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon=$(get_tmux_option "@catppuccin_session_icon" "") + color=$(get_tmux_option "@catppuccin_session_color" "#{?client_prefix,$thm_red,$thm_green}") + text=$(get_tmux_option "@catppuccin_session_text" "#S") + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/uptime.sh b/status/uptime.sh index 7b59173..c112abf 100644 --- a/status/uptime.sh +++ b/status/uptime.sh @@ -1,10 +1,12 @@ show_uptime() { - local index=$1 - local icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" - local color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" - local text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* users.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" + local index icon color text module - local module=$(build_status_module "$index" "$icon" "$color" "$text") + index=$1 + icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" + color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" + text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* users.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/user.sh b/status/user.sh index 1d4d03e..ea88e75 100644 --- a/status/user.sh +++ b/status/user.sh @@ -1,10 +1,12 @@ show_user() { - local index=$1 - local icon=$(get_tmux_option "@catppuccin_user_icon" "") - local color=$(get_tmux_option "@catppuccin_user_color" "$thm_cyan") - local text=$(get_tmux_option "@catppuccin_user_text" "#(whoami)") + local index icon color text module - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) + index=$1 + icon=$(get_tmux_option "@catppuccin_user_icon" "") + color=$(get_tmux_option "@catppuccin_user_color" "$thm_cyan") + text=$(get_tmux_option "@catppuccin_user_text" "#(whoami)") + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/weather.sh b/status/weather.sh index 943ac30..b6cb6fe 100644 --- a/status/weather.sh +++ b/status/weather.sh @@ -1,11 +1,14 @@ # Requires https://github.com/xamut/tmux-weather. -show_weather() { - local index=$1 - local icon="$(get_tmux_option "@catppuccin_weather_icon" "")" - local color="$(get_tmux_option "@catppuccin_weather_color" "$thm_yellow")" - local text="$(get_tmux_option "@catppuccin_weather_text" "#{weather}")" - local module=$( build_status_module "$index" "$icon" "$color" "$text" ) +show_weather() { + local index icon color text module + + index=$1 + icon="$(get_tmux_option "@catppuccin_weather_icon" "")" + color="$(get_tmux_option "@catppuccin_weather_color" "$thm_yellow")" + text="$(get_tmux_option "@catppuccin_weather_text" "#{weather}")" + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/utils/module_utils.sh b/utils/module_utils.sh index 58dcef4..96cbd87 100644 --- a/utils/module_utils.sh +++ b/utils/module_utils.sh @@ -16,7 +16,7 @@ load_modules() { # extract the substring from start of string up to delimiter. iter=${IN%% *} # delete this first "element" AND next separator, from $IN. - IN="${IN#$iter }" + IN="${IN#"$iter "}" # Print (or doing anything with) the first "element". module_name=$iter @@ -25,6 +25,7 @@ load_modules() { module_path="$module_dir/$module_name.sh" if [ -r "$module_path" ]; then + # shellcheck source=/dev/null source "$module_path" loaded_modules="$loaded_modules$( "show_$module_name" "$module_index" )" module_index+=1 diff --git a/window/window_current_format.sh b/window/window_current_format.sh index 46b4a18..0a17bcf 100644 --- a/window/window_current_format.sh +++ b/window/window_current_format.sh @@ -1,11 +1,13 @@ show_window_current_format() { - local number="#I" - local color=$(get_tmux_option "@catppuccin_window_current_color" "$thm_orange") - local background=$(get_tmux_option "@catppuccin_window_current_background" "$thm_bg") - local text="$(get_tmux_option "@catppuccin_window_current_text" "#{b:pane_current_path}")" # use #W for application instead of directory - local fill="$(get_tmux_option "@catppuccin_window_current_fill" "number")" # number, all, none + local number color background text fill current_window_format - local current_window_format=$( build_window_format "$number" "$color" "$background" "$text" "$fill" ) + number="#I" + color=$(get_tmux_option "@catppuccin_window_current_color" "$thm_orange") + background=$(get_tmux_option "@catppuccin_window_current_background" "$thm_bg") + text="$(get_tmux_option "@catppuccin_window_current_text" "#{b:pane_current_path}")" # use #W for application instead of directory + fill="$(get_tmux_option "@catppuccin_window_current_fill" "number")" # number, all, none + + current_window_format=$(build_window_format "$number" "$color" "$background" "$text" "$fill") echo "$current_window_format" } diff --git a/window/window_default_format.sh b/window/window_default_format.sh index 5afcfe6..2c758ba 100644 --- a/window/window_default_format.sh +++ b/window/window_default_format.sh @@ -1,11 +1,13 @@ show_window_default_format() { - local number="#I" - local color=$(get_tmux_option "@catppuccin_window_default_color" "$thm_blue") - local background=$(get_tmux_option "@catppuccin_window_default_background" "$thm_gray") - local text="$(get_tmux_option "@catppuccin_window_default_text" "#{b:pane_current_path}")" # use #W for application instead of directory - local fill="$(get_tmux_option "@catppuccin_window_default_fill" "number")" # number, all, none + local number color background text fill default_window_format - local default_window_format=$( build_window_format "$number" "$color" "$background" "$text" "$fill" ) + number="#I" + color=$(get_tmux_option "@catppuccin_window_default_color" "$thm_blue") + background=$(get_tmux_option "@catppuccin_window_default_background" "$thm_gray") + text="$(get_tmux_option "@catppuccin_window_default_text" "#{b:pane_current_path}")" # use #W for application instead of directory + fill="$(get_tmux_option "@catppuccin_window_default_fill" "number")" # number, all, none + + default_window_format=$(build_window_format "$number" "$color" "$background" "$text" "$fill") echo "$default_window_format" } From 5ed4e8a6a20c928688da268dfcdf460ac9c3cb49 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:11:39 +0100 Subject: [PATCH 25/72] fixup! Cleanup shellcheck warnings (#178) (#179) Dont remove checking for `catppuccin.tmux` --- .github/workflows/shellcheck.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index d01b2be..159df99 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -26,5 +26,7 @@ jobs: - uses: actions/checkout@v4 - name: Run ShellCheck uses: ludeeus/action-shellcheck@master + with: + additional_files: "catppuccin.tmux" env: SHELLCHECK_OPTS: "-a" From b26eb2fa6d2dd524ceaf68a4751c1d1285d809df Mon Sep 17 00:00:00 2001 From: chacon <63523896+Chacon-tu-drema@users.noreply.github.com> Date: Wed, 17 Apr 2024 11:52:10 +0100 Subject: [PATCH 26/72] Adding git to status (#191) * added git.sh file * added instrucctions to README.md * instruccions typo corrections * Customize git module and instrucctions * Correction for Shellcheck / Shellcheck (pull_request) test. added escape caracters \ in n git.sh script * Rename the module to gitmux * README.md corrections * README.md typo corrections --- README.md | 20 ++++++++++++++++++++ status/gitmux.sh | 14 ++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 status/gitmux.sh diff --git a/README.md b/README.md index 860ebba..2944b4c 100644 --- a/README.md +++ b/README.md @@ -451,6 +451,26 @@ Add the load module to the status modules list. set -g @catppuccin_status_modules_right "... load ..." ``` +### Gitmux module + +#### Requirements +This module depends on [gitmux](https://github.com/arl/gitmux). + +#### Install +To install gitmux, follow the instructions in the [gitmux documentation](https://github.com/arl/gitmux/blob/main/README.md#installing). + +#### Configure +Add the gitmux module to the status modules list. +```sh +set -g @catppuccin_status_modules_right "... gitmux ..." +``` + +To customize the gitmux module, you can follow the instrucctions in the [gitmux documentation](https://github.com/arl/gitmux/blob/main/README.md#customizing) and add this line in your tmux configuration: +```sh +set -g @catppuccin_gitmux_text "#(gitmux -cfg $HOME/.gitmux.conf \"#{pane_current_path}\")" +``` + + ## Create a custom module It is possible to add a new custom module or overwrite any of the existing modules. diff --git a/status/gitmux.sh b/status/gitmux.sh new file mode 100644 index 0000000..9186bc2 --- /dev/null +++ b/status/gitmux.sh @@ -0,0 +1,14 @@ +# Requires https://github.com/arl/gitmux + +show_gitmux() { + local index icon color text module + + index=$1 + icon="$(get_tmux_option "@catppuccin_gitmux_icon" "󰊢")" + color="$(get_tmux_option "@catppuccin_gitmux_color" "$thm_green")" + text="$(get_tmux_option "@catppuccin_gitmux_text" "#(gitmux \"#{pane_current_path}\")")" + + module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" +} From 69d37dfbb0b28c68f0b446272ce490bc75b67f7b Mon Sep 17 00:00:00 2001 From: lluchkaa <37471864+lluchkaa@users.noreply.github.com> Date: Sat, 20 Apr 2024 11:43:59 +0300 Subject: [PATCH 27/72] Respect `status_background` in `message-style` (#193) * respect status background in message style * move message_background to existing block --- catppuccin.tmux | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index 46686a5..a2b6621 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -45,7 +45,7 @@ main() { done <"${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" # status general - local status_default status_justify status_background + local status_default status_justify status_background message_background status_default=$(get_tmux_option "@catppuccin_status_default" "on") # shellcheck disable=SC2121 set status "$status_default" @@ -56,11 +56,14 @@ main() { status_background=$(get_tmux_option "@catppuccin_status_background" "theme") if [ "${status_background}" = "theme" ]; then set status-bg "${thm_bg}" + message_background="${thm_gray}" else if [ "${status_background}" = "default" ]; then set status-style bg=default + message_background="default" else set status-bg "${status_background}" + message_background="${status_background}" fi fi @@ -68,8 +71,8 @@ main() { set status-right-length "100" # messages - set message-style "fg=${thm_cyan},bg=${thm_gray},align=centre" - set message-command-style "fg=${thm_cyan},bg=${thm_gray},align=centre" + set message-style "fg=${thm_cyan},bg=${message_background},align=centre" + set message-command-style "fg=${thm_cyan},bg=${message_background},align=centre" # panes local pane_border_status pane_border_style \ From 67e8f231fd10557b736623ee9af1c220c45f9290 Mon Sep 17 00:00:00 2001 From: Hammy <58985301+sgoudham@users.noreply.github.com> Date: Sun, 21 Apr 2024 09:26:01 +0100 Subject: [PATCH 28/72] docs: add issue templates (#195) * docs: add issue templates * refactor: mention show and tell --- .github/ISSUE_TEMPLATE/bug.yml | 39 ++++++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 11 ++++++++ .github/ISSUE_TEMPLATE/enhancement.yml | 18 ++++++++++++ .github/ISSUE_TEMPLATE/meta.yml | 18 ++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/enhancement.yml create mode 100644 .github/ISSUE_TEMPLATE/meta.yml diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..b7407ca --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,39 @@ +name: Bug Report +description: Report your bugs with the theme here! +labels: [bug] +body: + - type: checkboxes + attributes: + label: Is there an existing issue outlining your problem? + description: Please search to see if an issue already exists for your problem. + options: + - label: I have searched the existing issues and they do not solve my problem. + required: true + - type: textarea + attributes: + label: Describe your problem. + description: Also tell us, what do you expect to see? + placeholder: The battery charging icon is missing... + validations: + required: true + - type: textarea + attributes: + label: Paste your configuration. + description: Provide us with the contents of your `.tmux.conf` file. + validations: + required: true + - type: textarea + attributes: + label: Attach screenshots. + description: If applicable, attach screenshots which clearly highlight the issue. + - type: input + attributes: + label: What tmux version are you seeing the issue on? + description: "You can find your version by running `tmux -V`" + placeholder: tmux 3.3a + validations: + required: true + - type: textarea + attributes: + label: Any additional comments? + description: Add any information that hasn't been covered in the previous sections! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..5235434 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: Ask A Question + url: https://github.com/catppuccin/tmux/discussions/new?category=q-a + about: Need help tweaking your Catppuccin tmux configuration? Ask questions in GitHub Discussions! + - name: Show & Tell + url: https://github.com/catppuccin/tmux/discussions/new?category=show-and-tell + about: Want to showcase your customised Catppuccin tmux configuration? Show it off in GitHub Discussions! + - name: Community Discord + url: https://discord.com/servers/catppuccin-907385605422448742 + about: Chat to other community members! diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml new file mode 100644 index 0000000..1e2b053 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/enhancement.yml @@ -0,0 +1,18 @@ +name: Enhancement Issue +description: Request improvements to the theme here! +labels: [enhancement] +body: + - type: checkboxes + attributes: + label: Is there an existing issue outlining your improvement? + description: Please search to see if your improvement has already been raised as an issue. + options: + - label: I have searched the existing issues and my improvement has not been raised yet. + required: true + - type: textarea + attributes: + label: What would you like to see added and/or changed? + description: Make sure to mention why you think this is an improvement! + placeholder: I'd like to have an extra configuration option for... + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/meta.yml b/.github/ISSUE_TEMPLATE/meta.yml new file mode 100644 index 0000000..f471d4a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/meta.yml @@ -0,0 +1,18 @@ +name: Meta Issue +description: Raise any issue regarding the repository here! +labels: [meta] +body: + - type: checkboxes + attributes: + label: Is there an existing issue outlining your problem? + description: Please search to see if an issue already exists for your problem. + options: + - label: I have searched the existing issues and they do not solve my problem. + required: true + - type: textarea + attributes: + label: Describe your issue. + description: Bugs should be raised under a [Bug Report](https://github.com/catppuccin/tmux/issues/new?assignees=&labels=bug&template=bug.yml). + placeholder: The README is missing crucial information such as... + validations: + required: true From a556353d60833367b13739e660d4057a96f2f4fe Mon Sep 17 00:00:00 2001 From: Hammy <58985301+sgoudham@users.noreply.github.com> Date: Sun, 21 Apr 2024 12:38:55 +0100 Subject: [PATCH 29/72] chore(issue-templates): fix `show & tell` discussion link (#196) --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 5235434..0e1b590 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,7 +4,7 @@ contact_links: url: https://github.com/catppuccin/tmux/discussions/new?category=q-a about: Need help tweaking your Catppuccin tmux configuration? Ask questions in GitHub Discussions! - name: Show & Tell - url: https://github.com/catppuccin/tmux/discussions/new?category=show-and-tell + url: https://github.com/catppuccin/tmux/discussions/new?category=show-tell about: Want to showcase your customised Catppuccin tmux configuration? Show it off in GitHub Discussions! - name: Community Discord url: https://discord.com/servers/catppuccin-907385605422448742 From a10163042b5d70bc54f4b8e8ead5687d8fbaab71 Mon Sep 17 00:00:00 2001 From: Zoket Date: Tue, 30 Apr 2024 02:41:57 +0800 Subject: [PATCH 30/72] fix(status): support tmux-battery attached status icon (#201) --- status/battery.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/status/battery.sh b/status/battery.sh index bcd8a76..5a2d8f0 100644 --- a/status/battery.sh +++ b/status/battery.sh @@ -18,6 +18,7 @@ show_battery() { tmux set-option -g @batt_icon_status_charging '󰂄' tmux set-option -g @batt_icon_status_discharging '󰂃' tmux set-option -g @batt_icon_status_unknown '󰂑' + tmux set-option -g @batt_icon_status_attached "󱈑" module=$(build_status_module "$index" "$icon" "$color" "$text") From c0e072cb8b6e509622f82d3ce402f211a6c96798 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Fri, 10 May 2024 12:47:23 +0000 Subject: [PATCH 31/72] fix(window_builder): number position left (#205) Middle separator color was inverted when number position left --- builder/window_builder.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/builder/window_builder.sh b/builder/window_builder.sh index 186b169..cf42f0e 100644 --- a/builder/window_builder.sh +++ b/builder/window_builder.sh @@ -48,11 +48,12 @@ build_window_format() { fi if [ "$fill" = "number" ]; then + local show_middle_separator 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 + show_middle_separator="#[fg=$color,bg=$background,nobold,nounderscore,noitalics]$window_middle_separator" if [ "$status_connect_separator" = "yes" ]; 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" @@ -65,6 +66,8 @@ build_window_format() { fi if [ "$window_number_position" = "left" ]; then + show_middle_separator="#[fg=$background,bg=$color,nobold,nounderscore,noitalics]$window_middle_separator" + if [ "$status_connect_separator" = "yes" ]; 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" From 75ffbfea017d083de701621429cb0e628aab6fc1 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Fri, 10 May 2024 12:48:39 +0000 Subject: [PATCH 32/72] fix(pane_builder): use default background instead of `thm_bg` (#204) fix #180 --- builder/pane_builder.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/builder/pane_builder.sh b/builder/pane_builder.sh index 1cc5759..fa97805 100644 --- a/builder/pane_builder.sh +++ b/builder/pane_builder.sh @@ -11,20 +11,20 @@ build_pane_format() { then if [ "$fill" = "none" ] then - local show_left_separator="#[fg=$thm_gray,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" + local show_left_separator="#[fg=$thm_gray,bg=default,nobold,nounderscore,noitalics]$pane_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]$pane_middle_separator" local show_text="#[fg=$thm_fg,bg=$thm_gray]$text" - local show_right_separator="#[fg=$thm_gray,bg=$thm_bg]$pane_right_separator" + local show_right_separator="#[fg=$thm_gray,bg=default]$pane_right_separator" fi if [ "$fill" = "all" ] then - local show_left_separator="#[fg=$color,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" + local show_left_separator="#[fg=$color,bg=default,nobold,nounderscore,noitalics]$pane_left_separator" local show_number="#[fg=$background,bg=$color]$number" local show_middle_separator="#[fg=$background,bg=$color,nobold,nounderscore,noitalics]$pane_middle_separator" local show_text="#[fg=$background,bg=$color]$text" - local show_right_separator="#[fg=$color,bg=$thm_bg]$pane_right_separator" + local show_right_separator="#[fg=$color,bg=default]$pane_right_separator" fi if [ "$fill" = "number" ] @@ -35,14 +35,14 @@ build_pane_format() { if [ "$pane_number_position" = "right" ] then - local show_left_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_left_separator" - local show_right_separator="#[fg=$color,bg=$thm_bg]$pane_right_separator" + local show_left_separator="#[fg=$background,bg=default,nobold,nounderscore,noitalics]$pane_left_separator" + local show_right_separator="#[fg=$color,bg=default]$pane_right_separator" fi if [ "$pane_number_position" = "left" ] then - local show_right_separator="#[fg=$background,bg=$thm_bg,nobold,nounderscore,noitalics]$pane_right_separator" - local show_left_separator="#[fg=$color,bg=$thm_bg]$pane_left_separator" + local show_right_separator="#[fg=$background,bg=default,nobold,nounderscore,noitalics]$pane_right_separator" + local show_left_separator="#[fg=$color,bg=default]$pane_left_separator" fi fi From 804f060fe1cb77388fec159ee303aa9f9c94ddff Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sat, 11 May 2024 10:01:16 +0000 Subject: [PATCH 33/72] Revert "fix(window_builder): number position left (#205)" (#209) This reverts commit c0e072cb8b6e509622f82d3ce402f211a6c96798. --- builder/window_builder.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/builder/window_builder.sh b/builder/window_builder.sh index cf42f0e..186b169 100644 --- a/builder/window_builder.sh +++ b/builder/window_builder.sh @@ -48,12 +48,11 @@ build_window_format() { fi if [ "$fill" = "number" ]; then - local show_middle_separator 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 - show_middle_separator="#[fg=$color,bg=$background,nobold,nounderscore,noitalics]$window_middle_separator" if [ "$status_connect_separator" = "yes" ]; 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" @@ -66,8 +65,6 @@ build_window_format() { fi if [ "$window_number_position" = "left" ]; then - show_middle_separator="#[fg=$background,bg=$color,nobold,nounderscore,noitalics]$window_middle_separator" - if [ "$status_connect_separator" = "yes" ]; 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" From 2292669be300155652e6f8ef6d0312eb100c34d4 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sat, 11 May 2024 15:26:41 +0000 Subject: [PATCH 34/72] refactor(theme): use whiskers (#207) --- catppuccin.tmux | 2 +- .../catppuccin_frappe.tmuxtheme | 0 .../catppuccin_latte.tmuxtheme | 10 +++---- .../catppuccin_macchiato.tmuxtheme | 0 .../catppuccin_mocha.tmuxtheme | 0 tmux.tera | 26 +++++++++++++++++++ 6 files changed, 32 insertions(+), 6 deletions(-) rename catppuccin-frappe.tmuxtheme => themes/catppuccin_frappe.tmuxtheme (100%) rename catppuccin-latte.tmuxtheme => themes/catppuccin_latte.tmuxtheme (77%) rename catppuccin-macchiato.tmuxtheme => themes/catppuccin_macchiato.tmuxtheme (100%) rename catppuccin-mocha.tmuxtheme => themes/catppuccin_mocha.tmuxtheme (100%) create mode 100644 tmux.tera diff --git a/catppuccin.tmux b/catppuccin.tmux index a2b6621..5d86c32 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -42,7 +42,7 @@ main() { # '$key' stores the key. # '$val' stores the value. eval "local $key"="$val" - done <"${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme" + done <"${PLUGIN_DIR}/themes/catppuccin_${theme}.tmuxtheme" # status general local status_default status_justify status_background message_background diff --git a/catppuccin-frappe.tmuxtheme b/themes/catppuccin_frappe.tmuxtheme similarity index 100% rename from catppuccin-frappe.tmuxtheme rename to themes/catppuccin_frappe.tmuxtheme diff --git a/catppuccin-latte.tmuxtheme b/themes/catppuccin_latte.tmuxtheme similarity index 77% rename from catppuccin-latte.tmuxtheme rename to themes/catppuccin_latte.tmuxtheme index 16f078f..af31a8d 100644 --- a/catppuccin-latte.tmuxtheme +++ b/themes/catppuccin_latte.tmuxtheme @@ -2,13 +2,13 @@ # WARNING: hex colors can't contain capital letters # --> Catppuccin (Latte) -thm_bg="#dce0e8" +thm_bg="#eff1f5" thm_fg="#4c4f69" -thm_cyan="#179299" +thm_cyan="#04a5e5" thm_black="#e6e9ef" -thm_gray="#bcc0cc" -thm_magenta="#ea76cb" -thm_pink="#8839ef" +thm_gray="#ccd0da" +thm_magenta="#8839ef" +thm_pink="#ea76cb" thm_red="#d20f39" thm_green="#40a02b" thm_yellow="#df8e1d" diff --git a/catppuccin-macchiato.tmuxtheme b/themes/catppuccin_macchiato.tmuxtheme similarity index 100% rename from catppuccin-macchiato.tmuxtheme rename to themes/catppuccin_macchiato.tmuxtheme diff --git a/catppuccin-mocha.tmuxtheme b/themes/catppuccin_mocha.tmuxtheme similarity index 100% rename from catppuccin-mocha.tmuxtheme rename to themes/catppuccin_mocha.tmuxtheme diff --git a/tmux.tera b/tmux.tera new file mode 100644 index 0000000..da095ed --- /dev/null +++ b/tmux.tera @@ -0,0 +1,26 @@ +--- +whiskers: + version: "2.1.0" + matrix: + - flavor + filename: "themes/catppuccin_{{flavor.identifier}}.tmuxtheme" +--- +{%- set palette = flavor.colors -%} +# NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" +# WARNING: hex colors can't contain capital letters + +# --> Catppuccin ({{ flavor.identifier | capitalize }}) +thm_bg="#{{ palette.base.hex | lower }}" +thm_fg="#{{ palette.text.hex | lower }}" +thm_cyan="#{{ palette.sky.hex| lower }}" +thm_black="#{{ palette.mantle.hex | lower }}" +thm_gray="#{{ palette.surface0.hex | lower }}" +thm_magenta="#{{ palette.mauve.hex | lower }}" +thm_pink="#{{ palette.pink.hex | lower }}" +thm_red="#{{ palette.red.hex | lower }}" +thm_green="#{{ palette.green.hex | lower }}" +thm_yellow="#{{ palette.yellow.hex | lower }}" +thm_blue="#{{ palette.blue.hex | lower }}" +thm_orange="#{{ palette.peach.hex | lower }}" +thm_black4="#{{ palette.surface2.hex | lower }}" +{% raw %}{% endraw %}{# Needs to end with a newline #} From 6ba7a729250734545e7dbf48f26919d1e832f568 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sat, 11 May 2024 16:23:05 +0000 Subject: [PATCH 35/72] Feat: interpolate colors (#208) * feat: interpolate theme colors * doc: add interpolated colors to readme --- README.md | 10 +++++----- catppuccin.tmux | 29 +++++++++++++++++++---------- utils/interpolate_utils.sh | 11 +++++++++++ utils/tmux_utils.sh | 21 +++++++++++++++++++++ 4 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 utils/interpolate_utils.sh diff --git a/README.md b/README.md index 2944b4c..e8d1f26 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,7 @@ set -g @catppuccin_window_default_background "color" ``` Values: -- color - a hexadecimal color value +- color - a theme color (`#{thm_}`) or hexadecimal color value #### Override the window default text: ```sh @@ -188,7 +188,7 @@ set -g @catppuccin_window_current_background "color" ``` Values: -- color - a hexadecimal color value +- color - a theme color (`#{thm_}`) or a hexadecimal color value #### Override the window current text: ```sh @@ -212,13 +212,13 @@ Use this to override the way the directory is displayed. #### Set the pane border style: ```sh -set -g @catppuccin_pane_border_style "fg=blue" # Use a value compatible with the standard tmux 'pane-border-style' +set -g @catppuccin_pane_border_style "fg=#{thm_blue}" # Use a value compatible with the standard tmux 'pane-border-style' ``` #### Set the pane active border style: ```sh -set -g @catppuccin_pane_active_border_style "fg=red" # Use a value compatible with the standard tmux 'pane-border-active-style' +set -g @catppuccin_pane_active_border_style "fg=#{thm_red}" # Use a value compatible with the standard tmux 'pane-border-active-style' ``` @@ -236,7 +236,7 @@ set -g @catppuccin_status_background "theme" This will overwrite the status bar background: - "theme" will use the color from the selected theme - "default" will make the status bar transparent -- use hex color codes for other colors +- use hex color codes for other colors or a theme color (`#{theme_}`) Note: you need to restart tmux for this to take effect: ```sh diff --git a/catppuccin.tmux b/catppuccin.tmux index 5d86c32..4cc7ca7 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -12,6 +12,8 @@ source "${PLUGIN_DIR}/builder/window_builder.sh" source "${PLUGIN_DIR}/builder/pane_builder.sh" # shellcheck source=./utils/tmux_utils.sh source "${PLUGIN_DIR}/utils/tmux_utils.sh" +# shellcheck source=./utils/interpolate_utils.sh +source "${PLUGIN_DIR}/utils/interpolate_utils.sh" # shellcheck source=./utils/module_utils.sh source "${PLUGIN_DIR}/utils/module_utils.sh" @@ -29,6 +31,8 @@ main() { # load local theme local theme + local color_interpolation=() + local color_values=() theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. @@ -42,6 +46,9 @@ main() { # '$key' stores the key. # '$val' stores the value. eval "local $key"="$val" + + color_interpolation+=("\#{$key}") + color_values+=("${val:1:-1}") done <"${PLUGIN_DIR}/themes/catppuccin_${theme}.tmuxtheme" # status general @@ -62,8 +69,8 @@ main() { set status-style bg=default message_background="default" else - set status-bg "${status_background}" - message_background="${status_background}" + message_background="$(do_color_interpolation)" + set status-bg "${message_background}" fi fi @@ -80,9 +87,11 @@ main() { pane_right_separator pane_number_position pane_format pane_status_enable=$(get_tmux_option "@catppuccin_pane_status_enabled" "no") # yes pane_border_status=$(get_tmux_option "@catppuccin_pane_border_status" "off") # bottom - pane_border_style=$(get_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}") + pane_border_style=$( + get_interpolated_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}" + ) pane_active_border_style=$( - get_tmux_option "@catppuccin_pane_active_border_style" \ + get_interpolated_tmux_option "@catppuccin_pane_active_border_style" \ "#{?pane_in_mode,fg=${thm_yellow},#{?pane_synchronized,fg=${thm_magenta},fg=${thm_orange}}}" ) pane_left_separator=$(get_tmux_option "@catppuccin_pane_left_separator" "█") @@ -94,14 +103,14 @@ main() { setw pane-border-status "$pane_border_status" setw pane-active-border-style "$pane_active_border_style" setw pane-border-style "$pane_border_style" - setw pane-border-format "$pane_format" + setw pane-border-format "$(do_color_interpolation "$pane_format")" # window local window_status_separator window_left_separator window_right_separator \ window_middle_separator window_number_position window_status_enable \ window_format window_current_format - window_status_separator=$(get_tmux_option "@catppuccin_window_separator" "") + window_status_separator=$(get_interpolated_tmux_option "@catppuccin_window_separator" "") setw window-status-separator "$window_status_separator" window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") @@ -111,10 +120,10 @@ main() { window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") - setw window-status-format "$window_format" + setw window-status-format "$(do_color_interpolation "$window_format")" window_current_format=$(load_modules "window_current_format" "$modules_custom_path" "$modules_window_path") - setw window-status-current-format "$window_current_format" + setw window-status-current-format "$(do_color_interpolation "$window_current_format")" # status module local status_left_separator status_right_separator status_connect_separator \ @@ -126,11 +135,11 @@ main() { status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") loaded_modules_left=$(load_modules "$status_modules_left" "$modules_custom_path" "$modules_status_path") - set status-left "$loaded_modules_left" + set status-left "$(do_color_interpolation "$loaded_modules_left")" status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") loaded_modules_right=$(load_modules "$status_modules_right" "$modules_custom_path" "$modules_status_path") - set status-right "$loaded_modules_right" + set status-right "$(do_color_interpolation "$loaded_modules_right")" # modes setw clock-mode-colour "${thm_blue}" diff --git a/utils/interpolate_utils.sh b/utils/interpolate_utils.sh new file mode 100644 index 0000000..54d2489 --- /dev/null +++ b/utils/interpolate_utils.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +do_color_interpolation() { + local all_interpolated="$1" + + for ((i=0; i<${#color_interpolation[@]}; i++)); do + all_interpolated=${all_interpolated//${color_interpolation[$i]}/${color_values[$i]}} + done + + echo "$all_interpolated" +} diff --git a/utils/tmux_utils.sh b/utils/tmux_utils.sh index 10711d1..703afad 100644 --- a/utils/tmux_utils.sh +++ b/utils/tmux_utils.sh @@ -22,6 +22,27 @@ get_tmux_option() { fi } +get_interpolated_tmux_option() { + local option value default + option="$1" + default="$2" + value=$(tmux show-option -gqv "$option") + + if [ -n "$value" ] + then + if [ "$value" = "null" ] + then + echo "" + + else + do_color_interpolation "$value" + fi + + else + echo "$default" + fi +} + set() { local option=$1 local value=$2 From 4a561f9f0841b782ac58cda26fef6d3ddbd5b6d2 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sat, 11 May 2024 16:35:46 +0000 Subject: [PATCH 36/72] fixup! Feat: interpolate colors (#208) (#210) add missing argument --- catppuccin.tmux | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index 4cc7ca7..f1f6743 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -69,7 +69,7 @@ main() { set status-style bg=default message_background="default" else - message_background="$(do_color_interpolation)" + message_background="$(do_color_interpolation "$status_background")" set status-bg "${message_background}" fi fi From c0564122384d85403f5064038282b87a325c1a5e Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sun, 12 May 2024 07:22:55 +0000 Subject: [PATCH 37/72] fixup! Feat: interpolate colors (#208) (#214) macos bash version (3.2.57) does not support the `"${val:1:-1}"` syntax --- catppuccin.tmux | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/catppuccin.tmux b/catppuccin.tmux index f1f6743..351009c 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -33,6 +33,7 @@ main() { local theme local color_interpolation=() local color_values=() + local temp theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. @@ -47,8 +48,11 @@ main() { # '$val' stores the value. eval "local $key"="$val" + # TODO: Find a better way to strip the quotes from `$val` + temp="${val%\"}" + temp="${temp#\"}" color_interpolation+=("\#{$key}") - color_values+=("${val:1:-1}") + color_values+=("${temp}") done <"${PLUGIN_DIR}/themes/catppuccin_${theme}.tmuxtheme" # status general From 697087f593dae0163e01becf483b192894e69e33 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sun, 12 May 2024 16:34:44 +0000 Subject: [PATCH 38/72] Fix/test old bash (#216) * test(old-bash): use tmux instead of mocking it * quote output --- .github/scripts/test.bash | 2 +- .github/workflows/test.yml | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/scripts/test.bash b/.github/scripts/test.bash index d1df7e5..bfe9c32 100755 --- a/.github/scripts/test.bash +++ b/.github/scripts/test.bash @@ -59,7 +59,7 @@ main() { exit 1 else echo "Running plugin: $plugin" >&2 - output=$(tmux run-shell "$plugin" 2>&1) + output="$(tmux run-shell "$plugin" 2>&1)" exit_code="$?" check "$exit_code" "$output" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7b85e57..2365de7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,16 +38,14 @@ jobs: name: "Old Bash" runs-on: ubuntu-latest container: - image: bash:3.2.57 # Bash version used by macos + image: bash:3.2.57-alpine3.19 # Bash version used by macos steps: - uses: actions/checkout@v4 - name: Check Syntax is Valid shell: bash run: | - # No tmux available in this container - tmp="$(mktemp -d)" - touch "$tmp/tmux" - chmod +x "$tmp/tmux" - export PATH="$tmp:$PATH" + apk update + apk add tmux bash --version + tmux -V ./.github/scripts/test.bash ./catppuccin.tmux From 4ca26b774bc2e945fce4ccb909245dffeea7a9bf Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sat, 18 May 2024 17:47:12 +0000 Subject: [PATCH 39/72] docs/cleanup (#219) * doc(README): use default values as example * doc(README): remove unused options * doc(README): remove dead link * doc(README): fix theme links --- README.md | 74 ++++++++++++++++++++++--------------------------------- 1 file changed, 30 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index e8d1f26..02eb8fa 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ 1. [CPU module](#CPU-module) 1. [Weather modules](#weather-modules) 1. [Load module](#load-module) - 1. [Uptime module](#uptime-module) 1. [Create a custom module](#create-a-custom-module) 1. [Configuration Examples](#configuration-examples) 1. [Config 1](#config-1) @@ -40,10 +39,10 @@ ## Themes -- 🌻 [Latte](./catppuccin-latte.tmuxtheme) -- 🪴 [Frappé](./catppuccin-frappe.tmuxtheme) -- 🌺 [Macchiato](./catppuccin-macchiato.tmuxtheme) -- 🌿 [Mocha](./catppuccin-mocha.tmuxtheme) +- 🌻 [Latte](./themes/catppuccin_latte.tmuxtheme) +- 🪴 [Frappé](./themes/catppuccin_frappe.tmuxtheme) +- 🌺 [Macchiato](./themes/catppuccin_macchiato.tmuxtheme) +- 🌿 [Mocha](./themes/catppuccin_mocha.tmuxtheme) ## Installation @@ -64,7 +63,7 @@ set -g @plugin 'tmux-plugins/tpm' 3. (Optional) Set your preferred flavor, it defaults to `"mocha"`: ```bash -set -g @catppuccin_flavour 'latte' # or frappe, macchiato, mocha +set -g @catppuccin_flavour 'mocha' # latte,frappe, macchiato or mocha ``` ### Manual @@ -120,7 +119,7 @@ Values: #### Enable window status: ```sh -set -g @catppuccin_window_status_enable "yes" +set -g @catppuccin_window_status_enable "no" ``` Values: - yes - this will enable the window status part @@ -136,13 +135,13 @@ Values: #### Override windows status icons ```sh -set -g @catppuccin_icon_window_last "󰖰 " -set -g @catppuccin_icon_window_current "󰖯 " -set -g @catppuccin_icon_window_zoom "󰁌 " -set -g @catppuccin_icon_window_mark "󰃀 " -set -g @catppuccin_icon_window_silent "󰂛 " -set -g @catppuccin_icon_window_activity "󱅫 " -set -g @catppuccin_icon_window_bell "󰂞 " +set -g @catppuccin_icon_window_last "󰖰" +set -g @catppuccin_icon_window_current "󰖯" +set -g @catppuccin_icon_window_zoom "󰁌" +set -g @catppuccin_icon_window_mark "󰃀" +set -g @catppuccin_icon_window_silent "󰂛" +set -g @catppuccin_icon_window_activity "󱅫" +set -g @catppuccin_icon_window_bell "󰂞" ``` ### Window default @@ -158,8 +157,8 @@ Values: #### Override the window default colors: ```sh -set -g @catppuccin_window_default_color "color" # text color -set -g @catppuccin_window_default_background "color" +set -g @catppuccin_window_default_color "#{thm_blue}" # text color +set -g @catppuccin_window_default_background "#{thm_gray}" ``` Values: @@ -183,8 +182,8 @@ Values: #### Override the window current colors: ```sh -set -g @catppuccin_window_current_color "color" # text color -set -g @catppuccin_window_current_background "color" +set -g @catppuccin_window_current_color "#{thm_orange}" # text color +set -g @catppuccin_window_current_background "#{thm_bg}" ``` Values: @@ -195,37 +194,25 @@ Values: set -g @catppuccin_window_current_text "#{b:pane_current_path}" # use "#W" for application instead of directory ``` -#### Set the current directory format -```sh -set -g @catppuccin_window_current_format_directory_text "#{b:pane_current_path}" -``` -Use this to override the way the current directory is displayed. - -#### Set the directory format -```sh -set -g @catppuccin_window_format_directory_text "#{b:pane_current_path}" -``` -Use this to override the way the directory is displayed. - ### Pane #### Set the pane border style: ```sh -set -g @catppuccin_pane_border_style "fg=#{thm_blue}" # Use a value compatible with the standard tmux 'pane-border-style' +set -g @catppuccin_pane_border_style "fg=#{thm_gray}" # Use a value compatible with the standard tmux 'pane-border-style' ``` #### Set the pane active border style: ```sh -set -g @catppuccin_pane_active_border_style "fg=#{thm_red}" # Use a value compatible with the standard tmux 'pane-border-active-style' +set -g @catppuccin_pane_active_border_style "fg=#{thm_orange}" # Use a value compatible with the standard tmux 'pane-border-active-style' ``` ### Status #### Set the default status bar visibility ```sh -set -g @catppuccin_status_default "off" # defaults to "on" +set -g @catppuccin_status_default "on" ``` @@ -236,7 +223,7 @@ set -g @catppuccin_status_background "theme" This will overwrite the status bar background: - "theme" will use the color from the selected theme - "default" will make the status bar transparent -- use hex color codes for other colors or a theme color (`#{theme_}`) +- use hex color codes for other colors or a theme color (`#{thm_}`) Note: you need to restart tmux for this to take effect: ```sh @@ -283,19 +270,18 @@ Values: ### Pane ```sh -tmux_orange="#fab387" -set -g @catppuccin_pane_status_enabled "yes" -set -g @catppuccin_pane_border_status "top" -set -g @catppuccin_pane_left_separator "" -set -g @catppuccin_pane_right_separator "" -set -g @catppuccin_pane_middle_separator "█ " +set -g @catppuccin_pane_status_enabled "no" +set -g @catppuccin_pane_border_status "off" # See `pane-border-status` +set -g @catppuccin_pane_left_separator "█" +set -g @catppuccin_pane_right_separator "█" +set -g @catppuccin_pane_middle_separator "█" set -g @catppuccin_pane_number_position "left" set -g @catppuccin_pane_default_fill "number" set -g @catppuccin_pane_default_text "#{b:pane_current_path}" -set -g @catppuccin_pane_border_style "fg=$tmux_orange" -set -g @catppuccin_pane_active_border_style "fg=$tmux_orange" -set -g @catppuccin_pane_color "$tmux_orange" -set -g @catppuccin_pane_background_color "$tmux_orange" +set -g @catppuccin_pane_border_style "fg=#{thm_orange}" +set -g @catppuccin_pane_active_border_style "fg=#{thm_orange}" +set -g @catppuccin_pane_color "#{thm_orange}" +set -g @catppuccin_pane_background_color "#{thm_orange}" ``` #### Set the module list From 9da7bb5e2e4caf57c1845f79b33e6f410dfdc548 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Thu, 23 May 2024 17:39:08 +0000 Subject: [PATCH 40/72] build: bump whiskers to 2.1.1 (#222) whiskers 2.1.1 no longer eats trailing newlines --- tmux.tera | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tmux.tera b/tmux.tera index da095ed..7435b79 100644 --- a/tmux.tera +++ b/tmux.tera @@ -1,6 +1,6 @@ --- whiskers: - version: "2.1.0" + version: "2.1.1" matrix: - flavor filename: "themes/catppuccin_{{flavor.identifier}}.tmuxtheme" @@ -23,4 +23,3 @@ thm_yellow="#{{ palette.yellow.hex | lower }}" thm_blue="#{{ palette.blue.hex | lower }}" thm_orange="#{{ palette.peach.hex | lower }}" thm_black4="#{{ palette.surface2.hex | lower }}" -{% raw %}{% endraw %}{# Needs to end with a newline #} From e7cd05facc22c18fbab3f718d8ecd6494538fe38 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jun 2024 21:52:21 +0100 Subject: [PATCH 41/72] chore: Configure Renovate (#231) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..a222000 --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "local>catppuccin/renovate-config" + ] +} From 893917360d667645908753b982edd1624dc57cd6 Mon Sep 17 00:00:00 2001 From: Daniel Nocito Date: Tue, 2 Jul 2024 12:13:24 -0300 Subject: [PATCH 42/72] Add support to tmux-pomodoro-plus plugin in status bar (#241) * Add support to tmux-pomodoro-plus plugin in status bar * Update README.md with setup information for the pomodoro module --- README.md | 21 +++++++++++++++++++++ status/pomodoro_plus.sh | 14 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 status/pomodoro_plus.sh diff --git a/README.md b/README.md index 02eb8fa..3228064 100644 --- a/README.md +++ b/README.md @@ -456,6 +456,27 @@ To customize the gitmux module, you can follow the instrucctions in the [gitmux set -g @catppuccin_gitmux_text "#(gitmux -cfg $HOME/.gitmux.conf \"#{pane_current_path}\")" ``` +### Pomodoro module + +#### Requirements +This module depends on [tmux-pomodoro-plus](https://github.com/olimorris/tmux-pomodoro-plus/tree/main). + +#### Install +The preferred way to install tmux-pomodoro-plus is using [TPM](https://github.com/tmux-plugins/tpm). + +#### Configure +Load tmux-pomodoro-plus after you load catppuccin. +```sh +set -g @plugin 'catppuccin/tmux' +... +set -g @plugin 'olimorris/tmux-pomodoro-plus' +``` + +Add the pomodoro module to the status modules list. +```sh +set -g @catppuccin_status_modules_right "... pomodoro_plus ..." +``` + ## Create a custom module diff --git a/status/pomodoro_plus.sh b/status/pomodoro_plus.sh new file mode 100644 index 0000000..a9da264 --- /dev/null +++ b/status/pomodoro_plus.sh @@ -0,0 +1,14 @@ +# Requires https://github.com/olimorris/tmux-pomodoro-plus + +show_pomodoro_plus() { + local index icon color text module + + index=$1 + icon="$( get_tmux_option "@catppuccin__icon" "" )" + color="$( get_tmux_option "@catppuccin__color" "$thm_orange" )" + text="$( get_tmux_option "@catppuccin__text" "#{pomodoro_status}" )" + + module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" +} From ff6dacb12f3291abe116bd63430a2b5842a1e65c Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Fri, 12 Jul 2024 07:04:07 +0000 Subject: [PATCH 43/72] feat: warning when trying to load a missing module (#244) print/echo a warning when a `catppuccin_status_modules_right/left` is trying to load a none existing module. This does only work when reloading (`tmux source ~/.tmux.conf` / `tmux source ~/.config/tmux/tmux.conf`) --- utils/module_utils.sh | 5 ++++- utils/tmux_utils.sh | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/utils/module_utils.sh b/utils/module_utils.sh index 96cbd87..e9d77f9 100644 --- a/utils/module_utils.sh +++ b/utils/module_utils.sh @@ -29,9 +29,12 @@ load_modules() { source "$module_path" loaded_modules="$loaded_modules$( "show_$module_name" "$module_index" )" module_index+=1 - break + continue 2 fi done + tmux_echo "catppuccin warning: module $module_name not found" + + done echo "$loaded_modules" diff --git a/utils/tmux_utils.sh b/utils/tmux_utils.sh index 703afad..27da09a 100644 --- a/utils/tmux_utils.sh +++ b/utils/tmux_utils.sh @@ -1,5 +1,10 @@ #!/bin/sh +tmux_echo() { + local message="$1" + tmux run-shell "echo '$message'" +} + get_tmux_option() { local option value default option="$1" From 33c4fd62df96b39cec2b2c08bc341c88d9392761 Mon Sep 17 00:00:00 2001 From: Kilian Mio <86004375+Mikilio@users.noreply.github.com> Date: Fri, 12 Jul 2024 18:33:14 +0200 Subject: [PATCH 44/72] fix: better default for application.sh (#246) --- status/application.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/application.sh b/status/application.sh index 331dee5..fa2bbbc 100644 --- a/status/application.sh +++ b/status/application.sh @@ -4,7 +4,7 @@ show_application() { index=$1 icon=$(get_tmux_option "@catppuccin_application_icon" "") color=$(get_tmux_option "@catppuccin_application_color" "$thm_pink") - text=$(get_tmux_option "@catppuccin_application_text" "#W") + text=$(get_tmux_option "@catppuccin_application_text" "#{pane_current_command}") module=$(build_status_module "$index" "$icon" "$color" "$text") From 49972658aaa7c7b3b2f446a59442f3013ec92f61 Mon Sep 17 00:00:00 2001 From: Chet Luther Date: Mon, 15 Jul 2024 11:04:49 -0400 Subject: [PATCH 45/72] feat(menu): add menu style options (#247) add menu style options to allow `#{thm_x}` styling of menus. - @catppuccin_menu_style (`menu-style`) - @catppuccin_menu_selected_style (`menu-selected-style`) - @catppuccin_menu_border_style (`menu-border-style`) --- README.md | 19 +++++++++++++++++++ catppuccin.tmux | 9 +++++++++ 2 files changed, 28 insertions(+) diff --git a/README.md b/README.md index 3228064..ccc0ce2 100644 --- a/README.md +++ b/README.md @@ -208,6 +208,25 @@ set -g @catppuccin_pane_border_style "fg=#{thm_gray}" # Use a value compatible w set -g @catppuccin_pane_active_border_style "fg=#{thm_orange}" # Use a value compatible with the standard tmux 'pane-border-active-style' ``` +### Menu + +#### Set the menu style: + +```sh +set -g @catppuccin_menu_style "default" # Use a value compatible with the standard tmux `menu-style` +``` + +#### Set the menu selected style: + +```sh +set -g @catppuccin_menu_selected_style "fg=#{thm_gray},bg=#{thm_yellow}" # Use a value compatible with the standard tmux `menu-selected-style` +``` + +### Set the menu border style: + +```sh +set -g @catppuccin_menu_border_style "default" # Use a value compatible with the standard tmux `menu-border-style` +``` ### Status #### Set the default status bar visibility diff --git a/catppuccin.tmux b/catppuccin.tmux index 351009c..5771b8e 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -85,6 +85,15 @@ main() { set message-style "fg=${thm_cyan},bg=${message_background},align=centre" set message-command-style "fg=${thm_cyan},bg=${message_background},align=centre" + # menu + local menu_style menu_selected_style menu_border_style + menu_style=$(get_interpolated_tmux_option "@catppuccin_menu_style" "default") + menu_selected_style=$(get_interpolated_tmux_option "@catppuccin_menu_selected_style" "fg=${thm_gray},bg=${thm_yellow}") + menu_border_style=$(get_interpolated_tmux_option "@catppuccin_menu_border_style" "default") + set menu-style "$menu_style" + set menu-selected-style "$menu_selected_style" + set menu-border-style "$menu_border_style" + # panes local pane_border_status pane_border_style \ pane_active_border_style pane_left_separator pane_middle_separator \ From 598e9e9193b1a9bca856ccc9aab86395a562ac46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Arjona=20Alonso?= Date: Mon, 15 Jul 2024 17:07:52 +0200 Subject: [PATCH 46/72] Add support to kube-tmux in status bar (#249) * Add support to kube-tmux in status bar --------- Co-authored-by: vdbe <44153531+vdbe@users.noreply.github.com> --- README.md | 27 +++++++++++++++++++++++++++ status/kube.sh | 17 +++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 status/kube.sh diff --git a/README.md b/README.md index ccc0ce2..54ef112 100644 --- a/README.md +++ b/README.md @@ -497,6 +497,33 @@ set -g @catppuccin_status_modules_right "... pomodoro_plus ..." ``` +### Kube module + +#### Requirements +This module depends on [kube-tmux](https://github.com/jonmosco/kube-tmux). + +#### Install +The preferred way to install kube-tmux is using [TPM](https://github.com/tmux-plugins/tpm). + +#### Configure +```sh +set -g @plugin 'catppuccin/tmux' +... +set -g @plugin 'jonmosco/kube-tmux' +``` + +Add the tmux module to the status modules list. +```sh +set -g @catppuccin_status_modules_right "... kube ..." +``` + +Optionally override the kube-tmux colors +```sh +set -g @catppuccin_kube_context_color "#{thm_red}" +set -g @catppuccin_kube_namespace_color "#{thm_cyan}" +``` + + ## Create a custom module It is possible to add a new custom module or overwrite any of the existing modules. diff --git a/status/kube.sh b/status/kube.sh new file mode 100644 index 0000000..4e3083c --- /dev/null +++ b/status/kube.sh @@ -0,0 +1,17 @@ +# Requires https://github.com/jonmosco/kube-tmux + +show_kube() { + local index icon color text context_color namespace_color symbol_enabled module + + index=$1 + icon=$(get_tmux_option "@catppuccin_kube_icon" "󱃾") + color=$(get_tmux_option "@catppuccin_kube_color" "$thm_blue") + context_color=$(get_tmux_option "@catppuccin_kube_context_color" "#{thm_red}") + namespace_color=$(get_tmux_option "@catppuccin_kube_namespace_color" "#{thm_cyan}") + symbol_enabled=${KUBE_TMUX_SYMBOL_ENABLE:-false} + text=$(get_tmux_option "@catppuccin_kube_text" "#(KUBE_TMUX_SYMBOL_ENABLE=$symbol_enabled ${TMUX_PLUGIN_MANAGER_PATH}kube-tmux/kube.tmux 250 '$context_color' '$namespace_color')") + + module=$( build_status_module "$index" "$icon" "$color" "$text" ) + + echo "$module" +} From 735363e7a02b347e5c48977faae7e308b51ec9c5 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 15 Jul 2024 22:35:02 +0000 Subject: [PATCH 47/72] fix: status module trailing space transparancy (#250) --- builder/module_builder.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/builder/module_builder.sh b/builder/module_builder.sh index cfb9097..ff1408f 100644 --- a/builder/module_builder.sh +++ b/builder/module_builder.sh @@ -7,18 +7,18 @@ build_status_module() { local text="$4" if [ "$status_fill" = "icon" ]; then + local bg local show_icon="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$icon " - local show_text="#[fg=$thm_fg,bg=$thm_gray] $text" 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" - + bg="$thm_gray" else - local show_left_separator="#[fg=$color,bg=default,nobold,nounderscore,noitalics]$status_left_separator" - local show_right_separator="#[fg=$thm_gray,bg=default,nobold,nounderscore,noitalics]$status_right_separator" + bg="default" fi + local show_text="#[fg=$thm_fg,bg=$bg] $text" + local show_left_separator="#[fg=$color,bg=$bg,nobold,nounderscore,noitalics]$status_left_separator" + local show_right_separator="#[fg=$thm_gray,bg=$bg,nobold,nounderscore,noitalics]$status_right_separator" fi if [ "$status_fill" = "all" ]; then From 39dea782062083a48dea8cecf3d71dbd0f12a004 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:20:44 +0000 Subject: [PATCH 48/72] fixup! fix: status module trailing space transparancy (#250) (#253) don't change `show_text` --- builder/module_builder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/module_builder.sh b/builder/module_builder.sh index ff1408f..ad9e46c 100644 --- a/builder/module_builder.sh +++ b/builder/module_builder.sh @@ -9,6 +9,7 @@ build_status_module() { if [ "$status_fill" = "icon" ]; then local bg local show_icon="#[fg=$thm_bg,bg=$color,nobold,nounderscore,noitalics]$icon " + local show_text="#[fg=$thm_fg,bg=$thm_gray] $text" if [ "$status_connect_separator" = "yes" ]; then bg="$thm_gray" @@ -16,7 +17,6 @@ build_status_module() { bg="default" fi - local show_text="#[fg=$thm_fg,bg=$bg] $text" local show_left_separator="#[fg=$color,bg=$bg,nobold,nounderscore,noitalics]$status_left_separator" local show_right_separator="#[fg=$thm_gray,bg=$bg,nobold,nounderscore,noitalics]$status_right_separator" fi From 004467850b44983c7b033cf5e41c0db75d03742b Mon Sep 17 00:00:00 2001 From: given Date: Thu, 18 Jul 2024 09:25:51 -0400 Subject: [PATCH 49/72] Update docs to explain color/background swap (#251) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 54ef112..5375759 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,7 @@ Values: set -g @catppuccin_window_current_color "#{thm_orange}" # text color set -g @catppuccin_window_current_background "#{thm_bg}" ``` +Note that color and background fields are swapped when `@catppuccin_window_current_fill` is set to "all". Values: - color - a theme color (`#{thm_}`) or a hexadecimal color value From 408c02ccf44d0a59a7a63ce2b65c5c29982c5c0e Mon Sep 17 00:00:00 2001 From: Bryan Hoang Date: Fri, 19 Jul 2024 05:50:21 -0400 Subject: [PATCH 50/72] fix(uptime): filter out singular "user" string in sed expression (#255) Previously, on machines where the logged-in user count is 1, the `sed` expression to filter out "... X users, ..." doesn't filter out "... X user, ...", leading to something like ``` 1h 05, 1 user, load average: 0.05, 0.72, 1.62m ``` being displayed in the module. When the user count is greater than 1 (e.g., after `ssh localhost`), the `uptime` module displays ``` 1h 05m ``` as expected. The Stack Overflow answer the `sed` expression is based on [^1][^2] doesn't seem to consider the case when the user count is 1. With this patch, the `uptime` module display correctly when the user count is 1. [^1]: https://stackoverflow.com/a/28353785 [^2]: https://github.com/catppuccin/tmux/pull/163 --- status/uptime.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/uptime.sh b/status/uptime.sh index c112abf..10999de 100644 --- a/status/uptime.sh +++ b/status/uptime.sh @@ -4,7 +4,7 @@ show_uptime() { index=$1 icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" - text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* users.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" + text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* user.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" module=$(build_status_module "$index" "$icon" "$color" "$text") From 5fbacdf3559cf4496eef02aead087b3bb715e570 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Sun, 4 Aug 2024 14:16:57 +0000 Subject: [PATCH 51/72] feat: releases (#260) * feat: bootstrap release please * docs: add instruction to install a tag/release via tpm * chore: add `tmux.conf` placeholder for bug template * docs: add CONTRIBUTING.md Copied from https://github.com/catppuccin/nix/blob/3fdc011242c684c48ed96d91e77c74e760aedc3e/CONTRIBUTING.md * refactor: change vlatest to latest * docs: remove merge instructions * docs: use full version as tag msg --- .github/ISSUE_TEMPLATE/bug.yml | 7 +++++ .github/release-please-config.json | 13 ++++++++ .github/release-please-manifest.json | 3 ++ .github/workflows/release.yml | 45 ++++++++++++++++++++++++++++ CONTRIBUTING.md | 43 ++++++++++++++++++++++++++ README.md | 3 +- 6 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 .github/release-please-config.json create mode 100644 .github/release-please-manifest.json create mode 100644 .github/workflows/release.yml create mode 100644 CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index b7407ca..6f312e7 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -20,6 +20,13 @@ body: attributes: label: Paste your configuration. description: Provide us with the contents of your `.tmux.conf` file. + placeholder: | + ```sh + set -g @plugin 'catppuccin/tmux' + set -g @plugin 'tmux-plugins/tpm' + # ... + run ~/.config/tmux/tpm/tpm + ``` validations: required: true - type: textarea diff --git a/.github/release-please-config.json b/.github/release-please-config.json new file mode 100644 index 0000000..235be63 --- /dev/null +++ b/.github/release-please-config.json @@ -0,0 +1,13 @@ +{ + "last-release-sha": "408c02ccf44d0a59a7a63ce2b65c5c29982c5c0e", + "packages": { + ".": { + "release-type": "simple", + "changelog-path": "CHANGELOG.md", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "draft": true + } + }, + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +} diff --git a/.github/release-please-manifest.json b/.github/release-please-manifest.json new file mode 100644 index 0000000..b985ff6 --- /dev/null +++ b/.github/release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.1" +} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f19b845 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +name: release-please + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: googleapis/release-please-action@v4 + id: release + with: + token: ${{ secrets.GITHUB_TOKEN }} + config-file: .github/release-please-config.json + manifest-file: .github/release-please-manifest.json + - uses: actions/checkout@v4 + - name: tag major and minor versions + if: ${{ steps.release.outputs.release_created }} + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + + git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/googleapis/release-please-action.git" + + git tag -d latest || true + git tag -d v${{ steps.release.outputs.major }} || true + git tag -d v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true + + git push origin :latest || true + git push origin :v${{ steps.release.outputs.major }} || true + git push origin :v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true + + git tag -a latest -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}" + git tag -a v${{ steps.release.outputs.major }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}" + git tag -a v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}" + + git push origin latest + git push origin v${{ steps.release.outputs.major }} + git push origin v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..86dd981 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,43 @@ +# Contributing + +## Adding a module + +Follow the instructions from [custom](/custom), place the module in the appropriate +directory and document the module in `README.md`. + +## Commit messages + +This repository uses [Conventional Commits](https://conventionalcommits.org). +Commit headers should be lowercase. Most commits should include a body that briefly +describes the motivation and content of the commit. + +### Commit types + +- `fix`: A bug fix that doesn't modify the public API +- `feat`: A code change that modifies the public API +- `refactor`: A code change that doesn't change behavior +- `style`: A style fix or change +- `docs`: Any change to documentation +- `ci`: Any change to CI files +- `revert`: A revert commit. The message should describe the reasoning and the + commit should include the `Refs:` footer with the short hashes of the commits + being reverted. +- `chore`: catch-all type + +### Commit scopes + +Available commit scopes are module names, `status`, `pane`, and +`window`. If none of these apply, omit the scope. + +### Breaking changes + +All breaking changes should be documented in the commit footer in the format +described by Conventional Commits. Use the `!` syntax in order to distinguish +breaking commits in the log, but include the footer to provide a better description +for the changelog generator. + +``` +feat(bar)!: foo the bars + +BREAKING CHANGE: bars are now foo'ed +``` diff --git a/README.md b/README.md index 5375759..abe5b69 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,8 @@ If you do not have a patched font installed, you can override or remove any icon 2. Add the Catppuccin plugin: ```bash -set -g @plugin 'catppuccin/tmux' +set -g @plugin 'catppuccin/tmux#latest' # See https://github.com/catppuccin/tmux/tags for additional tags +# set -g @plugin 'catppuccin/tmux' # main branch # ...alongside set -g @plugin 'tmux-plugins/tpm' ``` From fc80a6d0a32476751f112497add5fc19a12ce3d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 4 Aug 2024 14:18:14 +0000 Subject: [PATCH 52/72] chore(main): release 0.1.0 (#268) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/.github/release-please-manifest.json b/.github/release-please-manifest.json index b985ff6..466df71 100644 --- a/.github/release-please-manifest.json +++ b/.github/release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.1" + ".": "0.1.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..34bd71e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +## [0.1.0](https://github.com/catppuccin/tmux/compare/v0.0.1...v0.1.0) (2024-08-04) + + +### Features + +* releases ([#260](https://github.com/catppuccin/tmux/issues/260)) ([5fbacdf](https://github.com/catppuccin/tmux/commit/5fbacdf3559cf4496eef02aead087b3bb715e570)) From 90dcb8ada9e92aefa1e42942f5bc52ce52282d9a Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:01:13 +0000 Subject: [PATCH 53/72] fix(ci): disable release-please draft releases (#271) When a release is a draft release-please can't find it, see https://github.com/googleapis/release-please/issues/1650 for more info. --- .github/release-please-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/release-please-config.json b/.github/release-please-config.json index 235be63..47fe129 100644 --- a/.github/release-please-config.json +++ b/.github/release-please-config.json @@ -6,7 +6,7 @@ "changelog-path": "CHANGELOG.md", "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": false, - "draft": true + "draft": false } }, "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" From 51dde6e8d4d3d8da97d915b01594a08aa4ac0cca Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:04:28 +0000 Subject: [PATCH 54/72] fix(pomodoro_plus): option names (#273) --- status/pomodoro_plus.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/status/pomodoro_plus.sh b/status/pomodoro_plus.sh index a9da264..a155cd7 100644 --- a/status/pomodoro_plus.sh +++ b/status/pomodoro_plus.sh @@ -4,9 +4,9 @@ show_pomodoro_plus() { local index icon color text module index=$1 - icon="$( get_tmux_option "@catppuccin__icon" "" )" - color="$( get_tmux_option "@catppuccin__color" "$thm_orange" )" - text="$( get_tmux_option "@catppuccin__text" "#{pomodoro_status}" )" + icon="$( get_tmux_option "@catppuccin_pomodoro_plus_icon" "" )" + color="$( get_tmux_option "@catppuccin_pomodoro_plus_color" "$thm_orange" )" + text="$( get_tmux_option "@catppuccin_pomodoro_plus_text" "#{pomodoro_status}" )" module=$( build_status_module "$index" "$icon" "$color" "$text" ) From 3c6f6f282b3bb17554dc2b4b80760b6507acfd65 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 5 Aug 2024 10:09:45 +0000 Subject: [PATCH 55/72] perf: batch tmux show-options (#240) * feat: batch tmux show options * dont check for duplicates * fix: status modules * batch and cache build_window_icon * perf: batch new options * chore: tmux_batch_setup_module -> tmux_batch_setup_status_module --- builder/window_builder.sh | 73 ++++++++++++++++--------- catppuccin.tmux | 94 ++++++++++++++++++++++---------- pane/pane_default_format.sh | 19 +++++-- status/application.sh | 9 ++-- status/battery.sh | 38 +++++++------ status/clima.sh | 9 ++-- status/cpu.sh | 18 ++++--- status/date_time.sh | 9 ++-- status/directory.sh | 9 ++-- status/gitmux.sh | 9 ++-- status/host.sh | 9 ++-- status/kube.sh | 23 +++++--- status/load.sh | 9 ++-- status/pomodoro_plus.sh | 9 ++-- status/session.sh | 9 ++-- status/uptime.sh | 9 ++-- status/user.sh | 9 ++-- status/weather.sh | 9 ++-- utils/tmux_utils.sh | 96 +++++++++++++++++++++++++++++++-- window/window_current_format.sh | 19 +++++-- window/window_default_format.sh | 19 +++++-- 21 files changed, 371 insertions(+), 136 deletions(-) diff --git a/builder/window_builder.sh b/builder/window_builder.sh index 186b169..735b99c 100644 --- a/builder/window_builder.sh +++ b/builder/window_builder.sh @@ -1,5 +1,8 @@ #!/bin/sh + +show_window_status= + build_window_format() { local number="$1" local color="$2" @@ -93,34 +96,56 @@ build_window_format() { } build_window_icon() { - local window_status_icon_enable custom_icon_window_last \ - custom_icon_window_zoom custom_icon_window_mark custom_icon_window_mark \ - custom_icon_window_silent custom_icon_window_activity custom_icon_window_bell + # Only update `show_window_status` if it's not empty + # this module is ran twice once for current and once for default + # meaning 2 calls to build_window_icon wich will/should both return the same + # result. + if [ -z "$show_window_status" ]; then + local window_status_icon_enable custom_icon_window_last \ + custom_icon_window_zoom custom_icon_window_mark custom_icon_window_mark \ + custom_icon_window_silent custom_icon_window_activity custom_icon_window_bell - window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") - custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") - custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") - custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") - custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") - custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") - custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󱅫") - custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞") + # shellcheck disable=SC2034 + local tmux_batch_options_commands=() + # shellcheck disable=SC2034 + local tmux_batch_options=() - if [ "$window_status_icon_enable" = "yes" ]; then - # #!~[*-]MZ - local show_window_status="" - show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" - show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" - show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" - show_window_status+="#{?window_active, ${custom_icon_window_current},}" - show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" - show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" - show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" + add_tmux_batch_option "@catppuccin_window_status_icon_enable" + add_tmux_batch_option "@catppuccin_icon_window_last" + add_tmux_batch_option "@catppuccin_icon_window_current" + add_tmux_batch_option "@catppuccin_icon_window_zoom" + add_tmux_batch_option "@catppuccin_icon_window_mark" + add_tmux_batch_option "@catppuccin_icon_window_silent" + add_tmux_batch_option "@catppuccin_icon_window_activity" + add_tmux_batch_option "@catppuccin_icon_window_bell" - fi + run_tmux_batch_commands - if [ "$window_status_icon_enable" = "no" ]; then - local show_window_status=" #F" + window_status_icon_enable=$(get_tmux_batch_option "@catppuccin_window_status_icon_enable" "yes") + custom_icon_window_last=$(get_tmux_batch_option "@catppuccin_icon_window_last" "󰖰") + custom_icon_window_current=$(get_tmux_batch_option "@catppuccin_icon_window_current" "󰖯") + custom_icon_window_zoom=$(get_tmux_batch_option "@catppuccin_icon_window_zoom" "󰁌") + custom_icon_window_mark=$(get_tmux_batch_option "@catppuccin_icon_window_mark" "󰃀") + custom_icon_window_silent=$(get_tmux_batch_option "@catppuccin_icon_window_silent" "󰂛") + custom_icon_window_activity=$(get_tmux_batch_option "@catppuccin_icon_window_activity" "󱅫") + custom_icon_window_bell=$(get_tmux_batch_option "@catppuccin_icon_window_bell" "󰂞") + + if [ "$window_status_icon_enable" = "yes" ]; then + # #!~[*-]MZ + show_window_status="" + show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" + show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" + show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" + show_window_status+="#{?window_active, ${custom_icon_window_current},}" + show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" + show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" + show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" + + fi + + if [ "$window_status_icon_enable" = "no" ]; then + show_window_status=" #F" + fi fi echo "$show_window_status" diff --git a/catppuccin.tmux b/catppuccin.tmux index 5771b8e..cce7c73 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -21,9 +21,19 @@ main() { # Aggregate all commands in one array local tmux_commands=() + # Aggregate all tmux option for tmux_batch_option + local tmux_batch_options_commands=() + local tmux_batch_options=() + + # Batch options for loading the colorscheme and everyting before + add_tmux_batch_option "@catppuccin_custom_plugin_dir" + add_tmux_batch_option "@catppuccin_flavour" + + run_tmux_batch_commands + # module directories local custom_path modules_custom_path modules_status_path modules_window_path modules_pane_path - custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" + custom_path="$(get_tmux_batch_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" modules_custom_path=$custom_path modules_status_path=$PLUGIN_DIR/status modules_window_path=$PLUGIN_DIR/window @@ -34,7 +44,7 @@ main() { local color_interpolation=() local color_values=() local temp - theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" + theme="$(get_tmux_batch_option "@catppuccin_flavour" "mocha")" # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. # https://github.com/dylanaraps/pure-sh-bible#parsing-a-keyval-file @@ -55,16 +65,44 @@ main() { color_values+=("${temp}") done <"${PLUGIN_DIR}/themes/catppuccin_${theme}.tmuxtheme" + # Batch options for `./catppuccin.tmux` + add_tmux_batch_option "@catppuccin_status_default" + add_tmux_batch_option "@catppuccin_status_justify" + add_tmux_batch_option "@catppuccin_status_background" + add_tmux_batch_option "@catppuccin_menu_style" + add_tmux_batch_option "@catppuccin_menu_selected_style" + add_tmux_batch_option "@catppuccin_menu_border_style" + add_tmux_batch_option "@catppuccin_pane_status_enabled" + add_tmux_batch_option "@catppuccin_pane_border_status" + add_tmux_batch_option "@catppuccin_pane_left_separator" + add_tmux_batch_option "@catppuccin_pane_middle_separator" + add_tmux_batch_option "@catppuccin_pane_right_separator" + add_tmux_batch_option "@catppuccin_pane_number_position" + add_tmux_batch_option "@catppuccin_window_separator" + add_tmux_batch_option "@catppuccin_window_left_separator" + add_tmux_batch_option "@catppuccin_window_right_separator" + add_tmux_batch_option "@catppuccin_window_middle_separator" + add_tmux_batch_option "@catppuccin_window_number_position" + add_tmux_batch_option "@catppuccin_window_status_enable" + add_tmux_batch_option "@catppuccin_status_left_separator" + add_tmux_batch_option "@catppuccin_status_right_separator" + add_tmux_batch_option "@catppuccin_status_connect_separator" + add_tmux_batch_option "@catppuccin_status_fill" + add_tmux_batch_option "@catppuccin_status_modules_left" + add_tmux_batch_option "@catppuccin_status_modules_right" + + run_tmux_batch_commands + # status general local status_default status_justify status_background message_background - status_default=$(get_tmux_option "@catppuccin_status_default" "on") + status_default=$(get_tmux_batch_option "@catppuccin_status_default" "on") # shellcheck disable=SC2121 set status "$status_default" - status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") + status_justify=$(get_tmux_batch_option "@catppuccin_status_justify" "left") set status-justify "$status_justify" - status_background=$(get_tmux_option "@catppuccin_status_background" "theme") + status_background=$(get_tmux_batch_option "@catppuccin_status_background" "theme") if [ "${status_background}" = "theme" ]; then set status-bg "${thm_bg}" message_background="${thm_gray}" @@ -87,9 +125,9 @@ main() { # menu local menu_style menu_selected_style menu_border_style - menu_style=$(get_interpolated_tmux_option "@catppuccin_menu_style" "default") - menu_selected_style=$(get_interpolated_tmux_option "@catppuccin_menu_selected_style" "fg=${thm_gray},bg=${thm_yellow}") - menu_border_style=$(get_interpolated_tmux_option "@catppuccin_menu_border_style" "default") + menu_style=$(get_interpolated_tmux_batch_option "@catppuccin_menu_style" "default") + menu_selected_style=$(get_interpolated_tmux_batch_option "@catppuccin_menu_selected_style" "fg=${thm_gray},bg=${thm_yellow}") + menu_border_style=$(get_interpolated_tmux_batch_option "@catppuccin_menu_border_style" "default") set menu-style "$menu_style" set menu-selected-style "$menu_selected_style" set menu-border-style "$menu_border_style" @@ -98,19 +136,19 @@ main() { local pane_border_status pane_border_style \ pane_active_border_style pane_left_separator pane_middle_separator \ pane_right_separator pane_number_position pane_format - pane_status_enable=$(get_tmux_option "@catppuccin_pane_status_enabled" "no") # yes - pane_border_status=$(get_tmux_option "@catppuccin_pane_border_status" "off") # bottom + pane_status_enable=$(get_tmux_batch_option "@catppuccin_pane_status_enabled" "no") # yes + pane_border_status=$(get_tmux_batch_option "@catppuccin_pane_border_status" "off") # bottom pane_border_style=$( - get_interpolated_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}" + get_interpolated_tmux_batch_option "@catppuccin_pane_border_style" "fg=${thm_gray}" ) pane_active_border_style=$( - get_interpolated_tmux_option "@catppuccin_pane_active_border_style" \ + get_interpolated_tmux_batch_option "@catppuccin_pane_active_border_style" \ "#{?pane_in_mode,fg=${thm_yellow},#{?pane_synchronized,fg=${thm_magenta},fg=${thm_orange}}}" ) - pane_left_separator=$(get_tmux_option "@catppuccin_pane_left_separator" "█") - pane_middle_separator=$(get_tmux_option "@catppuccin_pane_middle_separator" "█") - pane_right_separator=$(get_tmux_option "@catppuccin_pane_right_separator" "█") - pane_number_position=$(get_tmux_option "@catppuccin_pane_number_position" "left") # right, left + pane_left_separator=$(get_tmux_batch_option "@catppuccin_pane_left_separator" "█") + pane_middle_separator=$(get_tmux_batch_option "@catppuccin_pane_middle_separator" "█") + pane_right_separator=$(get_tmux_batch_option "@catppuccin_pane_right_separator" "█") + pane_number_position=$(get_tmux_batch_option "@catppuccin_pane_number_position" "left") # right, left pane_format=$(load_modules "pane_default_format" "$modules_custom_path" "$modules_pane_path") setw pane-border-status "$pane_border_status" @@ -123,14 +161,14 @@ main() { window_middle_separator window_number_position window_status_enable \ window_format window_current_format - window_status_separator=$(get_interpolated_tmux_option "@catppuccin_window_separator" "") + window_status_separator=$(get_interpolated_tmux_batch_option "@catppuccin_window_separator" "") setw window-status-separator "$window_status_separator" - window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") - window_right_separator=$(get_tmux_option "@catppuccin_window_right_separator" "█") - window_middle_separator=$(get_tmux_option "@catppuccin_window_middle_separator" "█ ") - window_number_position=$(get_tmux_option "@catppuccin_window_number_position" "left") # right, left - window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left + window_left_separator=$(get_tmux_batch_option "@catppuccin_window_left_separator" "█") + window_right_separator=$(get_tmux_batch_option "@catppuccin_window_right_separator" "█") + window_middle_separator=$(get_tmux_batch_option "@catppuccin_window_middle_separator" "█ ") + window_number_position=$(get_tmux_batch_option "@catppuccin_window_number_position" "left") # right, left + window_status_enable=$(get_tmux_batch_option "@catppuccin_window_status_enable" "no") # right, left window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") setw window-status-format "$(do_color_interpolation "$window_format")" @@ -141,16 +179,16 @@ main() { # status module local status_left_separator status_right_separator status_connect_separator \ status_fill status_modules_left status_modules_right - status_left_separator=$(get_tmux_option "@catppuccin_status_left_separator" "") - status_right_separator=$(get_tmux_option "@catppuccin_status_right_separator" "█") - status_connect_separator=$(get_tmux_option "@catppuccin_status_connect_separator" "yes") - status_fill=$(get_tmux_option "@catppuccin_status_fill" "icon") + status_left_separator=$(get_tmux_batch_option "@catppuccin_status_left_separator" "") + status_right_separator=$(get_tmux_batch_option "@catppuccin_status_right_separator" "█") + status_connect_separator=$(get_tmux_batch_option "@catppuccin_status_connect_separator" "yes") + status_fill=$(get_tmux_batch_option "@catppuccin_status_fill" "icon") - status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") + status_modules_left=$(get_tmux_batch_option "@catppuccin_status_modules_left" "") loaded_modules_left=$(load_modules "$status_modules_left" "$modules_custom_path" "$modules_status_path") set status-left "$(do_color_interpolation "$loaded_modules_left")" - status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") + status_modules_right=$(get_tmux_batch_option "@catppuccin_status_modules_right" "application session") loaded_modules_right=$(load_modules "$status_modules_right" "$modules_custom_path" "$modules_status_path") set status-right "$(do_color_interpolation "$loaded_modules_right")" diff --git a/pane/pane_default_format.sh b/pane/pane_default_format.sh index 53ef75b..a271b66 100644 --- a/pane/pane_default_format.sh +++ b/pane/pane_default_format.sh @@ -1,11 +1,22 @@ show_pane_default_format() { local number color background text fill + # shellcheck disable=SC2034 + local tmux_batch_options_commands=() + # shellcheck disable=SC2034 + local tmux_batch_options=() + + add_tmux_batch_option "@catppuccin_pane_color" + add_tmux_batch_option "@catppuccin_pane_background_color" + add_tmux_batch_option "@catppuccin_pane_default_text" + add_tmux_batch_option "@catppuccin_pane_default_fill" + + run_tmux_batch_commands number="#{pane_index}" - color="$(get_tmux_option "@catppuccin_pane_color" "$thm_green")" - background="$(get_tmux_option "@catppuccin_pane_background_color" "$thm_gray")" - text="$(get_tmux_option "@catppuccin_pane_default_text" "#{b:pane_current_path}")" - fill="$(get_tmux_option "@catppuccin_pane_default_fill" "number")" # number, all, none + color="$(get_tmux_batch_option "@catppuccin_pane_color" "$thm_green")" + background="$(get_tmux_batch_option "@catppuccin_pane_background_color" "$thm_gray")" + text="$(get_tmux_batch_option "@catppuccin_pane_default_text" "#{b:pane_current_path}")" + fill="$(get_tmux_batch_option "@catppuccin_pane_default_fill" "number")" # number, all, none default_pane_format=$(build_pane_format "$number" "$color" "$background" "$text" "$fill") diff --git a/status/application.sh b/status/application.sh index fa2bbbc..5ce9b8e 100644 --- a/status/application.sh +++ b/status/application.sh @@ -1,10 +1,13 @@ show_application() { local index icon color text module + tmux_batch_setup_status_module "application" + run_tmux_batch_commands + index=$1 - icon=$(get_tmux_option "@catppuccin_application_icon" "") - color=$(get_tmux_option "@catppuccin_application_color" "$thm_pink") - text=$(get_tmux_option "@catppuccin_application_text" "#{pane_current_command}") + icon=$(get_tmux_batch_option "@catppuccin_application_icon" "") + color=$(get_tmux_batch_option "@catppuccin_application_color" "$thm_pink") + text=$(get_tmux_batch_option "@catppuccin_application_text" "#{pane_current_command}") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/battery.sh b/status/battery.sh index 5a2d8f0..1f3ec56 100644 --- a/status/battery.sh +++ b/status/battery.sh @@ -1,24 +1,28 @@ show_battery() { local index icon color text module - index=$1 - icon=$(get_tmux_option "@catppuccin_battery_icon" "#{battery_icon}") - color=$(get_tmux_option "@catppuccin_battery_color" "$thm_yellow") - text=$(get_tmux_option "@catppuccin_battery_text" "#{battery_percentage}") + tmux_batch_setup_status_module "battery" - tmux set-option -g @batt_icon_charge_tier8 '󰁹' - tmux set-option -g @batt_icon_charge_tier7 '󰂁' - tmux set-option -g @batt_icon_charge_tier6 '󰁿' - tmux set-option -g @batt_icon_charge_tier5 '󰁾' - tmux set-option -g @batt_icon_charge_tier4 '󰁽' - tmux set-option -g @batt_icon_charge_tier3 '󰁼' - tmux set-option -g @batt_icon_charge_tier2 '󰁻' - tmux set-option -g @batt_icon_charge_tier1 '󰁺' - tmux set-option -g @batt_icon_status_charged '󰚥' - tmux set-option -g @batt_icon_status_charging '󰂄' - tmux set-option -g @batt_icon_status_discharging '󰂃' - tmux set-option -g @batt_icon_status_unknown '󰂑' - tmux set-option -g @batt_icon_status_attached "󱈑" + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier8 󰁹 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier7 󰂁 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier6 󰁿 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier5 󰁾 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier4 󰁽 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier3 󰁼 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier2 󰁻 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier1 󰁺 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_status_charged 󰚥 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_status_charging 󰂄 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_status_discharging 󰂃 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_status_unknown 󰂑 ;") + tmux_batch_options_commands+=("set-option -gq @batt_icon_status_attached 󱈑 ;") + + run_tmux_batch_commands + + index=$1 + icon=$(get_tmux_batch_option "@catppuccin_battery_icon" "#{battery_icon}") + color=$(get_tmux_batch_option "@catppuccin_battery_color" "$thm_yellow") + text=$(get_tmux_batch_option "@catppuccin_battery_text" "#{battery_percentage}") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/clima.sh b/status/clima.sh index 7e1801b..6f54c2a 100644 --- a/status/clima.sh +++ b/status/clima.sh @@ -2,10 +2,13 @@ show_clima() { local index icon color text module + tmux_batch_setup_status_module "clima" + run_tmux_batch_commands + index=$1 - icon="$(get_tmux_option "@catppuccin_clima_icon" "")" - color="$(get_tmux_option "@catppuccin_clima_color" "$thm_yellow")" - text="$(get_tmux_option "@catppuccin_clima_text" "#{clima}")" + icon="$(get_tmux_batch_option "@catppuccin_clima_icon" "")" + color="$(get_tmux_batch_option "@catppuccin_clima_color" "$thm_yellow")" + text="$(get_tmux_batch_option "@catppuccin_clima_text" "#{clima}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/cpu.sh b/status/cpu.sh index fd12951..7b9e019 100644 --- a/status/cpu.sh +++ b/status/cpu.sh @@ -1,14 +1,18 @@ show_cpu() { local index icon color text module - index=$1 - icon=$(get_tmux_option "@catppuccin_cpu_icon" "") - color="$(get_tmux_option "@catppuccin_cpu_color" "#{cpu_bg_color}")" - text="$(get_tmux_option "@catppuccin_cpu_text" "#{cpu_percentage}")" + tmux_batch_setup_status_module "cpu" - tmux set-option -g @cpu_low_bg_color "$thm_yellow" # background color when cpu is low - tmux set-option -g @cpu_medium_bg_color "$thm_orange" # background color when cpu is medium - tmux set-option -g @cpu_high_bg_color "$thm_red" # background color when cpu is high + tmux_batch_options_commands+=("set-option -gq @cpu_low_bg_color $thm_yellow ;") # background color when cpu is low + tmux_batch_options_commands+=("set-option -gq @cpu_medium_bg_color $thm_orange ;") # background color when cpu is medium + tmux_batch_options_commands+=("set-option -gq @cpu_high_bg_color $thm_red ;") # background color when cpu is high + + run_tmux_batch_commands + + index=$1 + icon=$(get_tmux_batch_option "@catppuccin_cpu_icon" "") + color="$(get_tmux_batch_option "@catppuccin_cpu_color" "#{cpu_bg_color}")" + text="$(get_tmux_batch_option "@catppuccin_cpu_text" "#{cpu_percentage}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/date_time.sh b/status/date_time.sh index 04695b9..cf8262b 100644 --- a/status/date_time.sh +++ b/status/date_time.sh @@ -1,10 +1,13 @@ show_date_time() { local index icon color text module + tmux_batch_setup_status_module "date_time" + run_tmux_batch_commands + index=$1 - icon="$(get_tmux_option "@catppuccin_date_time_icon" "󰃰")" - color="$(get_tmux_option "@catppuccin_date_time_color" "$thm_blue")" - text="$(get_tmux_option "@catppuccin_date_time_text" "%Y-%m-%d %H:%M")" + icon="$(get_tmux_batch_option "@catppuccin_date_time_icon" "󰃰")" + color="$(get_tmux_batch_option "@catppuccin_date_time_color" "$thm_blue")" + text="$(get_tmux_batch_option "@catppuccin_date_time_text" "%Y-%m-%d %H:%M")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/directory.sh b/status/directory.sh index 8982dbe..f0d1476 100644 --- a/status/directory.sh +++ b/status/directory.sh @@ -1,10 +1,13 @@ show_directory() { local index icon color text module + tmux_batch_setup_status_module "directory" + run_tmux_batch_commands + index=$1 - icon=$(get_tmux_option "@catppuccin_directory_icon" "") - color=$(get_tmux_option "@catppuccin_directory_color" "$thm_pink") - text=$(get_tmux_option "@catppuccin_directory_text" "#{b:pane_current_path}") + icon=$(get_tmux_batch_option "@catppuccin_directory_icon" "") + color=$(get_tmux_batch_option "@catppuccin_directory_color" "$thm_pink") + text=$(get_tmux_batch_option "@catppuccin_directory_text" "#{b:pane_current_path}") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/gitmux.sh b/status/gitmux.sh index 9186bc2..edebf5c 100644 --- a/status/gitmux.sh +++ b/status/gitmux.sh @@ -3,10 +3,13 @@ show_gitmux() { local index icon color text module + tmux_batch_setup_status_module "gitmux" + run_tmux_batch_commands + index=$1 - icon="$(get_tmux_option "@catppuccin_gitmux_icon" "󰊢")" - color="$(get_tmux_option "@catppuccin_gitmux_color" "$thm_green")" - text="$(get_tmux_option "@catppuccin_gitmux_text" "#(gitmux \"#{pane_current_path}\")")" + icon="$(get_tmux_batch_option "@catppuccin_gitmux_icon" "󰊢")" + color="$(get_tmux_batch_option "@catppuccin_gitmux_color" "$thm_green")" + text="$(get_tmux_batch_option "@catppuccin_gitmux_text" "#(gitmux \"#{pane_current_path}\")")" module=$( build_status_module "$index" "$icon" "$color" "$text" ) diff --git a/status/host.sh b/status/host.sh index 8e4bd23..ce2bd6d 100644 --- a/status/host.sh +++ b/status/host.sh @@ -1,10 +1,13 @@ show_host() { local index icon color text module + tmux_batch_setup_status_module "host" + run_tmux_batch_commands + index=$1 - icon=$(get_tmux_option "@catppuccin_host_icon" "󰒋") - color=$(get_tmux_option "@catppuccin_host_color" "$thm_magenta") - text=$(get_tmux_option "@catppuccin_host_text" "#H") + icon=$(get_tmux_batch_option "@catppuccin_host_icon" "󰒋") + color=$(get_tmux_batch_option "@catppuccin_host_color" "$thm_magenta") + text=$(get_tmux_batch_option "@catppuccin_host_text" "#H") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/kube.sh b/status/kube.sh index 4e3083c..5e4d26d 100644 --- a/status/kube.sh +++ b/status/kube.sh @@ -3,15 +3,22 @@ show_kube() { local index icon color text context_color namespace_color symbol_enabled module - index=$1 - icon=$(get_tmux_option "@catppuccin_kube_icon" "󱃾") - color=$(get_tmux_option "@catppuccin_kube_color" "$thm_blue") - context_color=$(get_tmux_option "@catppuccin_kube_context_color" "#{thm_red}") - namespace_color=$(get_tmux_option "@catppuccin_kube_namespace_color" "#{thm_cyan}") - symbol_enabled=${KUBE_TMUX_SYMBOL_ENABLE:-false} - text=$(get_tmux_option "@catppuccin_kube_text" "#(KUBE_TMUX_SYMBOL_ENABLE=$symbol_enabled ${TMUX_PLUGIN_MANAGER_PATH}kube-tmux/kube.tmux 250 '$context_color' '$namespace_color')") + tmux_batch_setup_status_module "kube" - module=$( build_status_module "$index" "$icon" "$color" "$text" ) + add_tmux_batch_option "@catppuccin_kube_context_color" + add_tmux_batch_option "@catppuccin_kube_namespace_color" + + run_tmux_batch_commands + + index=$1 + icon=$(get_tmux_batch_option "@catppuccin_kube_icon" "󱃾") + color=$(get_tmux_batch_option "@catppuccin_kube_color" "$thm_blue") + context_color=$(get_tmux_batch_option "@catppuccin_kube_context_color" "#{thm_red}") + namespace_color=$(get_tmux_batch_option "@catppuccin_kube_namespace_color" "#{thm_cyan}") + symbol_enabled=${KUBE_TMUX_SYMBOL_ENABLE:-false} + text=$(get_tmux_batch_option "@catppuccin_kube_text" "#(KUBE_TMUX_SYMBOL_ENABLE=$symbol_enabled ${TMUX_PLUGIN_MANAGER_PATH}kube-tmux/kube.tmux 250 '$context_color' '$namespace_color')") + + module=$(build_status_module "$index" "$icon" "$color" "$text") echo "$module" } diff --git a/status/load.sh b/status/load.sh index 5809423..6a87a47 100644 --- a/status/load.sh +++ b/status/load.sh @@ -1,10 +1,13 @@ show_load() { local index icon color text module + tmux_batch_setup_status_module "load" + run_tmux_batch_commands + index=$1 - icon="$(get_tmux_option "@catppuccin_load_icon" "󰊚")" - color="$(get_tmux_option "@catppuccin_load_color" "$thm_blue")" - text="$(get_tmux_option "@catppuccin_load_text" "#{load_full}")" + icon="$(get_tmux_batch_option "@catppuccin_load_icon" "󰊚")" + color="$(get_tmux_batch_option "@catppuccin_load_color" "$thm_blue")" + text="$(get_tmux_batch_option "@catppuccin_load_text" "#{load_full}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/pomodoro_plus.sh b/status/pomodoro_plus.sh index a155cd7..48bcab7 100644 --- a/status/pomodoro_plus.sh +++ b/status/pomodoro_plus.sh @@ -3,10 +3,13 @@ show_pomodoro_plus() { local index icon color text module + tmux_batch_setup_status_module "pomodoro_plus" + run_tmux_batch_commands + index=$1 - icon="$( get_tmux_option "@catppuccin_pomodoro_plus_icon" "" )" - color="$( get_tmux_option "@catppuccin_pomodoro_plus_color" "$thm_orange" )" - text="$( get_tmux_option "@catppuccin_pomodoro_plus_text" "#{pomodoro_status}" )" + icon="$( get_tmux_batch_option "@catppuccin_pomodoro_plus_icon" "" )" + color="$( get_tmux_batch_option "@catppuccin_pomodoro_plus_color" "$thm_orange" )" + text="$( get_tmux_batch_option "@catppuccin_pomodoro_plus_text" "#{pomodoro_status}" )" module=$( build_status_module "$index" "$icon" "$color" "$text" ) diff --git a/status/session.sh b/status/session.sh index 6e79cfb..d7c3c19 100644 --- a/status/session.sh +++ b/status/session.sh @@ -1,10 +1,13 @@ show_session() { local index icon color text module + tmux_batch_setup_status_module "session" + run_tmux_batch_commands + index=$1 - icon=$(get_tmux_option "@catppuccin_session_icon" "") - color=$(get_tmux_option "@catppuccin_session_color" "#{?client_prefix,$thm_red,$thm_green}") - text=$(get_tmux_option "@catppuccin_session_text" "#S") + icon=$(get_tmux_batch_option "@catppuccin_session_icon" "") + color=$(get_tmux_batch_option "@catppuccin_session_color" "#{?client_prefix,$thm_red,$thm_green}") + text=$(get_tmux_batch_option "@catppuccin_session_text" "#S") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/uptime.sh b/status/uptime.sh index 10999de..2b357be 100644 --- a/status/uptime.sh +++ b/status/uptime.sh @@ -1,10 +1,13 @@ show_uptime() { local index icon color text module + tmux_batch_setup_status_module "uptime" + run_tmux_batch_commands + index=$1 - icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" - color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" - text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* user.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" + icon="$(get_tmux_batch_option "@catppuccin_uptime_icon" "󰔟")" + color="$(get_tmux_batch_option "@catppuccin_uptime_color" "$thm_green")" + text="$(get_tmux_batch_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* user.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/user.sh b/status/user.sh index ea88e75..217b44c 100644 --- a/status/user.sh +++ b/status/user.sh @@ -1,10 +1,13 @@ show_user() { local index icon color text module + tmux_batch_setup_status_module "user" + run_tmux_batch_commands + index=$1 - icon=$(get_tmux_option "@catppuccin_user_icon" "") - color=$(get_tmux_option "@catppuccin_user_color" "$thm_cyan") - text=$(get_tmux_option "@catppuccin_user_text" "#(whoami)") + icon=$(get_tmux_batch_option "@catppuccin_user_icon" "") + color=$(get_tmux_batch_option "@catppuccin_user_color" "$thm_cyan") + text=$(get_tmux_batch_option "@catppuccin_user_text" "#(whoami)") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/weather.sh b/status/weather.sh index b6cb6fe..c6bfbc2 100644 --- a/status/weather.sh +++ b/status/weather.sh @@ -3,10 +3,13 @@ show_weather() { local index icon color text module + tmux_batch_setup_status_module "weather" + run_tmux_batch_commands + index=$1 - icon="$(get_tmux_option "@catppuccin_weather_icon" "")" - color="$(get_tmux_option "@catppuccin_weather_color" "$thm_yellow")" - text="$(get_tmux_option "@catppuccin_weather_text" "#{weather}")" + icon="$(get_tmux_batch_option "@catppuccin_weather_icon" "")" + color="$(get_tmux_batch_option "@catppuccin_weather_color" "$thm_yellow")" + text="$(get_tmux_batch_option "@catppuccin_weather_text" "#{weather}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/utils/tmux_utils.sh b/utils/tmux_utils.sh index 27da09a..5987441 100644 --- a/utils/tmux_utils.sh +++ b/utils/tmux_utils.sh @@ -16,11 +16,9 @@ get_tmux_option() { if [ "$value" = "null" ] then echo "" - else echo "$value" fi - else echo "$default" @@ -38,11 +36,9 @@ get_interpolated_tmux_option() { if [ "$value" = "null" ] then echo "" - else do_color_interpolation "$value" fi - else echo "$default" fi @@ -59,3 +55,95 @@ setw() { local value=$2 tmux_commands+=(set-window-option -gq "$option" "$value" ";") } + +get_tmux_batch_option() { + local option default value + option="$1" + default="$2" + + for option_index in "${!tmux_batch_options[@]}"; do + IFS=":" read -r read_option read_value <<<"${tmux_batch_options[$option_index]}" + if [[ "$read_option" == "$option" ]]; then + echo "$read_value" + return + fi + done + + echo "$default" +} + +get_interpolated_tmux_batch_option() { + local option default value + option="$1" + default="$2" + + for option_index in "${!tmux_batch_options[@]}"; do + IFS=":" read -r read_option read_value <<<"${tmux_batch_options[$option_index]}" + if [[ "$read_option" == "$option" ]]; then + do_color_interpolation "$read_value" + return + fi + done + + echo "$default" +} + +add_tmux_batch_option() { + local option + option="$1" + + tmux_batch_options_commands+=("show-option -gq $option ;") +} + +set_tmux_batch_option() { + local option value + option="$1" + value="$2" + + # NOTE: don't check for duplicates just append + # for option_index in "${!tmux_batch_options[@]}"; do + # read -d ':' -r read_option <<<"${tmux_batch_options[$option_index]}" + # if [[ "$read_option" == "$option" ]]; then + # tmux_batch_options["$option_index"]="$option:$value" + # return + # fi + # done + + tmux_batch_options+=("$option:$value") +} + +run_tmux_batch_commands() { + local temp + + # shellcheck disable=SC2048,SC2086 + while IFS=' ' read -r option value; do + if [ -n "$value" ]; then + if [ "$value" = "null" ]; then + set_tmux_batch_option "$option" "" + else + temp="${value%\"}" + temp="${temp#\"}" + set_tmux_batch_option "$option" "$temp" + fi + fi + done < <(tmux ${tmux_batch_options_commands[*]}) + + tmux_batch_options_commands=() +} + +tmux_batch_setup_status_module() { + local name="$1" + + # Don't want to run commands set before since we can't update + # `tmux_batch_options` for it + # shellcheck disable=SC2034 + tmux_batch_options_commands=() + + # No need to check previous options + # shellcheck disable=SC2034 + tmux_batch_options=() + + add_tmux_batch_option "@catppuccin_${name}_icon" + add_tmux_batch_option "@catppuccin_${name}_color" + add_tmux_batch_option "@catppuccin_${name}_text" +} diff --git a/window/window_current_format.sh b/window/window_current_format.sh index 0a17bcf..511d0c3 100644 --- a/window/window_current_format.sh +++ b/window/window_current_format.sh @@ -1,11 +1,22 @@ show_window_current_format() { local number color background text fill current_window_format + # shellcheck disable=SC2034 + local tmux_batch_options_commands=() + # shellcheck disable=SC2034 + local tmux_batch_options=() + + add_tmux_batch_option "@catppuccin_window_current_color" + add_tmux_batch_option "@catppuccin_window_current_background" + add_tmux_batch_option "@catppuccin_window_current_text" + add_tmux_batch_option "@catppuccin_window_current_fill" + + run_tmux_batch_commands number="#I" - color=$(get_tmux_option "@catppuccin_window_current_color" "$thm_orange") - background=$(get_tmux_option "@catppuccin_window_current_background" "$thm_bg") - text="$(get_tmux_option "@catppuccin_window_current_text" "#{b:pane_current_path}")" # use #W for application instead of directory - fill="$(get_tmux_option "@catppuccin_window_current_fill" "number")" # number, all, none + color=$(get_tmux_batch_option "@catppuccin_window_current_color" "$thm_orange") + background=$(get_tmux_batch_option "@catppuccin_window_current_background" "$thm_bg") + text="$(get_tmux_batch_option "@catppuccin_window_current_text" "#{b:pane_current_path}")" # use #W for application instead of directory + fill="$(get_tmux_batch_option "@catppuccin_window_current_fill" "number")" # number, all, none current_window_format=$(build_window_format "$number" "$color" "$background" "$text" "$fill") diff --git a/window/window_default_format.sh b/window/window_default_format.sh index 2c758ba..e426181 100644 --- a/window/window_default_format.sh +++ b/window/window_default_format.sh @@ -1,11 +1,22 @@ show_window_default_format() { local number color background text fill default_window_format + # shellcheck disable=SC2034 + local tmux_batch_options_commands=() + # shellcheck disable=SC2034 + local tmux_batch_options=() + + add_tmux_batch_option "@catppuccin_window_default_color" + add_tmux_batch_option "@catppuccin_window_default_background" + add_tmux_batch_option "@catppuccin_window_default_text" + add_tmux_batch_option "@catppuccin_window_default_fill" + + run_tmux_batch_commands number="#I" - color=$(get_tmux_option "@catppuccin_window_default_color" "$thm_blue") - background=$(get_tmux_option "@catppuccin_window_default_background" "$thm_gray") - text="$(get_tmux_option "@catppuccin_window_default_text" "#{b:pane_current_path}")" # use #W for application instead of directory - fill="$(get_tmux_option "@catppuccin_window_default_fill" "number")" # number, all, none + color=$(get_tmux_batch_option "@catppuccin_window_default_color" "$thm_blue") + background=$(get_tmux_batch_option "@catppuccin_window_default_background" "$thm_gray") + text="$(get_tmux_batch_option "@catppuccin_window_default_text" "#{b:pane_current_path}")" # use #W for application instead of directory + fill="$(get_tmux_batch_option "@catppuccin_window_default_fill" "number")" # number, all, none default_window_format=$(build_window_format "$number" "$color" "$background" "$text" "$fill") From 362a306db71794f04d0995fc058bcaa094d1af70 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 5 Aug 2024 12:57:45 +0000 Subject: [PATCH 56/72] feat: warn users of whitespace in module lists (#266) --- README.md | 2 +- utils/module_utils.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index abe5b69..d279a3f 100644 --- a/README.md +++ b/README.md @@ -308,7 +308,7 @@ set -g @catppuccin_pane_background_color "#{thm_orange}" #### Set the module list ```sh set -g @catppuccin_status_modules_right "application session" -set -g @catppuccin_status_modules_left "" +set -g @catppuccin_status_modules_left "null" ``` Provide a list of modules and the order in which you want them to appear in the status. diff --git a/utils/module_utils.sh b/utils/module_utils.sh index e9d77f9..8362780 100644 --- a/utils/module_utils.sh +++ b/utils/module_utils.sh @@ -32,6 +32,16 @@ load_modules() { continue 2 fi done + + if [[ -z "${module_name/ }" ]]; then + if [[ -z "${modules_list/ }" ]]; then + tmux_echo "catppuccin warning: a module list has only white space, to remove all modules set it to \"null\"" + else + tmux_echo "catppuccin warning: a module list with value \"$modules_list\" has leading/trailing whitespace" + fi + continue + fi + tmux_echo "catppuccin warning: module $module_name not found" From a2dda02b43194aec5deddf2890c28c76b4c11ed4 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 5 Aug 2024 14:44:19 +0000 Subject: [PATCH 57/72] feat: error/warning messages on first load (#278) `tmux_echo` now uses hooks this allows it to print on the first load. To cleanup the hooks every hook gets a _unique_ number/index, this is _not_ enforced. --- utils/module_utils.sh | 6 +++--- utils/tmux_utils.sh | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/utils/module_utils.sh b/utils/module_utils.sh index 8362780..8dd2a7e 100644 --- a/utils/module_utils.sh +++ b/utils/module_utils.sh @@ -35,14 +35,14 @@ load_modules() { if [[ -z "${module_name/ }" ]]; then if [[ -z "${modules_list/ }" ]]; then - tmux_echo "catppuccin warning: a module list has only white space, to remove all modules set it to \"null\"" + tmux_echo "catppuccin warning: a module list has only white space, to remove all modules set it to \"null\"" 100 else - tmux_echo "catppuccin warning: a module list with value \"$modules_list\" has leading/trailing whitespace" + tmux_echo "catppuccin warning: a module list with value \"$modules_list\" has leading/trailing whitespace" 101 fi continue fi - tmux_echo "catppuccin warning: module $module_name not found" + tmux_echo "catppuccin warning: module $module_name not found" 102 done diff --git a/utils/tmux_utils.sh b/utils/tmux_utils.sh index 5987441..7aa3151 100644 --- a/utils/tmux_utils.sh +++ b/utils/tmux_utils.sh @@ -1,8 +1,10 @@ #!/bin/sh tmux_echo() { - local message="$1" - tmux run-shell "echo '$message'" + local hook + hook="after-new-session[$2]" + + tmux set-hook -g "$hook" "run-shell 'echo \"$1\"'; set-hook -gu \"$hook\"" } get_tmux_option() { From e2a1043f4223ca591b196fdd0256f2c85dd27143 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Tue, 6 Aug 2024 13:25:59 +0000 Subject: [PATCH 58/72] Revert "perf: batch tmux show-options (#240)" (#283) This reverts commit 3c6f6f282b3bb17554dc2b4b80760b6507acfd65. --- builder/window_builder.sh | 73 +++++++++---------------- catppuccin.tmux | 94 ++++++++++---------------------- pane/pane_default_format.sh | 19 ++----- status/application.sh | 9 ++-- status/battery.sh | 38 ++++++------- status/clima.sh | 9 ++-- status/cpu.sh | 18 +++---- status/date_time.sh | 9 ++-- status/directory.sh | 9 ++-- status/gitmux.sh | 9 ++-- status/host.sh | 9 ++-- status/kube.sh | 19 +++---- status/load.sh | 9 ++-- status/pomodoro_plus.sh | 9 ++-- status/session.sh | 9 ++-- status/uptime.sh | 9 ++-- status/user.sh | 9 ++-- status/weather.sh | 9 ++-- utils/tmux_utils.sh | 96 ++------------------------------- window/window_current_format.sh | 19 ++----- window/window_default_format.sh | 19 ++----- 21 files changed, 134 insertions(+), 369 deletions(-) diff --git a/builder/window_builder.sh b/builder/window_builder.sh index 735b99c..186b169 100644 --- a/builder/window_builder.sh +++ b/builder/window_builder.sh @@ -1,8 +1,5 @@ #!/bin/sh - -show_window_status= - build_window_format() { local number="$1" local color="$2" @@ -96,56 +93,34 @@ build_window_format() { } build_window_icon() { - # Only update `show_window_status` if it's not empty - # this module is ran twice once for current and once for default - # meaning 2 calls to build_window_icon wich will/should both return the same - # result. - if [ -z "$show_window_status" ]; then - local window_status_icon_enable custom_icon_window_last \ - custom_icon_window_zoom custom_icon_window_mark custom_icon_window_mark \ - custom_icon_window_silent custom_icon_window_activity custom_icon_window_bell + local window_status_icon_enable custom_icon_window_last \ + custom_icon_window_zoom custom_icon_window_mark custom_icon_window_mark \ + custom_icon_window_silent custom_icon_window_activity custom_icon_window_bell - # shellcheck disable=SC2034 - local tmux_batch_options_commands=() - # shellcheck disable=SC2034 - local tmux_batch_options=() + window_status_icon_enable=$(get_tmux_option "@catppuccin_window_status_icon_enable" "yes") + custom_icon_window_last=$(get_tmux_option "@catppuccin_icon_window_last" "󰖰") + custom_icon_window_current=$(get_tmux_option "@catppuccin_icon_window_current" "󰖯") + custom_icon_window_zoom=$(get_tmux_option "@catppuccin_icon_window_zoom" "󰁌") + custom_icon_window_mark=$(get_tmux_option "@catppuccin_icon_window_mark" "󰃀") + custom_icon_window_silent=$(get_tmux_option "@catppuccin_icon_window_silent" "󰂛") + custom_icon_window_activity=$(get_tmux_option "@catppuccin_icon_window_activity" "󱅫") + custom_icon_window_bell=$(get_tmux_option "@catppuccin_icon_window_bell" "󰂞") - add_tmux_batch_option "@catppuccin_window_status_icon_enable" - add_tmux_batch_option "@catppuccin_icon_window_last" - add_tmux_batch_option "@catppuccin_icon_window_current" - add_tmux_batch_option "@catppuccin_icon_window_zoom" - add_tmux_batch_option "@catppuccin_icon_window_mark" - add_tmux_batch_option "@catppuccin_icon_window_silent" - add_tmux_batch_option "@catppuccin_icon_window_activity" - add_tmux_batch_option "@catppuccin_icon_window_bell" + if [ "$window_status_icon_enable" = "yes" ]; then + # #!~[*-]MZ + local show_window_status="" + show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" + show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" + show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" + show_window_status+="#{?window_active, ${custom_icon_window_current},}" + show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" + show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" + show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" - run_tmux_batch_commands + fi - window_status_icon_enable=$(get_tmux_batch_option "@catppuccin_window_status_icon_enable" "yes") - custom_icon_window_last=$(get_tmux_batch_option "@catppuccin_icon_window_last" "󰖰") - custom_icon_window_current=$(get_tmux_batch_option "@catppuccin_icon_window_current" "󰖯") - custom_icon_window_zoom=$(get_tmux_batch_option "@catppuccin_icon_window_zoom" "󰁌") - custom_icon_window_mark=$(get_tmux_batch_option "@catppuccin_icon_window_mark" "󰃀") - custom_icon_window_silent=$(get_tmux_batch_option "@catppuccin_icon_window_silent" "󰂛") - custom_icon_window_activity=$(get_tmux_batch_option "@catppuccin_icon_window_activity" "󱅫") - custom_icon_window_bell=$(get_tmux_batch_option "@catppuccin_icon_window_bell" "󰂞") - - if [ "$window_status_icon_enable" = "yes" ]; then - # #!~[*-]MZ - show_window_status="" - show_window_status+="#{?window_activity_flag, ${custom_icon_window_activity},}" - show_window_status+="#{?window_bell_flag, ${custom_icon_window_bell},}" - show_window_status+="#{?window_silence_flag, ${custom_icon_window_silent},}" - show_window_status+="#{?window_active, ${custom_icon_window_current},}" - show_window_status+="#{?window_last_flag, ${custom_icon_window_last},}" - show_window_status+="#{?window_marked_flag, ${custom_icon_window_mark},}" - show_window_status+="#{?window_zoomed_flag, ${custom_icon_window_zoom},}" - - fi - - if [ "$window_status_icon_enable" = "no" ]; then - show_window_status=" #F" - fi + if [ "$window_status_icon_enable" = "no" ]; then + local show_window_status=" #F" fi echo "$show_window_status" diff --git a/catppuccin.tmux b/catppuccin.tmux index cce7c73..5771b8e 100755 --- a/catppuccin.tmux +++ b/catppuccin.tmux @@ -21,19 +21,9 @@ main() { # Aggregate all commands in one array local tmux_commands=() - # Aggregate all tmux option for tmux_batch_option - local tmux_batch_options_commands=() - local tmux_batch_options=() - - # Batch options for loading the colorscheme and everyting before - add_tmux_batch_option "@catppuccin_custom_plugin_dir" - add_tmux_batch_option "@catppuccin_flavour" - - run_tmux_batch_commands - # module directories local custom_path modules_custom_path modules_status_path modules_window_path modules_pane_path - custom_path="$(get_tmux_batch_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" + custom_path="$(get_tmux_option "@catppuccin_custom_plugin_dir" "${PLUGIN_DIR}/custom")" modules_custom_path=$custom_path modules_status_path=$PLUGIN_DIR/status modules_window_path=$PLUGIN_DIR/window @@ -44,7 +34,7 @@ main() { local color_interpolation=() local color_values=() local temp - theme="$(get_tmux_batch_option "@catppuccin_flavour" "mocha")" + theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" # NOTE: Pulling in the selected theme by the theme that's being set as local # variables. # https://github.com/dylanaraps/pure-sh-bible#parsing-a-keyval-file @@ -65,44 +55,16 @@ main() { color_values+=("${temp}") done <"${PLUGIN_DIR}/themes/catppuccin_${theme}.tmuxtheme" - # Batch options for `./catppuccin.tmux` - add_tmux_batch_option "@catppuccin_status_default" - add_tmux_batch_option "@catppuccin_status_justify" - add_tmux_batch_option "@catppuccin_status_background" - add_tmux_batch_option "@catppuccin_menu_style" - add_tmux_batch_option "@catppuccin_menu_selected_style" - add_tmux_batch_option "@catppuccin_menu_border_style" - add_tmux_batch_option "@catppuccin_pane_status_enabled" - add_tmux_batch_option "@catppuccin_pane_border_status" - add_tmux_batch_option "@catppuccin_pane_left_separator" - add_tmux_batch_option "@catppuccin_pane_middle_separator" - add_tmux_batch_option "@catppuccin_pane_right_separator" - add_tmux_batch_option "@catppuccin_pane_number_position" - add_tmux_batch_option "@catppuccin_window_separator" - add_tmux_batch_option "@catppuccin_window_left_separator" - add_tmux_batch_option "@catppuccin_window_right_separator" - add_tmux_batch_option "@catppuccin_window_middle_separator" - add_tmux_batch_option "@catppuccin_window_number_position" - add_tmux_batch_option "@catppuccin_window_status_enable" - add_tmux_batch_option "@catppuccin_status_left_separator" - add_tmux_batch_option "@catppuccin_status_right_separator" - add_tmux_batch_option "@catppuccin_status_connect_separator" - add_tmux_batch_option "@catppuccin_status_fill" - add_tmux_batch_option "@catppuccin_status_modules_left" - add_tmux_batch_option "@catppuccin_status_modules_right" - - run_tmux_batch_commands - # status general local status_default status_justify status_background message_background - status_default=$(get_tmux_batch_option "@catppuccin_status_default" "on") + status_default=$(get_tmux_option "@catppuccin_status_default" "on") # shellcheck disable=SC2121 set status "$status_default" - status_justify=$(get_tmux_batch_option "@catppuccin_status_justify" "left") + status_justify=$(get_tmux_option "@catppuccin_status_justify" "left") set status-justify "$status_justify" - status_background=$(get_tmux_batch_option "@catppuccin_status_background" "theme") + status_background=$(get_tmux_option "@catppuccin_status_background" "theme") if [ "${status_background}" = "theme" ]; then set status-bg "${thm_bg}" message_background="${thm_gray}" @@ -125,9 +87,9 @@ main() { # menu local menu_style menu_selected_style menu_border_style - menu_style=$(get_interpolated_tmux_batch_option "@catppuccin_menu_style" "default") - menu_selected_style=$(get_interpolated_tmux_batch_option "@catppuccin_menu_selected_style" "fg=${thm_gray},bg=${thm_yellow}") - menu_border_style=$(get_interpolated_tmux_batch_option "@catppuccin_menu_border_style" "default") + menu_style=$(get_interpolated_tmux_option "@catppuccin_menu_style" "default") + menu_selected_style=$(get_interpolated_tmux_option "@catppuccin_menu_selected_style" "fg=${thm_gray},bg=${thm_yellow}") + menu_border_style=$(get_interpolated_tmux_option "@catppuccin_menu_border_style" "default") set menu-style "$menu_style" set menu-selected-style "$menu_selected_style" set menu-border-style "$menu_border_style" @@ -136,19 +98,19 @@ main() { local pane_border_status pane_border_style \ pane_active_border_style pane_left_separator pane_middle_separator \ pane_right_separator pane_number_position pane_format - pane_status_enable=$(get_tmux_batch_option "@catppuccin_pane_status_enabled" "no") # yes - pane_border_status=$(get_tmux_batch_option "@catppuccin_pane_border_status" "off") # bottom + pane_status_enable=$(get_tmux_option "@catppuccin_pane_status_enabled" "no") # yes + pane_border_status=$(get_tmux_option "@catppuccin_pane_border_status" "off") # bottom pane_border_style=$( - get_interpolated_tmux_batch_option "@catppuccin_pane_border_style" "fg=${thm_gray}" + get_interpolated_tmux_option "@catppuccin_pane_border_style" "fg=${thm_gray}" ) pane_active_border_style=$( - get_interpolated_tmux_batch_option "@catppuccin_pane_active_border_style" \ + get_interpolated_tmux_option "@catppuccin_pane_active_border_style" \ "#{?pane_in_mode,fg=${thm_yellow},#{?pane_synchronized,fg=${thm_magenta},fg=${thm_orange}}}" ) - pane_left_separator=$(get_tmux_batch_option "@catppuccin_pane_left_separator" "█") - pane_middle_separator=$(get_tmux_batch_option "@catppuccin_pane_middle_separator" "█") - pane_right_separator=$(get_tmux_batch_option "@catppuccin_pane_right_separator" "█") - pane_number_position=$(get_tmux_batch_option "@catppuccin_pane_number_position" "left") # right, left + pane_left_separator=$(get_tmux_option "@catppuccin_pane_left_separator" "█") + pane_middle_separator=$(get_tmux_option "@catppuccin_pane_middle_separator" "█") + pane_right_separator=$(get_tmux_option "@catppuccin_pane_right_separator" "█") + pane_number_position=$(get_tmux_option "@catppuccin_pane_number_position" "left") # right, left pane_format=$(load_modules "pane_default_format" "$modules_custom_path" "$modules_pane_path") setw pane-border-status "$pane_border_status" @@ -161,14 +123,14 @@ main() { window_middle_separator window_number_position window_status_enable \ window_format window_current_format - window_status_separator=$(get_interpolated_tmux_batch_option "@catppuccin_window_separator" "") + window_status_separator=$(get_interpolated_tmux_option "@catppuccin_window_separator" "") setw window-status-separator "$window_status_separator" - window_left_separator=$(get_tmux_batch_option "@catppuccin_window_left_separator" "█") - window_right_separator=$(get_tmux_batch_option "@catppuccin_window_right_separator" "█") - window_middle_separator=$(get_tmux_batch_option "@catppuccin_window_middle_separator" "█ ") - window_number_position=$(get_tmux_batch_option "@catppuccin_window_number_position" "left") # right, left - window_status_enable=$(get_tmux_batch_option "@catppuccin_window_status_enable" "no") # right, left + window_left_separator=$(get_tmux_option "@catppuccin_window_left_separator" "█") + window_right_separator=$(get_tmux_option "@catppuccin_window_right_separator" "█") + window_middle_separator=$(get_tmux_option "@catppuccin_window_middle_separator" "█ ") + window_number_position=$(get_tmux_option "@catppuccin_window_number_position" "left") # right, left + window_status_enable=$(get_tmux_option "@catppuccin_window_status_enable" "no") # right, left window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path") setw window-status-format "$(do_color_interpolation "$window_format")" @@ -179,16 +141,16 @@ main() { # status module local status_left_separator status_right_separator status_connect_separator \ status_fill status_modules_left status_modules_right - status_left_separator=$(get_tmux_batch_option "@catppuccin_status_left_separator" "") - status_right_separator=$(get_tmux_batch_option "@catppuccin_status_right_separator" "█") - status_connect_separator=$(get_tmux_batch_option "@catppuccin_status_connect_separator" "yes") - status_fill=$(get_tmux_batch_option "@catppuccin_status_fill" "icon") + status_left_separator=$(get_tmux_option "@catppuccin_status_left_separator" "") + status_right_separator=$(get_tmux_option "@catppuccin_status_right_separator" "█") + status_connect_separator=$(get_tmux_option "@catppuccin_status_connect_separator" "yes") + status_fill=$(get_tmux_option "@catppuccin_status_fill" "icon") - status_modules_left=$(get_tmux_batch_option "@catppuccin_status_modules_left" "") + status_modules_left=$(get_tmux_option "@catppuccin_status_modules_left" "") loaded_modules_left=$(load_modules "$status_modules_left" "$modules_custom_path" "$modules_status_path") set status-left "$(do_color_interpolation "$loaded_modules_left")" - status_modules_right=$(get_tmux_batch_option "@catppuccin_status_modules_right" "application session") + status_modules_right=$(get_tmux_option "@catppuccin_status_modules_right" "application session") loaded_modules_right=$(load_modules "$status_modules_right" "$modules_custom_path" "$modules_status_path") set status-right "$(do_color_interpolation "$loaded_modules_right")" diff --git a/pane/pane_default_format.sh b/pane/pane_default_format.sh index a271b66..53ef75b 100644 --- a/pane/pane_default_format.sh +++ b/pane/pane_default_format.sh @@ -1,22 +1,11 @@ show_pane_default_format() { local number color background text fill - # shellcheck disable=SC2034 - local tmux_batch_options_commands=() - # shellcheck disable=SC2034 - local tmux_batch_options=() - - add_tmux_batch_option "@catppuccin_pane_color" - add_tmux_batch_option "@catppuccin_pane_background_color" - add_tmux_batch_option "@catppuccin_pane_default_text" - add_tmux_batch_option "@catppuccin_pane_default_fill" - - run_tmux_batch_commands number="#{pane_index}" - color="$(get_tmux_batch_option "@catppuccin_pane_color" "$thm_green")" - background="$(get_tmux_batch_option "@catppuccin_pane_background_color" "$thm_gray")" - text="$(get_tmux_batch_option "@catppuccin_pane_default_text" "#{b:pane_current_path}")" - fill="$(get_tmux_batch_option "@catppuccin_pane_default_fill" "number")" # number, all, none + color="$(get_tmux_option "@catppuccin_pane_color" "$thm_green")" + background="$(get_tmux_option "@catppuccin_pane_background_color" "$thm_gray")" + text="$(get_tmux_option "@catppuccin_pane_default_text" "#{b:pane_current_path}")" + fill="$(get_tmux_option "@catppuccin_pane_default_fill" "number")" # number, all, none default_pane_format=$(build_pane_format "$number" "$color" "$background" "$text" "$fill") diff --git a/status/application.sh b/status/application.sh index 5ce9b8e..fa2bbbc 100644 --- a/status/application.sh +++ b/status/application.sh @@ -1,13 +1,10 @@ show_application() { local index icon color text module - tmux_batch_setup_status_module "application" - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_application_icon" "") - color=$(get_tmux_batch_option "@catppuccin_application_color" "$thm_pink") - text=$(get_tmux_batch_option "@catppuccin_application_text" "#{pane_current_command}") + icon=$(get_tmux_option "@catppuccin_application_icon" "") + color=$(get_tmux_option "@catppuccin_application_color" "$thm_pink") + text=$(get_tmux_option "@catppuccin_application_text" "#{pane_current_command}") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/battery.sh b/status/battery.sh index 1f3ec56..5a2d8f0 100644 --- a/status/battery.sh +++ b/status/battery.sh @@ -1,28 +1,24 @@ show_battery() { local index icon color text module - tmux_batch_setup_status_module "battery" - - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier8 󰁹 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier7 󰂁 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier6 󰁿 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier5 󰁾 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier4 󰁽 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier3 󰁼 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier2 󰁻 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_charge_tier1 󰁺 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_status_charged 󰚥 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_status_charging 󰂄 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_status_discharging 󰂃 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_status_unknown 󰂑 ;") - tmux_batch_options_commands+=("set-option -gq @batt_icon_status_attached 󱈑 ;") - - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_battery_icon" "#{battery_icon}") - color=$(get_tmux_batch_option "@catppuccin_battery_color" "$thm_yellow") - text=$(get_tmux_batch_option "@catppuccin_battery_text" "#{battery_percentage}") + icon=$(get_tmux_option "@catppuccin_battery_icon" "#{battery_icon}") + color=$(get_tmux_option "@catppuccin_battery_color" "$thm_yellow") + text=$(get_tmux_option "@catppuccin_battery_text" "#{battery_percentage}") + + tmux set-option -g @batt_icon_charge_tier8 '󰁹' + tmux set-option -g @batt_icon_charge_tier7 '󰂁' + tmux set-option -g @batt_icon_charge_tier6 '󰁿' + tmux set-option -g @batt_icon_charge_tier5 '󰁾' + tmux set-option -g @batt_icon_charge_tier4 '󰁽' + tmux set-option -g @batt_icon_charge_tier3 '󰁼' + tmux set-option -g @batt_icon_charge_tier2 '󰁻' + tmux set-option -g @batt_icon_charge_tier1 '󰁺' + tmux set-option -g @batt_icon_status_charged '󰚥' + tmux set-option -g @batt_icon_status_charging '󰂄' + tmux set-option -g @batt_icon_status_discharging '󰂃' + tmux set-option -g @batt_icon_status_unknown '󰂑' + tmux set-option -g @batt_icon_status_attached "󱈑" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/clima.sh b/status/clima.sh index 6f54c2a..7e1801b 100644 --- a/status/clima.sh +++ b/status/clima.sh @@ -2,13 +2,10 @@ show_clima() { local index icon color text module - tmux_batch_setup_status_module "clima" - run_tmux_batch_commands - index=$1 - icon="$(get_tmux_batch_option "@catppuccin_clima_icon" "")" - color="$(get_tmux_batch_option "@catppuccin_clima_color" "$thm_yellow")" - text="$(get_tmux_batch_option "@catppuccin_clima_text" "#{clima}")" + icon="$(get_tmux_option "@catppuccin_clima_icon" "")" + color="$(get_tmux_option "@catppuccin_clima_color" "$thm_yellow")" + text="$(get_tmux_option "@catppuccin_clima_text" "#{clima}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/cpu.sh b/status/cpu.sh index 7b9e019..fd12951 100644 --- a/status/cpu.sh +++ b/status/cpu.sh @@ -1,18 +1,14 @@ show_cpu() { local index icon color text module - tmux_batch_setup_status_module "cpu" - - tmux_batch_options_commands+=("set-option -gq @cpu_low_bg_color $thm_yellow ;") # background color when cpu is low - tmux_batch_options_commands+=("set-option -gq @cpu_medium_bg_color $thm_orange ;") # background color when cpu is medium - tmux_batch_options_commands+=("set-option -gq @cpu_high_bg_color $thm_red ;") # background color when cpu is high - - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_cpu_icon" "") - color="$(get_tmux_batch_option "@catppuccin_cpu_color" "#{cpu_bg_color}")" - text="$(get_tmux_batch_option "@catppuccin_cpu_text" "#{cpu_percentage}")" + icon=$(get_tmux_option "@catppuccin_cpu_icon" "") + color="$(get_tmux_option "@catppuccin_cpu_color" "#{cpu_bg_color}")" + text="$(get_tmux_option "@catppuccin_cpu_text" "#{cpu_percentage}")" + + tmux set-option -g @cpu_low_bg_color "$thm_yellow" # background color when cpu is low + tmux set-option -g @cpu_medium_bg_color "$thm_orange" # background color when cpu is medium + tmux set-option -g @cpu_high_bg_color "$thm_red" # background color when cpu is high module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/date_time.sh b/status/date_time.sh index cf8262b..04695b9 100644 --- a/status/date_time.sh +++ b/status/date_time.sh @@ -1,13 +1,10 @@ show_date_time() { local index icon color text module - tmux_batch_setup_status_module "date_time" - run_tmux_batch_commands - index=$1 - icon="$(get_tmux_batch_option "@catppuccin_date_time_icon" "󰃰")" - color="$(get_tmux_batch_option "@catppuccin_date_time_color" "$thm_blue")" - text="$(get_tmux_batch_option "@catppuccin_date_time_text" "%Y-%m-%d %H:%M")" + icon="$(get_tmux_option "@catppuccin_date_time_icon" "󰃰")" + color="$(get_tmux_option "@catppuccin_date_time_color" "$thm_blue")" + text="$(get_tmux_option "@catppuccin_date_time_text" "%Y-%m-%d %H:%M")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/directory.sh b/status/directory.sh index f0d1476..8982dbe 100644 --- a/status/directory.sh +++ b/status/directory.sh @@ -1,13 +1,10 @@ show_directory() { local index icon color text module - tmux_batch_setup_status_module "directory" - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_directory_icon" "") - color=$(get_tmux_batch_option "@catppuccin_directory_color" "$thm_pink") - text=$(get_tmux_batch_option "@catppuccin_directory_text" "#{b:pane_current_path}") + icon=$(get_tmux_option "@catppuccin_directory_icon" "") + color=$(get_tmux_option "@catppuccin_directory_color" "$thm_pink") + text=$(get_tmux_option "@catppuccin_directory_text" "#{b:pane_current_path}") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/gitmux.sh b/status/gitmux.sh index edebf5c..9186bc2 100644 --- a/status/gitmux.sh +++ b/status/gitmux.sh @@ -3,13 +3,10 @@ show_gitmux() { local index icon color text module - tmux_batch_setup_status_module "gitmux" - run_tmux_batch_commands - index=$1 - icon="$(get_tmux_batch_option "@catppuccin_gitmux_icon" "󰊢")" - color="$(get_tmux_batch_option "@catppuccin_gitmux_color" "$thm_green")" - text="$(get_tmux_batch_option "@catppuccin_gitmux_text" "#(gitmux \"#{pane_current_path}\")")" + icon="$(get_tmux_option "@catppuccin_gitmux_icon" "󰊢")" + color="$(get_tmux_option "@catppuccin_gitmux_color" "$thm_green")" + text="$(get_tmux_option "@catppuccin_gitmux_text" "#(gitmux \"#{pane_current_path}\")")" module=$( build_status_module "$index" "$icon" "$color" "$text" ) diff --git a/status/host.sh b/status/host.sh index ce2bd6d..8e4bd23 100644 --- a/status/host.sh +++ b/status/host.sh @@ -1,13 +1,10 @@ show_host() { local index icon color text module - tmux_batch_setup_status_module "host" - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_host_icon" "󰒋") - color=$(get_tmux_batch_option "@catppuccin_host_color" "$thm_magenta") - text=$(get_tmux_batch_option "@catppuccin_host_text" "#H") + icon=$(get_tmux_option "@catppuccin_host_icon" "󰒋") + color=$(get_tmux_option "@catppuccin_host_color" "$thm_magenta") + text=$(get_tmux_option "@catppuccin_host_text" "#H") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/kube.sh b/status/kube.sh index 5e4d26d..4e3083c 100644 --- a/status/kube.sh +++ b/status/kube.sh @@ -3,22 +3,15 @@ show_kube() { local index icon color text context_color namespace_color symbol_enabled module - tmux_batch_setup_status_module "kube" - - add_tmux_batch_option "@catppuccin_kube_context_color" - add_tmux_batch_option "@catppuccin_kube_namespace_color" - - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_kube_icon" "󱃾") - color=$(get_tmux_batch_option "@catppuccin_kube_color" "$thm_blue") - context_color=$(get_tmux_batch_option "@catppuccin_kube_context_color" "#{thm_red}") - namespace_color=$(get_tmux_batch_option "@catppuccin_kube_namespace_color" "#{thm_cyan}") + icon=$(get_tmux_option "@catppuccin_kube_icon" "󱃾") + color=$(get_tmux_option "@catppuccin_kube_color" "$thm_blue") + context_color=$(get_tmux_option "@catppuccin_kube_context_color" "#{thm_red}") + namespace_color=$(get_tmux_option "@catppuccin_kube_namespace_color" "#{thm_cyan}") symbol_enabled=${KUBE_TMUX_SYMBOL_ENABLE:-false} - text=$(get_tmux_batch_option "@catppuccin_kube_text" "#(KUBE_TMUX_SYMBOL_ENABLE=$symbol_enabled ${TMUX_PLUGIN_MANAGER_PATH}kube-tmux/kube.tmux 250 '$context_color' '$namespace_color')") + text=$(get_tmux_option "@catppuccin_kube_text" "#(KUBE_TMUX_SYMBOL_ENABLE=$symbol_enabled ${TMUX_PLUGIN_MANAGER_PATH}kube-tmux/kube.tmux 250 '$context_color' '$namespace_color')") - module=$(build_status_module "$index" "$icon" "$color" "$text") + module=$( build_status_module "$index" "$icon" "$color" "$text" ) echo "$module" } diff --git a/status/load.sh b/status/load.sh index 6a87a47..5809423 100644 --- a/status/load.sh +++ b/status/load.sh @@ -1,13 +1,10 @@ show_load() { local index icon color text module - tmux_batch_setup_status_module "load" - run_tmux_batch_commands - index=$1 - icon="$(get_tmux_batch_option "@catppuccin_load_icon" "󰊚")" - color="$(get_tmux_batch_option "@catppuccin_load_color" "$thm_blue")" - text="$(get_tmux_batch_option "@catppuccin_load_text" "#{load_full}")" + icon="$(get_tmux_option "@catppuccin_load_icon" "󰊚")" + color="$(get_tmux_option "@catppuccin_load_color" "$thm_blue")" + text="$(get_tmux_option "@catppuccin_load_text" "#{load_full}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/pomodoro_plus.sh b/status/pomodoro_plus.sh index 48bcab7..a155cd7 100644 --- a/status/pomodoro_plus.sh +++ b/status/pomodoro_plus.sh @@ -3,13 +3,10 @@ show_pomodoro_plus() { local index icon color text module - tmux_batch_setup_status_module "pomodoro_plus" - run_tmux_batch_commands - index=$1 - icon="$( get_tmux_batch_option "@catppuccin_pomodoro_plus_icon" "" )" - color="$( get_tmux_batch_option "@catppuccin_pomodoro_plus_color" "$thm_orange" )" - text="$( get_tmux_batch_option "@catppuccin_pomodoro_plus_text" "#{pomodoro_status}" )" + icon="$( get_tmux_option "@catppuccin_pomodoro_plus_icon" "" )" + color="$( get_tmux_option "@catppuccin_pomodoro_plus_color" "$thm_orange" )" + text="$( get_tmux_option "@catppuccin_pomodoro_plus_text" "#{pomodoro_status}" )" module=$( build_status_module "$index" "$icon" "$color" "$text" ) diff --git a/status/session.sh b/status/session.sh index d7c3c19..6e79cfb 100644 --- a/status/session.sh +++ b/status/session.sh @@ -1,13 +1,10 @@ show_session() { local index icon color text module - tmux_batch_setup_status_module "session" - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_session_icon" "") - color=$(get_tmux_batch_option "@catppuccin_session_color" "#{?client_prefix,$thm_red,$thm_green}") - text=$(get_tmux_batch_option "@catppuccin_session_text" "#S") + icon=$(get_tmux_option "@catppuccin_session_icon" "") + color=$(get_tmux_option "@catppuccin_session_color" "#{?client_prefix,$thm_red,$thm_green}") + text=$(get_tmux_option "@catppuccin_session_text" "#S") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/uptime.sh b/status/uptime.sh index 2b357be..10999de 100644 --- a/status/uptime.sh +++ b/status/uptime.sh @@ -1,13 +1,10 @@ show_uptime() { local index icon color text module - tmux_batch_setup_status_module "uptime" - run_tmux_batch_commands - index=$1 - icon="$(get_tmux_batch_option "@catppuccin_uptime_icon" "󰔟")" - color="$(get_tmux_batch_option "@catppuccin_uptime_color" "$thm_green")" - text="$(get_tmux_batch_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* user.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" + icon="$(get_tmux_option "@catppuccin_uptime_icon" "󰔟")" + color="$(get_tmux_option "@catppuccin_uptime_color" "$thm_green")" + text="$(get_tmux_option "@catppuccin_uptime_text" "#(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* user.*//; s/ day.*, */d /; s/:/h /; s/ min//; s/$/m/')")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/user.sh b/status/user.sh index 217b44c..ea88e75 100644 --- a/status/user.sh +++ b/status/user.sh @@ -1,13 +1,10 @@ show_user() { local index icon color text module - tmux_batch_setup_status_module "user" - run_tmux_batch_commands - index=$1 - icon=$(get_tmux_batch_option "@catppuccin_user_icon" "") - color=$(get_tmux_batch_option "@catppuccin_user_color" "$thm_cyan") - text=$(get_tmux_batch_option "@catppuccin_user_text" "#(whoami)") + icon=$(get_tmux_option "@catppuccin_user_icon" "") + color=$(get_tmux_option "@catppuccin_user_color" "$thm_cyan") + text=$(get_tmux_option "@catppuccin_user_text" "#(whoami)") module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/status/weather.sh b/status/weather.sh index c6bfbc2..b6cb6fe 100644 --- a/status/weather.sh +++ b/status/weather.sh @@ -3,13 +3,10 @@ show_weather() { local index icon color text module - tmux_batch_setup_status_module "weather" - run_tmux_batch_commands - index=$1 - icon="$(get_tmux_batch_option "@catppuccin_weather_icon" "")" - color="$(get_tmux_batch_option "@catppuccin_weather_color" "$thm_yellow")" - text="$(get_tmux_batch_option "@catppuccin_weather_text" "#{weather}")" + icon="$(get_tmux_option "@catppuccin_weather_icon" "")" + color="$(get_tmux_option "@catppuccin_weather_color" "$thm_yellow")" + text="$(get_tmux_option "@catppuccin_weather_text" "#{weather}")" module=$(build_status_module "$index" "$icon" "$color" "$text") diff --git a/utils/tmux_utils.sh b/utils/tmux_utils.sh index 7aa3151..e43f61f 100644 --- a/utils/tmux_utils.sh +++ b/utils/tmux_utils.sh @@ -18,9 +18,11 @@ get_tmux_option() { if [ "$value" = "null" ] then echo "" + else echo "$value" fi + else echo "$default" @@ -38,9 +40,11 @@ get_interpolated_tmux_option() { if [ "$value" = "null" ] then echo "" + else do_color_interpolation "$value" fi + else echo "$default" fi @@ -57,95 +61,3 @@ setw() { local value=$2 tmux_commands+=(set-window-option -gq "$option" "$value" ";") } - -get_tmux_batch_option() { - local option default value - option="$1" - default="$2" - - for option_index in "${!tmux_batch_options[@]}"; do - IFS=":" read -r read_option read_value <<<"${tmux_batch_options[$option_index]}" - if [[ "$read_option" == "$option" ]]; then - echo "$read_value" - return - fi - done - - echo "$default" -} - -get_interpolated_tmux_batch_option() { - local option default value - option="$1" - default="$2" - - for option_index in "${!tmux_batch_options[@]}"; do - IFS=":" read -r read_option read_value <<<"${tmux_batch_options[$option_index]}" - if [[ "$read_option" == "$option" ]]; then - do_color_interpolation "$read_value" - return - fi - done - - echo "$default" -} - -add_tmux_batch_option() { - local option - option="$1" - - tmux_batch_options_commands+=("show-option -gq $option ;") -} - -set_tmux_batch_option() { - local option value - option="$1" - value="$2" - - # NOTE: don't check for duplicates just append - # for option_index in "${!tmux_batch_options[@]}"; do - # read -d ':' -r read_option <<<"${tmux_batch_options[$option_index]}" - # if [[ "$read_option" == "$option" ]]; then - # tmux_batch_options["$option_index"]="$option:$value" - # return - # fi - # done - - tmux_batch_options+=("$option:$value") -} - -run_tmux_batch_commands() { - local temp - - # shellcheck disable=SC2048,SC2086 - while IFS=' ' read -r option value; do - if [ -n "$value" ]; then - if [ "$value" = "null" ]; then - set_tmux_batch_option "$option" "" - else - temp="${value%\"}" - temp="${temp#\"}" - set_tmux_batch_option "$option" "$temp" - fi - fi - done < <(tmux ${tmux_batch_options_commands[*]}) - - tmux_batch_options_commands=() -} - -tmux_batch_setup_status_module() { - local name="$1" - - # Don't want to run commands set before since we can't update - # `tmux_batch_options` for it - # shellcheck disable=SC2034 - tmux_batch_options_commands=() - - # No need to check previous options - # shellcheck disable=SC2034 - tmux_batch_options=() - - add_tmux_batch_option "@catppuccin_${name}_icon" - add_tmux_batch_option "@catppuccin_${name}_color" - add_tmux_batch_option "@catppuccin_${name}_text" -} diff --git a/window/window_current_format.sh b/window/window_current_format.sh index 511d0c3..0a17bcf 100644 --- a/window/window_current_format.sh +++ b/window/window_current_format.sh @@ -1,22 +1,11 @@ show_window_current_format() { local number color background text fill current_window_format - # shellcheck disable=SC2034 - local tmux_batch_options_commands=() - # shellcheck disable=SC2034 - local tmux_batch_options=() - - add_tmux_batch_option "@catppuccin_window_current_color" - add_tmux_batch_option "@catppuccin_window_current_background" - add_tmux_batch_option "@catppuccin_window_current_text" - add_tmux_batch_option "@catppuccin_window_current_fill" - - run_tmux_batch_commands number="#I" - color=$(get_tmux_batch_option "@catppuccin_window_current_color" "$thm_orange") - background=$(get_tmux_batch_option "@catppuccin_window_current_background" "$thm_bg") - text="$(get_tmux_batch_option "@catppuccin_window_current_text" "#{b:pane_current_path}")" # use #W for application instead of directory - fill="$(get_tmux_batch_option "@catppuccin_window_current_fill" "number")" # number, all, none + color=$(get_tmux_option "@catppuccin_window_current_color" "$thm_orange") + background=$(get_tmux_option "@catppuccin_window_current_background" "$thm_bg") + text="$(get_tmux_option "@catppuccin_window_current_text" "#{b:pane_current_path}")" # use #W for application instead of directory + fill="$(get_tmux_option "@catppuccin_window_current_fill" "number")" # number, all, none current_window_format=$(build_window_format "$number" "$color" "$background" "$text" "$fill") diff --git a/window/window_default_format.sh b/window/window_default_format.sh index e426181..2c758ba 100644 --- a/window/window_default_format.sh +++ b/window/window_default_format.sh @@ -1,22 +1,11 @@ show_window_default_format() { local number color background text fill default_window_format - # shellcheck disable=SC2034 - local tmux_batch_options_commands=() - # shellcheck disable=SC2034 - local tmux_batch_options=() - - add_tmux_batch_option "@catppuccin_window_default_color" - add_tmux_batch_option "@catppuccin_window_default_background" - add_tmux_batch_option "@catppuccin_window_default_text" - add_tmux_batch_option "@catppuccin_window_default_fill" - - run_tmux_batch_commands number="#I" - color=$(get_tmux_batch_option "@catppuccin_window_default_color" "$thm_blue") - background=$(get_tmux_batch_option "@catppuccin_window_default_background" "$thm_gray") - text="$(get_tmux_batch_option "@catppuccin_window_default_text" "#{b:pane_current_path}")" # use #W for application instead of directory - fill="$(get_tmux_batch_option "@catppuccin_window_default_fill" "number")" # number, all, none + color=$(get_tmux_option "@catppuccin_window_default_color" "$thm_blue") + background=$(get_tmux_option "@catppuccin_window_default_background" "$thm_gray") + text="$(get_tmux_option "@catppuccin_window_default_text" "#{b:pane_current_path}")" # use #W for application instead of directory + fill="$(get_tmux_option "@catppuccin_window_default_fill" "number")" # number, all, none default_window_format=$(build_window_format "$number" "$color" "$background" "$text" "$fill") From df238924bcf90141519b4225aad92d6a1ba16e50 Mon Sep 17 00:00:00 2001 From: j-xella Date: Fri, 9 Aug 2024 20:20:58 +0100 Subject: [PATCH 59/72] Don't add icon separator if there is no icon for a status module (#265) Implemented with advice of @vdbe Co-authored-by: Aleksandr Jakusev --- builder/module_builder.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/builder/module_builder.sh b/builder/module_builder.sh index ad9e46c..cfb9e5e 100644 --- a/builder/module_builder.sh +++ b/builder/module_builder.sh @@ -40,5 +40,9 @@ build_status_module() { local show_left_separator="#[fg=$color,bg=default,nobold,nounderscore,noitalics]$status_left_separator" fi + if [ -z "$icon" ] ; then + show_icon="" + fi + echo "$show_left_separator$show_icon$show_text$show_right_separator" } From 99013fafe6a98416079b3b84751f2eb540e17c79 Mon Sep 17 00:00:00 2001 From: vdbe <44153531+vdbe@users.noreply.github.com> Date: Mon, 12 Aug 2024 11:52:27 +0000 Subject: [PATCH 60/72] perf: batch tmux show (#288) * feat: batch tmux show options * dont check for duplicates * fix: status modules * batch and cache build_window_icon * perf: batch new options * chore: tmux_batch_setup_module -> tmux_batch_setup_status_module * fixup! perf: batch tmux show-options (#240) Changes the line separator used by tmux_batch from ':' to the ascii unit separator FIXES: #240 * fix: string escaping of `..._tmux_batch_...` `tmux show -v