71 lines
1.9 KiB
Bash
Executable file
71 lines
1.9 KiB
Bash
Executable file
#!/bin/sh -x
|
|
# Created by λmolinae
|
|
|
|
checkstate() {
|
|
if [ "$(bluetoothctl show | grep "Powered: yes")" ]; then
|
|
echo " Bluetooth ON"
|
|
else
|
|
echo " Bluetooth OFF"
|
|
fi
|
|
}
|
|
|
|
switchstate() {
|
|
case "$(checkstate | fuzzel -d)" in
|
|
" ON")
|
|
bluetoothctl power off
|
|
notify-send "Bluetooth" "Bluetooth is disabled"
|
|
;;
|
|
" OFF")
|
|
bluetoothctl power on
|
|
notify-send "Bluetooth" "Bluetooth is enabled"
|
|
;;
|
|
*) exit ;;
|
|
esac
|
|
}
|
|
|
|
scandevices() {
|
|
# https://github.com/bluez/bluez/issues/826
|
|
notify-send "Bluetooth" "Scanning for devices"
|
|
bluetoothctl --timeout 5 scan on
|
|
devices=$(bluetoothctl devices | awk '{$1=$2=""; print substr($0,3)}')
|
|
if [ -z "$devices" ]; then
|
|
notify-send "Bluetooth" "Error: No devices were found"
|
|
exit 1
|
|
fi
|
|
|
|
# TODO: Remove previously connected devices.
|
|
selection="$(printf "%s\n" "$devices" | fuzzel -d -p "Available devices: ")"
|
|
if [ -n "$selection" ]; then
|
|
mac=$(bluetoothctl devices | grep "$selection" | awk '{print $2}')
|
|
bluetoothctl connect "$mac"
|
|
notify-send "Bluetooth" "Connecting to $selection"
|
|
fi
|
|
}
|
|
|
|
toggledisc() {
|
|
if [ "$(bluetoothctl show | grep "Discoverable: yes")" ]; then
|
|
bluetoothctl discoverable off
|
|
notify-send "Bluetooth" "Discoverable off"
|
|
else
|
|
bluetoothctl discoverable on
|
|
notify-send "Bluetooth" "Set device as discoverable for 3 minutes"
|
|
fi
|
|
}
|
|
|
|
togglepair() {
|
|
if [ "$(bluetoothctl show | grep "Pairable: yes")" ]; then
|
|
bluetoothctl pairable off
|
|
notify-send "Bluetooth" "Pairable off"
|
|
else
|
|
bluetoothctl pairable on
|
|
notify-send "Bluetooth" "Device is now pairable"
|
|
fi
|
|
}
|
|
|
|
case $(printf "%s\n" " Connect Device" " Toggle discoverable" " Toggle Pairable" " Change State" | fuzzel -d) in
|
|
" Connect Device") scandevices ;;
|
|
" Toggle discoverable") toggledisc ;;
|
|
" Toggle Pairable") togglepair ;;
|
|
" Change State") switchstate ;;
|
|
*) exit ;;
|
|
esac
|