Files
illogical-impulse/early/.config/eww/scripts/audiolevels
T
2024-02-22 15:35:06 +07:00

84 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/bash
dostuff(){
sinks=$(pactl list sink-inputs \
| grep -e "Sink Input" \
| sed 's/Sink Input #//')
names=$(pactl list sink-inputs \
| sed 's/"//g' \
| sed 's/application-name://' \
| grep -e "application.name" \
| sed 's/application.name = //' \
| sed 's/\t\t//' )
vols=$(pactl list sink-inputs \
| grep -e "Volume:" \
| sed 's/Volume: front-left: //' \
| sed 's/front-right: //' \
| sed 's/front-right: //' \
| tr " " "\n" \
| grep -e % \
| sed 's/%//g' )
binaries=$(pactl list sink-inputs \
| grep -e 'application.process.binary' -e 'application.icon_name' \
| sed 's/\t//g' \
| sed 's/application.process.binary = //g' \
| sed 's/application.icon_name = //g' \
| sed 's/"//g' )
# echo "-=-=-=-=-=-=-=-=- Debug: Raw value -=-=-=-=-=-=-=-=-"
# echo "$sinks"
# echo "$names"
# echo "$vols"
IFS=$'\n'
sinkarr=($(echo "$sinks"))
namearr=($(echo "$names"))
volarr=($(echo "$vols"))
iconarr=($(echo "$binaries"))
# Get icons
for i in "${!iconarr[@]}"; do
iconarr[$i]=$(geticons -t "$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" ${iconarr[i]} | head -n 1)
done
# Functions
sanitize() {
echo "$1" | sed 's/"/\"/g'
}
geticon() {
# notify-send "${volarr[$((i*2))]}"
if [ "${volarr[$(($1*2))]}" -eq "0" ]; then
echo ""
else
echo ""
fi
}
# Print final JSON
printf '['
for i in "${!sinkarr[@]}"; do
if [ $i -ne 0 ]; then
printf ', '
fi
echo -n '{''"sink": "'"${sinkarr[$i]}"'", "name": "'"${namearr[$i]}"'", "volume": "'"${volarr[$((i*2))]}"'"}'
# echo -n '{''"sink": "'"${sinkarr[$i]}"'", "icon": "'"${iconarr[$i]}"'", "name": "'"${namearr[$i]}"'", "volume": "'"${volarr[$((i*2))]}"'"}'
done
printf ']\n'
# echo "$sinks"
# echo "$names"
# echo "$vols"
}
cd ~/.config/eww
# dostuff
scripts/audioapps
if [ "$1" == "--once" ]; then
exit 0
else
pactl subscribe | rg --line-buffered "on sink" | while read -r _; do
scripts/audioapps
done
fi