Files
dotfiles/.config/polybar/scripts/bluetooth.sh
Julian Prein b96d32996b *: Wrap lines at 80 columns where appropriate
Wrap lines at 80 columns where appropriate and I had the energy to think
about how/where to wrap.

There are still lines longer than that, which I plan to wrap in the
future. But that is enough for now.
2022-06-23 23:59:00 +02:00

91 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# See https://github.com/polybar/polybar-scripts/pull/237
bluetooth_print() {
bluetoothctl | while read -r; do
if [[ "$(systemctl is-active "bluetooth.service")" = "active" ]]; then
devices_paired=$(
echo paired-devices \
| bluetoothctl \
| sed -n '/paired-devices/,$p' \
| grep Device \
| cut -d ' ' -f 2
)
counter=0
echo "$devices_paired" | while read -r line; do
device_info=$(echo "info $line" | bluetoothctl)
if echo "$device_info" | grep -q "Connected: yes"; then
device_alias=$(
echo "$device_info" \
| grep "Alias" \
| cut -d ' ' -f 2-
)
if [[ $counter -gt 0 ]]; then
printf ", %s" "$device_alias"
else
printf ": %s" "$device_alias"
fi
counter=$((counter + 1))
fi
done
if echo show | bluetoothctl | grep -q "Powered: no"; then
printf ''
fi
printf '\n'
else
echo ""
fi
done
}
bluetooth_toggle() {
if echo show | bluetoothctl | grep -q "Powered: no"; then
echo "power on" | bluetoothctl >> /dev/null
sleep 1
devices_paired=$(
echo paired-devices
| bluetoothctl \
| sed -n '/paired-devices/,$p' \
| grep Device \
| cut -d ' ' -f 2
)
echo "$devices_paired" | while read -r line; do
echo "connect $line" | bluetoothctl >> /dev/null
done
else
devices_paired=$(
echo paired-devices \
| bluetoothctl \
| sed -n '/paired-devices/,$p' \
| grep Device \
| cut -d ' ' -f 2
)
echo "$devices_paired" | while read -r line; do
device_info=$(echo "info $line" | bluetoothctl)
if echo "$device_info" | grep -q "Connected: yes"; then
echo "disconnect $line" | bluetoothctl >> /dev/null
fi
done
echo "power off" | bluetoothctl >> /dev/null
fi
}
case "$1" in
--toggle)
bluetooth_toggle
;;
*)
bluetooth_print
;;
esac