Beats Status in menu bar

here is my code, from AQT.

--Original script by Noon Chen, modified by yuuiko to support any bluetooth device and list UI setup.
use framework "IOBluetooth"
use scripting additions

set deviceList to current application's IOBluetoothDevice's pairedDevices()
set devNames to (deviceList's valueForKey:"name") as list
set devStatus to (deviceList's valueForKey:"connected") as list
set devAddress to (deviceList's valueForKey:"addressString") as list

set currentModel to "AirPods" --default widget icon
tell application "BetterTouchTool" to set AirPodsName to get_string_variable "AirPodsWg_DevceName"

if AirPodsName is "" then
	return jsonData(currentModel, "Bluetooth \\nTap to Setup   ", 0, 11)
else if AirPodsName is missing value then
	return jsonData(currentModel, "Bluetooth \\nTap to Setup   ", 0, 11)
end if

if devNames contains AirPodsName then
	repeat with i from 1 to count devNames
		if (item i of devNames) = AirPodsName then
			
			--Get index of AirPods in the list and save connection status and MAC address value
			set connectValue to item i of devStatus
			set MAC_addr to item i of devAddress
			
			------SPECIAL PRODUCT BEHAVIOUR------
			try
				set ProductID to do shell script "/usr/libexec/PlistBuddy -c \"print :DeviceCache:" & MAC_addr & ":ProductID\" /Library/Preferences/com.apple.Bluetooth.plist"
			on error
				set ProductID to "ERROR"
				set currentModel to "Not Airpods"
			end try
			
			--set icons
			if ProductID = "8206" then
				--AirPods Pro
				set currentModel to "AirPods Pro"
				
			else if ProductID = "8207" or ProductID = "8194" then --AirPods 1 & 2, ProductID = 8207/8194
				set currentModel to "AirPods"
				
			else
				set currentModel to "Not Airpods"
			end if
			
			------SPECIAL PRODUCT BEHAVIOUR------
			
			
			------SET TEXT TO RETURN------
			if connectValue = 1 then
				
				try --scan for "BatteryPercentLeft" and "BatteryPercentRight", used in AirPods and probably beats true wireless.
					set BatteryLeft to do shell script "/usr/libexec/PlistBuddy -c \"print :DeviceCache:" & MAC_addr & ":BatteryPercentLeft\" /Library/Preferences/com.apple.Bluetooth.plist"
					set BatteryRight to do shell script "/usr/libexec/PlistBuddy -c \"print :DeviceCache:" & MAC_addr & ":BatteryPercentRight\" /Library/Preferences/com.apple.Bluetooth.plist"
					
					if BatteryLeft = "0" and BatteryRight = "0" then
						return jsonData(currentModel, "Not Connected", 0, 15)
					else
						set batteryText to formatValue(BatteryLeft, "🅛") & "\\n" & formatValue(BatteryRight, "🅡") -- Connected Output
					end if
					
				on error --scan for "BatteryPercent", used in probably apple magic mice, trackpad and keyboards.
					try
						set BatteryLeft to do shell script "/usr/libexec/PlistBuddy -c \"print :DeviceCache:" & MAC_addr & ":BatteryPercent\" /Library/Preferences/com.apple.Bluetooth.plist"
						log BatteryLeft
						
						if BatteryLeft = "0" then
							return jsonData(currentModel, AirPodsName & "\\n" & "Not Connected", 0, 11) --SET OUTPUT probably apple magic mice, trackpad and keyboards not connected
						else
							set batteryText to AirPodsName & "\\n" & "Battery: " & (round BatteryLeft * 100 rounding down) & "%" --SET OUTPUT probably apple magic mice, trackpad and keyboards connected
						end if
						
					on error --scan for "BatteryPercentSingle", used in probably beats.
						try
							set BatteryLeft to do shell script "/usr/libexec/PlistBuddy -c \"print :DeviceCache:" & MAC_addr & ":BatteryPercentSingle\" /Library/Preferences/com.apple.Bluetooth.plist"
							log BatteryLeft
							
							if BatteryLeft = "0" then
								return jsonData(currentModel, AirPodsName & "\\n" & "Not Connected", 0, 11) --SET OUTPUT probably beats not connected
							else
								if BatteryLeft is greater than 1 then
									set batteryText to AirPodsName & "\\n" & "Battery: " & BatteryLeft & "%" --SET OUTPUT probably beats connected
								else
									set batteryText to AirPodsName & "\\n" & "Battery: " & (round BatteryLeft * 100 rounding down) & "%" --SET OUTPUT probably beats connected
								end if
							end if
							
						on error --handle any other generic bluetooth device with no battery report
							log "these aren't airpods"
							
							set currentModel to "Not Airpods"
							set batteryText to AirPodsName & "\\n" & "Connected" --SET OUTPUT generic device connected
						end try
					end try
				end try
				
			else
				return jsonData(currentModel, AirPodsName & "\\n" & "Not Connected", 0, 11) --OUTPUT display device but not connected
			end if
			------SET TEXT TO RETURN------
			
			log "break loop"
			return jsonData(currentModel, batteryText, connectValue, 11) --OUTPUT 
			
		end if
	end repeat
else
	log "widget not setup"
	return jsonData(currentModel, "Bluetooth \\nTap to Setup   ", 0, 11)
end if

--style battery display
on formatValue(batteryLevel, prefix)
	if batteryLevel = "0" then
		return prefix & " --"
	else
		return prefix & batteryLevel & "%"
	end if
end formatValue

--Format into json data to output to BTT
on jsonData(currentModel, batteryText, connectValue, fontSize)
	
	set airpods_iconData to "iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABxklEQVRoge2ZwUoCURSGfwuiZavW+RBugp4jkraCrxG9RgX5BrVo76Lc1NK1uhe0hYZKTtw4Fw6Dd/TM6IwO/wcHx5lzz/n/Ye5hRBBCCCGEEEJInpwDuAcwADBU0QJwadDhcp9jNVzNO+mxF7wAWACIEqK9gdD2mhoL6VUYJwC+14jUMU4QOjbUcT1PizA9MYj08bWizmeKOpO8zX5I4zcAM6PYqqpTNa6dSU93/J6nYb+nYHwcIxlknpZxrd8WfmaYOcpg2jdfyueVBNT3ioQ+fxE4DuXrur5X0jxIJIthv1bf6dBd1+d/1PHUuNYfHxt0boVfdbdHxseyrgRcG9eOZN1SNOTGqwjoAJgbh04cy9CbS89INOSKdVi5aK4Q2ExRJ/UezsKRvPptKvIxodeDoc4w4+zJzJMMn5BAN6QaGzRpSG6ozlTes/eGG9lfPYkugFoKcTVZ6+t0pPZB4B+9MzERois5B09dXgH9YxnCX3e5t7s0Xdlh7VUGQ/0suZkodNoVAQ2XHRouOzRcdmi47NBw2aHhskPDZWfrhqMo+g/5X1czUNfiub11uXuJF6nE9uXHfT9+zZJLCCGEEEIIIfkC4A9P0HeTJCMKAwAAAABJRU5ErkJggg=="
	set airpods_dark_iconData to "iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACT0lEQVRoge2Yz0sWQRjHP5tvaZhRULwGmgcjiLKTf0CdOmkieOkQdfGP6hQG3jpUh+jWoW6JCFZkdSgPJh5VDHnzlZFnZZx8Z2dmt5dcng8sszvzzDzPd37sziyKoiiKoiiKoighZBX10lngJnAdaFj5q8AnYD2wnSZwA7hq5bWAFeAjsFM20CoE3wOGgVMemzXgVUE7E8AVT/medOCbxDgPKCPYCHwInAm03wWedih7FNnOM+BPoP0RelIqCY+B05G+RoDPTv40MBDZzm1gMaLOIb5p6OO+rNVVmWqhXHLEDUheKPm0bkgMXRPcFOev5aUSw7hlOx5ZtyU+9ySGaBoplYRdSduSvpR00nr+JfeDVr47whTY2+3mvozvvpSgU0eYEi+8Vof7bvhOHmHT072O80nHxn3OWbHuvwBDBfZ2fu6r1xrtKFJH+KekU5GdZtbeN+v5e+RLryE+7RiiSP0smUDHgPOR0+s9sOHk/XZ2Vj6Mr35Zw8+7KdiwJNvJ0BE20/fDMfkbIiL082Q6aC4iziOUEYyIPgdc8CwPsyN6Byx42vkBbMt67tROS5bDizIBV3V4MFwDbslBAgnw7TFTuIjLwB1r5pgDw7Kz9v9b8g41++QZT5AzEXvpUpTZeIQwKuu8aFd0UQ4Q63Kc/HoSBc8m1GnKdRd48g9iKrXTOpGo4LqjguuOCq47KrjuqOC6o4LrjgquO5ULbrfbBxew5RRtWWWu7WaRbVVU+U/rrwCzLHsgP/mMgHlfXZ9tllUapqIoiqIoiqIoSgHAPvjRfRDZ2peqAAAAAElFTkSuQmCC"
	set airpods_pro_iconData to "iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADI0lEQVRoge2YTUgVURiGH+2HMIOCfqwgF20ikwgCwaSiXWUELcJw0SYosBZBRATRIqIIMSgsahX0Y0XYQkjctAskyn6IMoM0gsoyIvshozQm3kvDZc7MeE8z3qvngeHeO2fmzPfOOec733txOBwOh8PhcDgcecVkoA5oAXqAQWAIeAt0AieB6kIdsvnAfuAMcA7YB8wCGoGRiOMxUJUHGmJzAHgWcHTpRbTEEP0LqE8r4CKLezcDx0Pan+qF9MTo6yewQvckSrFF5zuArzqCWAq8AN7H6GsqcChpsSi55Eq5EtMwcNPQx2ygF5jrO9cO3PP9XgWsA9YmJ/MfNoKLY0zBKZqufjZk/S4FvgDTLWKJjY3gAU3bMD4qefm5FTDCHg8TU+nDRrAX+MWQ9g8a4cVZ59fryOaURSyxsUlaJ4DXQImh/TCwN+ZOcAm4YRFLbCZZ3n8V+K3kNE176ittR9758xplE94+fAzYnYbY/02p1nQtcEHZ21Rs9Km8XFSIQj3KgH6DuFZgK1CjF2JaAgVDkUrLILG7Cl1cEB0GsU35F6o9zSHTeNzRYBD7IMZWVK2k1SmPPCTP3COHVWdZIyTCYIBYL/iZIQ+rkgeOsoyN8tTePn4WOC2fXTaWgtuzgvwGVIZcX699Okpsi8rR+wavfdAmaJvC47KmXYUqrm3AXcO1FUpucZ63RQlvgaF9uZ73PJegbf4AGA2ZdRmF553naSSDyHjvd8CmXAJJKzGs0edt4I7v/MosI9GrMtXEdlVw13MNJC3Bpfr0RuV7VtuI7/uPiGmf8d85m560BD9SadkWMMJ+FgKfQvrJ+O+BXANJaw1n/qOOwhvtGdoB5gRcm5kd12RPR42tPYzLE2AJsCziem8APgNXgI0B7Z7VfAnsSSlua45G2MYRjaKX5FZrCXRpT24rVDNSrn22L0T0sDx1rdZtaYx+C4ISCaqRZ241vID+sS4rk2SnQXR3ikk2dZoMojvGq2BCpndzHsSWCEXy1kGiG8ah3r943vpNgODBPIgtMSrltSfMWkaFSLdq6CN5EI/D4XA4HA6HwzGxAP4Ac0sF5kts7O4AAAAASUVORK5CYII="
	set airpods_pro_dark_iconData to "iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADe0lEQVRoge2aa0sUURzGf3kpS9PMTJMuVhZWFOWLILpQENHtXZ+gN327XgklhXShKwhSZlBqlkV0MzErN1OLA8/EMJzZnebMjkudHyy7e2bmzP85c87/cnbxeDwej8fj8Xg8qVhWpmGrArYCncA6YBVQDRSAr8B74IXecyULwUbMDmC1+psGngEHgH0lrv0M3AY+5CXaVfB+YKelfR7oAw4B20v08Qu4AYw62pKIKodrO2PEGmqAw8BAgn7MoB8Hmh1sSYyL4G7gp142mjW9ZxP0ZezoyU5WPDUO1zYA/ZqSp2LOqQNmgJWhttfAx9D3dqAD2OAiJCkugs1UnCpxjnlyi5G2q5HvtcBFvZcdF8GFBOuuIC8e5ozlCRsmK13wBHCiyPGCnnBjpH2TXlGeONiSGBen9UhJRNygDSSIwwEjSkTKTrXjDcbktOrU16IG4aHajyYY1EHgbh5iyTi1rJXnNhnXtiIxGg3KODCkz7mRlWDjmC5Ewk/AS2VR34EfClPzeYoM4+K0wpyPEXsHeJrRPTLBxWkFnAXWWNqHKk0sGQg+Amy0tJtpfN+x77LgMqX3ALst7SaBuFbi2jY5tjY5OuPlF7TOP2nAxi1ZmjMugg9a2ozBvUWuWQ8cA9ZajpnZ1qTXN+CNPH2TQtxMyPmlxkXwu0jGZDzvFWAu5vwuZWalIoOJ7Y+Bcxb7upWkDKY12iXxGJXxzYql/ZEcOUyzBCQJg9e1cVAfc7xF95tOY7RrWBpIWOT3JBQ7KyFxRUlQe+8CXv2FnX/IKg6XIqh132opBLRGlsWMHFgcN7WeT6Y1JC/BQa3bZ8myLoU+L5SYCUH9nTpDzEvwpOre05YnHKZe6WccwVQvpDUkL8HDoa2cjiLnNSo8FWKmdlB/j6U1xLU8TMqU0k9b/I0ypwiw2XLMDMYX4F5aQ/ISjDKnqgSbde2KtROawuE627Q/cDGiXD+1FMOkknv1U0xDkfOeaxdkRmLjtoP/iqUQHKZGGwYrVFN3aYM/ionPl13TSnKe0jYWQz+wTckZGVFbIufWak0Pu95wqQXbMNXSclVSYerUNuLSeSUKRpVSi2VjoVE7KxNpO65UwWh6d1o28lu1DOIKlaJkscVTTnpjHJWtFv8nBM+pxo7m36n/OVDJUzpgVvl34MTM5sCtpTfL4/F4PB6Px+P5jwB+A9f8oHKNqBsZAAAAAElFTkSuQmCC"
	set not_airpods_icon to "iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACXUlEQVRoge2ZT4hNURjAf0kWsra1sJEslIWyVbNQSsrC1CRqslCy1igTO4VYmJUshEZho4jFZDmjLJQipSkroRih+ePp03k5fb5z5129e51zfb86vde79773/d499/vOdy+O4ziO4ziOUy5bgXngAzD2P5zHXjSWgPEMYmqUnhorwESHff8QlrEMTGYQWyNYwv0zfbWDvr8lez154YcS75y0Fh4LySuWvvPvwxweWlg4G67jWPpuKUL7gZGK7ZawcAJYVNIPgfXNh/z3XAtBfwMuJL4lJSwcAt4r6dlMXX/xNQpUktEVY58qYUJ50hk8W06rrCvvp2sITxjT+l7OwsKpUFPjoG8Da8P2lPBlo0TdiI7LmmNGqZmpEJ4yZsZUCaIx48b0vGUITxqy57KxqMkRlcj0WFKyyyEPFM3eUKZS0v0h8sdLl+2zOzT8KVn5Qw7nEerw2AK8NWS/AHvaCmJNWz8UZD8an8s1/rLFOFphM/CqYkrLdN/VFdltwLsBktZCSHBFs8NoBuKhV1aSvEZLFd4HfFJCc8bC46baZzG0ikUhZeizEnkNbEgsLWeMmny0FOEDxkLjadTIW8LrgAfqmJUSFiIi+92QjalqD6dVpyXX+JnWLWqwoGQfG4eudgPgkpHYsuVRFGSqca8S3hmeO8XC8zkLy8rt5CrXXkp4xJghb4BNzYfdLJbwQaONfA5sLF0WQ3h7aCBi2We5356tgxbWJexJMSYDUrWevl+EQU1Sa+pOPU+KsYSv5xPe8HmhzuzFrglqRkMXJcnqfF6hOY7jOI7jOM5gAD8BzMiTwf2AeoEAAAAASUVORK5CYII="
	set not_airpods_dark_icon to "iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAC+klEQVRoge2a2WpUQRCGv8lo8EIEVxBFTVSCS0CjIK4xuOKG+ABe+lB5BhHcgkhUEFFBo0SjgkaJoihR4xK3oM5IQY00zSw5SVefuejv6pye01P191KnqmdIJBKJRCKRSCTCUMxhHOcCJ4Au4AcwFtN4HoJPAq3ADGC5iv4Qy3gegjc51wVgmV6/jWG8JYaRBhR0EDbHMNYMglHRG4Fua0O5Ci6Xy73OrYjusBbdDDN8DSg59yJ6v5WxZhD8DBiUCXfaVliJthDcBizN2OcOcNubaRF9SF9fwQgteDewBzgAbM3Y9yFwHfjltMnAHQ3pYGjB7fqd8n7vBHZk7P8UeOy1LQzoX3DBg979WmBvhv6Sbm7w2kYC+PWf0IIHgLteAGpX0Y1sbdfkw31uGOgP6aBF0LoH3PQCkIg+XKfPTmCd1/YEuOp9z7QJGgEdHgF/dQ9XBnWxBjQfmdU1XtsDjdrBKRgJrtChS7XWwJa8VVbWFTJg5ZB1tfRR6922GtvHHfCSzqof+IISozz8Aoxq7VtrpmX539B9a0qsengceKnZU6v32R+NxC9iOBIzl/4OTFRpF8GfYzkRa4bnAMf0PMtHlvlq4J0OiikxBM9TsbPrPCOiVwKfdM+bYS14gSYcsybxbFGj+bjlSablHpYAdcQT+959QE88njtNRa24Oq2cshK8BOjxIvJX4EKVZ694J5bi05Yq2VcQLARL3nwQmOm0ybnzaeB3jT4XgdfOfYumpetDO2dRD/d4sUHEntHXTy0ky+rTd3Gl0pIsbFvo49vQgrs9sW9U7GTp18LDpSukg6EFjzrXI7pUs7BIg53Lt5AOhi4P+/TEQvbqUMa+cn61z9v78oo6H9LB0IJl/92fQr9VwC7PnzFdIT8D+md2AJCF+VXESll5tkGgmxLNIPi4F+gkpz5nZcz6xKMap+p89gq4ZGm8GWa4gkT1y9ZGmkXwsJ5QmpPHj2l+sT8USyw5/eVhQosLNKu6lYMPiUQikUgkEonEtAD+AYohf02fXGWtAAAAAElFTkSuQmCC"
	
	if currentModel = "AirPods Pro" then
		if connectValue = 1 then
			set icon to airpods_pro_iconData
		else
			set icon to airpods_pro_dark_iconData
		end if
	else if currentModel = "AirPods" then
		if connectValue = 1 then
			set icon to airpods_iconData
		else
			set icon to airpods_dark_iconData
		end if
	else --if not airpods
		if connectValue = 1 then
			set icon to not_airpods_icon
		else
			set icon to not_airpods_dark_icon
		end if
	end if
	
	return "{\"text\":\"" & batteryText & "\", \"icon_data\": \"" & icon & "\", \"font_size\": \"" & fontSize & "\"}"
end jsonData

How do I make it just show: Bluetooth icon and then 'Not Connected' or 'Battery: x%'?

@yuuiko
@Noon_Chen

bump @yuuiko or @Noon_Chen

bump again

bump.

bump...

bump...

Imprint | Privacy Policy