#!/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" <