
* added middle separator for status * fixed color + updated readme * Update README.md Co-authored-by: vdbe <44153531+vdbe@users.noreply.github.com> --------- Co-authored-by: vdbe <44153531+vdbe@users.noreply.github.com>
223 lines
9.8 KiB
Bash
Executable file
223 lines
9.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Set path of script
|
|
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/interpolate_utils.sh
|
|
source "${PLUGIN_DIR}/utils/interpolate_utils.sh"
|
|
# shellcheck source=./utils/module_utils.sh
|
|
source "${PLUGIN_DIR}/utils/module_utils.sh"
|
|
|
|
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_flavor"
|
|
|
|
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")"
|
|
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
|
|
local color_interpolation=()
|
|
local color_values=()
|
|
local temp
|
|
|
|
theme="$(get_tmux_batch_option "@catppuccin_flavor" "")"
|
|
|
|
# NOTE: For backwards compatibility remove before 1.0.0 and set default for
|
|
# `@catppuccin_flavor` from `""` to `"mocha"`
|
|
if [ -z "$theme" ]; then
|
|
theme="$(get_tmux_option "@catppuccin_flavour" "")"
|
|
if [ -n "$theme" ]; then
|
|
tmux_echo "catppuccin warning: \\\"@catppuccin_flavour\\\" has been deprecated use \\\"@catppuccin_flavor\\\"" 103
|
|
else
|
|
theme="mocha"
|
|
fi
|
|
fi
|
|
|
|
# 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
|
|
# shellcheck source=./catppuccin-frappe.tmuxtheme
|
|
while IFS='=' read -r key val; do
|
|
# Skip over lines containing comments.
|
|
# (Lines starting with '#').
|
|
[ "${key##\#*}" ] || continue
|
|
|
|
# '$key' stores the key.
|
|
# '$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+=("${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_border_style"
|
|
add_tmux_batch_option "@catppuccin_pane_active_border_style"
|
|
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"
|
|
add_tmux_batch_option "@catppuccin_status_left_separator"
|
|
add_tmux_batch_option "@catppuccin_status_middle_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")
|
|
# shellcheck disable=SC2121
|
|
set status "$status_default"
|
|
|
|
status_justify=$(get_tmux_batch_option "@catppuccin_status_justify" "left")
|
|
set status-justify "$status_justify"
|
|
|
|
status_background=$(get_tmux_batch_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
|
|
message_background="$(do_color_interpolation "$status_background")"
|
|
set status-bg "${message_background}"
|
|
fi
|
|
fi
|
|
|
|
set status-left-length "100"
|
|
set status-right-length "100"
|
|
|
|
# messages
|
|
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_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"
|
|
|
|
# panes
|
|
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_border_style=$(
|
|
get_interpolated_tmux_batch_option "@catppuccin_pane_border_style" "fg=${thm_gray}"
|
|
)
|
|
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_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"
|
|
setw pane-active-border-style "$pane_active_border_style"
|
|
setw pane-border-style "$pane_border_style"
|
|
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_interpolated_tmux_batch_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
|
|
|
|
# NOTE: update default to `"no"` when removing the backwards compatibility for
|
|
# `@catppuccin_window_status_enable` and
|
|
# `@catppuccin_window_status_icon_enable` in ./builder/window_builder.sh
|
|
window_status=$(get_tmux_batch_option "@catppuccin_window_status" "no") # no, icon, text
|
|
|
|
window_format=$(load_modules "window_default_format" "$modules_custom_path" "$modules_window_path")
|
|
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 "$(do_color_interpolation "$window_current_format")"
|
|
|
|
# status module
|
|
local status_left_separator status_middle_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_middle_separator=$(get_tmux_batch_option "@catppuccin_status_middle_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_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_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")"
|
|
|
|
# modes
|
|
setw clock-mode-colour "${thm_blue}"
|
|
setw mode-style "fg=${thm_pink} bg=${thm_black4} bold"
|
|
|
|
tmux "${tmux_commands[@]}"
|
|
}
|
|
|
|
main "$@"
|