Only lists connected devices in disconnect menu

Does not list all paired devices anymore
Also, if there is only one connected device,
immedieately disconnect that device
	modified:   README.md
	modified:   bt
This commit is contained in:
Alexander Bocken 2020-07-06 12:32:16 +02:00
parent 231e9bb37b
commit 38ba67b4fa
2 changed files with 19 additions and 12 deletions

View File

@ -52,4 +52,5 @@ If you have troubles with an uninstall, _additionally_ run `which bt | xargs rm`
- update bthandler internal paired devices list if something new shows up via `bluetoothctl paired-devices` not already listed in the paired devices file -> **Implemented** - update bthandler internal paired devices list if something new shows up via `bluetoothctl paired-devices` not already listed in the paired devices file -> **Implemented**
- only show disconnect option if devices are already connected -> **Implemented** - only show disconnect option if devices are already connected -> **Implemented**
- find a way to get something similar to `grep -vf` without the need of temp files. - find a way to get something similar to `grep -vf` without the need of temp files.
- only list connected devices to disconnect from, not all paired devices - only list connected devices to disconnect from, not all paired devices -> **Implemented**
- only list not trusted devices in trust menu

28
bt
View File

@ -172,17 +172,23 @@ case $choice in
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}' )
bluetoothctl trust "$dev_id" bluetoothctl trust "$dev_id"
fi;; fi;;
"disconnect") if [ "$( echo "$paired_devices" | wc -l )" -gt 1 ] "disconnect")
then #search through all devices which are connected and only list those as options
choice=$( echo "$paired_devices" | dmenu -l 10 -i -p 'remove which paired device?') # shellcheck disable=SC1091
else connected_devices="$( bluetoothctl devices | awk '{print "bluetoothctl info "$2}' | . /dev/stdin | grep -E '(Alias:|Connected:)' | sed -e 'N;s/\n/;/;s/^.?*Alias: //' | grep "Connected: yes" | awk -F ';' '{print $1}' )"
choice="$(paired_devices)" #only open dmenu prompt if there is more than one connected device
fi if [ "$( echo "$connected_devices" | wc -l )" -gt 1 ]
if [ -n "$choice" ]; then then
dev_no=$( echo "$paired_devices" | nl | grep -P "[0-9]+\t$choice$" | awk '{print $1}') choice=$( echo "$connected_devices" | dmenu -l 10 -i -p 'remove which paired device?')
dev_id=$( echo "$bt_IDS" | nl | grep -P "^.*$dev_no\t" | awk '{print $2}' ) else
bluetoothctl disconnect "$dev_id" choice="$connected_devices"
fi;; fi
#only there was a choice (instead of canceling the dmenu)
if [ -n "$choice" ]; then
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}' )
bluetoothctl disconnect "$dev_id"
fi;;
"blacklist") "blacklist")
choice=$( echo "$paired_devices" | dmenu -l 10 -i -p 'blacklist which paired device from selection?') choice=$( echo "$paired_devices" | dmenu -l 10 -i -p 'blacklist which paired device from selection?')
if [ -n "$choice" ]; then if [ -n "$choice" ]; then