diff --git a/.local/share/bin/waybar_cava.sh b/.local/share/bin/waybar_cava.sh new file mode 100755 index 0000000..2a88172 --- /dev/null +++ b/.local/share/bin/waybar_cava.sh @@ -0,0 +1,118 @@ +#!/bin/env bash +#----- Optimized bars animation without much CPU usage increase -------- +#----- Optimized bars animation without much CPU usage increase pt2 -------- + +scrDir=$(dirname "$(realpath "$0")") +# shellcheck source=/dev/null +. "${scrDir}/globalcontrol.sh" +usage() { + cat < Specify the characters to use for the bar animation (default: ▁▂▃▄▅▆▇█). + --width Specify the width of the bar. + --range Specify the range of the bar. + --help Display this help message and exit. + --restart Restart the waybar_cava. + --mode Specify the standby mode for waybar cava (default: 0). +HELP + exit 1 +} + +# Parse command line arguments using getopt +if ! ARGS=$(getopt -o "hr" -l "help,bar:,width:,range:,restart,mode:" -n "$0" -- "$@"); then + usage +fi + +eval set -- "$ARGS" +while true; do + case "$1" in + --help | -h) + usage + ;; + --bar) + waybar_cava_bar="$2" + shift 2 + ;; + --width) + waybar_cava_width="$2" + shift 2 + ;; + --range) + waybar_cava_range="$2" + shift 2 + ;; + --restart) # restart the waybar_cava + pkill -f "cava -p /tmp/bar_cava_config" + exit 0 + ;; + --mode) + waybar_cava_stbmode="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + usage + ;; + esac +done + +bar="${waybar_cava_bar:-▁▂▃▄▅▆▇█}" +dict="s/;//g" + +# Calculate the length of the bar outside the loop +bar_length=${#bar} +bar_width=${waybar_cava_width:-${bar_length}} +bar_range=${waybar_cava_range:-$((bar_length - 1))} + +standby_mode=${waybar_cava_stbmode:-3} # 0:clean, 1:blank, 2:full,3:last +if [ "${standby_mode}" -le 0 ]; then unset standby_bar; fi +# +# Create dictionary to replace char with bar +i=0 +while [ $i -lt "${bar_length}" ] || [ $i -lt "${bar_width}" ]; do + if [ $i -lt "${bar_length}" ]; then + dict="$dict;s/$i/${bar:$i:1}/g" + fi + if [ $i -lt "${bar_width}" ] && [ "${standby_mode}" -gt 0 ]; then + if [ "${standby_mode}" -eq 2 ]; then + standby_bar="$standby_bar${bar:$i:1}" + elif [ "${standby_mode}" -eq 1 ]; then + standby_bar="$standby_bar " + fi + fi + ((i++)) +done + +# Create cava config +config_file="/tmp/bar_cava_config" +cat >"$config_file" <