
* feat: improve transparent background * fix: fix for config2 * chore: remove status right separator invert * chore: update config presets in documentation
122 lines
5.2 KiB
Bash
Executable file
122 lines
5.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Set path of script
|
|
PLUGIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# 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"
|
|
|
|
main() {
|
|
# 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
|
|
# https://github.com/dylanaraps/pure-sh-bible#parsing-a-keyval-file
|
|
while IFS='=' read -r key val; do
|
|
# Skip over lines containing comments.
|
|
# (Lines starting with '#').
|
|
[ "${key##\#*}" ] || continue
|
|
|
|
# '$key' stores the key.
|
|
# '$val' stores the value.
|
|
eval "local $key"="$val"
|
|
done <"${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme"
|
|
|
|
# status general
|
|
local status_default=$(get_tmux_option "@catppuccin_status_default" "on")
|
|
set status "$status_default"
|
|
|
|
local status_justify=$(get_tmux_option "@catppuccin_status_justify" "left")
|
|
set status-justify "$status_justify"
|
|
|
|
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"
|
|
|
|
# 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=$(
|
|
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")
|
|
|
|
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"
|
|
|
|
# window
|
|
local 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
|
|
|
|
local 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")
|
|
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_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
|
|
setw clock-mode-colour "${thm_blue}"
|
|
setw mode-style "fg=${thm_pink} bg=${thm_black4} bold"
|
|
|
|
tmux "${tmux_commands[@]}"
|
|
}
|
|
|
|
main "$@"
|