This commit is contained in:
Alexander Bocken 2020-06-09 18:33:27 +02:00
parent 5729ed7c51
commit cacd807a9c

14
bt
View File

@ -10,7 +10,7 @@ pair
unpair" unpair"
#Checks for necessary programs to be present. Very unlikely not to be present but let's just err on the safer side. #Checks for necessary programs to be present. Very unlikely not to be present but let's just err on the safer side.
for prog in dmenu bluetoothctl awk cat; do for prog in dmenu bluetoothctl awk cat date nl; do
if ! hash "$prog" 2>/dev/null; then if ! hash "$prog" 2>/dev/null; then
printf 'bthandler: %s: command not found\n' "$prog" >&2 printf 'bthandler: %s: command not found\n' "$prog" >&2
exit 127 exit 127
@ -40,12 +40,17 @@ cleanup(){
pair(){ pair(){
#since this function can get called indefinitely, make sure to always be scanning and controller has power in the case that it got deactived by some other process. #since this function can get called indefinitely, make sure to always be scanning and controller has power in the case that it got deactived by some other process.
bluetoothctl power on bluetoothctl power on &>/dev/null &
bluetoothctl scan on &>/dev/null & bluetoothctl scan on &>/dev/null &
#check whether $SCAN_PERIOD seconds has already passed since starting scanning, if not, wait for the rest of that time. #check whether $SCAN_PERIOD seconds has already passed since starting scanning, if not, wait for the rest of that time.
if [ $((( "$(date +'%s')" - "$start_scan" ))) -lt $SCAN_PERIOD ]; then if [ $((( "$(date +'%s')" - "$start_scan" ))) -lt $SCAN_PERIOD ]; then
sleep_period="$((( "$SCAN_PERIOD" - "$( date +'%s')" + "$start_scan" )))" sleep_period="$((( "$SCAN_PERIOD" - "$( date +'%s')" + "$start_scan" )))"
if [ "$sleep_period" -eq 1 ]; then
notify-send "Bluetooth" "Searching for devices, please wait 1 second"
else
notify-send "Bluetooth" "Searching for devices, please wait $sleep_period seconds" notify-send "Bluetooth" "Searching for devices, please wait $sleep_period seconds"
fi
sleep "$sleep_period" sleep "$sleep_period"
fi fi
echo "$paired_devices" > /tmp/paired_devices echo "$paired_devices" > /tmp/paired_devices
@ -64,7 +69,6 @@ pair(){
bluetoothctl pair "$dev_id" && sleep 2 bluetoothctl pair "$dev_id" && sleep 2
bluetoothctl connect "$dev_id" bluetoothctl connect "$dev_id"
#if device is not already hard coded as paired, add to paired devices list #if device is not already hard coded as paired, add to paired devices list
#echo grep: "$( grep "$dev_id" "$PAIRLIST" )"
if grep -q "$dev_id" "$PAIRLIST" if grep -q "$dev_id" "$PAIRLIST"
then then
echo Device "$dev_id" "$choice" >> "$PAIRLIST" echo Device "$dev_id" "$choice" >> "$PAIRLIST"
@ -95,12 +99,8 @@ case $choice in
esac esac
if [ -n "$choice" ]; then if [ -n "$choice" ]; then
#echo paired_devices: "$( echo "$paired_devices" | nl )"
dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}') dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}')
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}') dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}')
#echo dev_no:"$dev_no"
#echo dev_id:"$dev_id"
#echo choice:"$choice"
bluetoothctl power on bluetoothctl power on
bluetoothctl pair "$dev_id" bluetoothctl pair "$dev_id"
bluetoothctl connect "$dev_id" bluetoothctl connect "$dev_id"