New TMUX statusbar and config cleanup
This commit is contained in:
@@ -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"
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/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
|
||||
# shellcheck source=/dev/null
|
||||
source "$module_path"
|
||||
loaded_modules="$loaded_modules$( "show_$module_name" "$module_index" )"
|
||||
module_index+=1
|
||||
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\\\"" 100
|
||||
else
|
||||
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" 102
|
||||
|
||||
|
||||
done
|
||||
|
||||
echo "$loaded_modules"
|
||||
}
|
||||
151
config-files/.config/tmux/plugins/theme/utils/tmux_utils.sh
Normal file
151
config-files/.config/tmux/plugins/theme/utils/tmux_utils.sh
Normal file
@@ -0,0 +1,151 @@
|
||||
#!/bin/sh
|
||||
|
||||
tmux_echo() {
|
||||
local hook
|
||||
hook="after-new-session[$2]"
|
||||
|
||||
tmux set-hook -g "$hook" "run-shell 'echo -e \"$1\"'; set-hook -gu \"$hook\""
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
tmux_commands+=(set-option -gq "$option" "$value" ";")
|
||||
}
|
||||
|
||||
setw() {
|
||||
local option=$1
|
||||
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,SC2162
|
||||
while IFS=' ' read 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"
|
||||
}
|
||||
Reference in New Issue
Block a user