#!/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