
This architecture is now more extensible since all the display variables are decoupled from where the options get set. This will make customizing the theme with custom scripts more practical.
92 lines
2.8 KiB
Bash
Executable file
92 lines
2.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
main() {
|
|
get-tmux-option() {
|
|
local option value default
|
|
option="$1"
|
|
default="$2"
|
|
value="$(tmux show-option -gqv "$option")"
|
|
|
|
if [ -n "$value" ]; then
|
|
echo "$value"
|
|
else
|
|
echo "$default"
|
|
fi
|
|
}
|
|
|
|
set() {
|
|
local option=$1
|
|
local value=$2
|
|
tmux set-option -gq "$option" "$value"
|
|
}
|
|
|
|
setw() {
|
|
local option=$1
|
|
local value=$2
|
|
tmux set-window-option -gq "$option" "$value"
|
|
}
|
|
|
|
local theme
|
|
local window_tabs_enabled
|
|
theme="$(get-tmux-option "@catppuccin_flavour" "mocha")"
|
|
window_tabs_enabled="$(get-tmux-option "@catppuccin_window_tabs_enabled" "off")"
|
|
|
|
# NOTE: Pulling in the selected theme by the theme that's being set as local
|
|
# variables.
|
|
sed -E 's/^(.+=)/local \1/' \
|
|
> catppuccin-selected-theme.tmuxtheme \
|
|
< "${CURRENT_DIR}/catppuccin-${theme}.tmuxtheme"
|
|
|
|
source catppuccin-selected-theme.tmuxtheme
|
|
|
|
# status
|
|
set status "on"
|
|
set status-bg "${thm_bg}"
|
|
set status-justify "left"
|
|
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
|
|
set pane-border-style "fg=${thm_gray}"
|
|
set pane-active-border-style "fg=${thm_blue}"
|
|
|
|
# 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
|
|
|
|
# These variables are the defaults so that the setw and set calls are easier to parse.
|
|
readonly show_window="#[fg=$thm_pink,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_pink,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #W #{?client_prefix,#[fg=$thm_red]"
|
|
readonly show_session="#[fg=$thm_green]}#[bg=$thm_gray]#{?client_prefix,#[bg=$thm_red],#[bg=$thm_green]}#[fg=$thm_bg] #[fg=$thm_fg,bg=$thm_gray] #S "
|
|
|
|
# Right column 1 by default shows the Window name.
|
|
local right_column1=$show_window
|
|
|
|
# Right column 2 by default shows the current Session name.
|
|
local right_column2=$show_session
|
|
|
|
# Window status by default shows the current directory basename.
|
|
local window_status_format="#[fg=$thm_bg,bg=$thm_blue] #I #[fg=$thm_fg,bg=$thm_gray] #{b:pane_current_path} "
|
|
local window_status_current_format="#[fg=$thm_bg,bg=$thm_orange] #I #[fg=$thm_fg,bg=$thm_bg] #{b:pane_current_path} "
|
|
|
|
set status-left ""
|
|
|
|
set status-right "${right_column1},${right_column2}"
|
|
|
|
setw window-status-format "${window_status_format}"
|
|
setw window-status-current-format "${window_status_current_format}"
|
|
|
|
# --------=== Modes
|
|
#
|
|
setw clock-mode-colour "${thm_blue}"
|
|
setw mode-style "fg=${thm_pink} bg=${thm_black4} bold"
|
|
}
|
|
|
|
main "$@"
|