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.
91 lines
2.4 KiB
Bash
Executable File
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
|
|
|