63 lines
1.2 KiB
Bash
Executable File
63 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
DMENU='dmenu'
|
|
declare -A DEVICES
|
|
bt_choice=""
|
|
|
|
function get-bt-devices() {
|
|
DEVICES=()
|
|
IFS="\n"
|
|
while read -r device; do
|
|
address=${device:7:17}
|
|
name=${device:25}
|
|
echo "$name - $address"
|
|
DEVICES+=(["$name"]="$address")
|
|
done <<< "$(bluetoothctl devices)"
|
|
}
|
|
|
|
function bt-device-choice() {
|
|
get-bt-devices
|
|
device_list=""
|
|
for device in "${!DEVICES[@]}"; do
|
|
device_list+="$device\n";
|
|
done
|
|
device_list="${device_list%}"
|
|
|
|
bt_choice=$(echo -e "$device_list" | "$DMENU" -p "[bt] Choose device" | cut -f 1)
|
|
}
|
|
|
|
function bt-connect() {
|
|
bt-device-choice
|
|
bluetoothctl connect "${DEVICES[$bt_choice]}"
|
|
}
|
|
|
|
function bt-disconnect() {
|
|
bt-device-choice
|
|
bluetoothctl disconnect "${DEVICES[bt_choice]}"
|
|
}
|
|
|
|
function bt-reconnect() {
|
|
bt-device-choice
|
|
bluetoothctl disconnect "${DEVICES[bt_choice]}"
|
|
bluetoothctl connect "${DEVICES[$bt_choice]}"
|
|
}
|
|
|
|
function bt-disable() {
|
|
rfkill block bluetooth
|
|
}
|
|
|
|
function bt-enable() {
|
|
rfkill unblock bluetooth
|
|
}
|
|
|
|
choice=$(echo -e "connect\ndisconnect\nreconnect\ndisable\nenable" | "$DMENU" -p [bt] | cut -f 1)
|
|
|
|
case "$choice" in
|
|
connect) bt-connect ;;
|
|
disconnect) bt-disconnect ;;
|
|
reconnect) bt-reconnect ;;
|
|
disable) bt-disable ;;
|
|
enable) bt-enable ;;
|
|
esac |