63 lines
1.6 KiB
Bash
Executable File
63 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
## Copyright (C) 2020-2024 Aditya Shakya <adi1090x@gmail.com>
|
|
##
|
|
## Bluetooth Executor For Tint2
|
|
|
|
# Checks if bluetooth controller is powered on
|
|
power_on() {
|
|
if bluetoothctl show | grep -q "Powered: yes"; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Checks if a device is connected
|
|
device_connected() {
|
|
device_info=$(bluetoothctl info "$1")
|
|
if echo "$device_info" | grep -q "Connected: yes"; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Prints a short string with the current bluetooth status
|
|
# Useful for status bars like polybar, etc.
|
|
print_status() {
|
|
if power_on; then
|
|
if [[ -z `bluetoothctl info "$device" | grep "Alias" | cut -d ' ' -f 2-` ]]; then
|
|
echo " On"
|
|
fi
|
|
|
|
paired_devices_cmd="devices Paired"
|
|
# Check if an outdated version of bluetoothctl is used to preserve backwards compatibility
|
|
if (( $(echo "$(bluetoothctl version | cut -d ' ' -f 2) < 5.65" | bc -l) )); then
|
|
paired_devices_cmd="paired-devices"
|
|
fi
|
|
|
|
mapfile -t paired_devices < <(bluetoothctl $paired_devices_cmd | grep Device | cut -d ' ' -f 2)
|
|
counter=0
|
|
|
|
for device in "${paired_devices[@]}"; do
|
|
if device_connected "$device"; then
|
|
device_alias=$(bluetoothctl info "$device" | grep "Alias" | cut -d ' ' -f 2-)
|
|
|
|
if [ $counter -gt 0 ]; then
|
|
echo " $device_alias"
|
|
else
|
|
echo " $device_alias"
|
|
fi
|
|
|
|
((counter++))
|
|
fi
|
|
done
|
|
else
|
|
echo " Off"
|
|
fi
|
|
}
|
|
|
|
# Print Status
|
|
print_status
|