summary refs log tree commit diff
path: root/bin/bluemenu
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2023-07-08 05:37:51 +0900
committerRobert Günzler <r@gnzler.io>2023-07-08 05:38:36 +0900
commitfbbea1e4a92bbd96c4db33c50a9c441a5f844af1 (patch)
treeb07670fbefcdd7fb6312f0e2a027a0afc0e99077 /bin/bluemenu
parent1a220f1578ce0e18cffff97ae8ba68d6a4dfea4d (diff)
bin: update menus
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'bin/bluemenu')
-rwxr-xr-xbin/bluemenu59
1 files changed, 59 insertions, 0 deletions
diff --git a/bin/bluemenu b/bin/bluemenu
new file mode 100755
index 0000000..22ac87b
--- /dev/null
+++ b/bin/bluemenu
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+set -e
+[ -n "$DEBUG" ] && set -x
+export UNSAFE=1
+
+# notifysend() {
+# 	[ -z "$notifyicon" ] && notifyicon=bluetooth
+# 	local msg=$1
+# 	shift 1
+# 	echo "$msg"
+# 	notification_id=$(notify-send "bluetooth" "$msg" -i "$(iconez -sn "$notifyicon")" --print-id "$@")
+# }
+
+if [ -n "$BTON" ]; then
+	bluetoothctl power on
+	exit $?
+fi
+
+if [ -n "$BTOFF" ]; then
+	bluetoothctl power off
+	exit $?
+fi
+
+if [ -n "$BTCONNECT" ]; then
+	if [ -n "$REEXEC" ]; then
+		addr=$1
+
+		if bluetoothctl devices Connected | grep -q "$addr"; then
+			bluetoothctl disconnect "$addr"
+		else
+			bluetoothctl connect "$addr"
+			sleep 2
+			# hack to make wireplumber detect bt audio device
+			pkill -USR2 wireplumber
+		fi
+
+		exit $?
+	fi
+
+	bluetoothctl power on
+	bluetoothctl devices |
+		while read -r btdev; do
+			name=$(cut -d' ' -f3 <<<"$btdev")
+			addr=$(cut -d' ' -f2 <<<"$btdev")
+
+			jq -cnr \
+				--arg label "$name $addr" \
+				--arg addr "$addr" \
+				'{l:$label,x:(["env BTCONNECT=1 REEXEC=1 bluemenu", $addr]|join(" "))}'
+		done |
+		jq -cs '{p:"bluemenu", o:.}' |
+		mkmenu
+
+	exit $?
+fi
+
+jq -cn '{p:"bluetooth",o:[{l:"power on",x:"env BTON=1 bluemenu"},{l:"power off",x:"env BTOFF=1 bluemenu"},{l:"connect...",x:"env BTCONNECT=1 bluemenu"}]}' |
+	mkmenu