forked from matryer/xbar-plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request matryer#1495 from CartoonChess/master
Add AirConnect plugin (AirPlay to Chromecast)
- Loading branch information
Showing
1 changed file
with
125 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
#!/bin/bash | ||
|
||
### | ||
# | ||
# Make sure you take care of the <bitbar.dependencies>, then | ||
# | ||
# CHANGE THESE | ||
# | ||
|
||
readonly path="/Applications/" | ||
readonly processName="aircast-osx-multi" | ||
|
||
# | ||
# NOTE: These values cannot contain single or double quotation marks. | ||
# Would love to know how to get BitBar to parse these correctly! | ||
# (Incidentally, |href also chokes on spaces.) | ||
# | ||
### | ||
|
||
|
||
|
||
# Info | ||
|
||
# <bitbar.title>AirConnect</bitbar.title> | ||
# <bitbar.version>v1.1.0</bitbar.version> | ||
# <bitbar.author>CartoonChess</bitbar.author> | ||
# <bitbar.author.github>cartoonchess</bitbar.author.github> | ||
# <bitbar.desc>Launches AirConnect to enable streaming AirPlay audio to Chromecast devices.</bitbar.desc> | ||
# <bitbar.image>https://user-images.githubusercontent.com/43363630/101709887-aa9f2900-3ad3-11eb-8863-4309a068aa3c.png</bitbar.image> | ||
# <bitbar.dependencies>airconnect,bash</bitbar.dependencies> | ||
# <bitbar.abouturl>https://github.com/cartoonchess/bitbar-airconnect</bitbar.abouturl> | ||
|
||
|
||
|
||
# Strings | ||
|
||
readonly app="AirConnect" | ||
|
||
|
||
|
||
# Icons | ||
|
||
readonly onIcon="iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGX2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDMgNzkuMTY0NTI3LCAyMDIwLzEwLzE1LTE3OjQ4OjMyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTUtMDMtMjFUMDQ6NTQ6MjArMDk6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTEyLTEwVDEwOjIzOjQyKzA5OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTEyLTEwVDEwOjIzOjQyKzA5OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzQxY2VkLTRlNmQtNDYxMi1hNzZhLTUzMGU4YmQ4N2RhYiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmUzMjIyZmNiLWIxMGYtZDU0ZC05NDQ3LWMzZWJiNzdmMWY1NCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQ1ZjAwZjFiLTIyMzEtNDVmYy05NzdhLTI0NGYxM2U1MTM1ZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDVmMDBmMWItMjIzMS00NWZjLTk3N2EtMjQ0ZjEzZTUxMzVlIiBzdEV2dDp3aGVuPSIyMDE1LTAzLTIxVDA0OjU0OjIwKzA5OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NjM0MWNlZC00ZTZkLTQ2MTItYTc2YS01MzBlOGJkODdkYWIiIHN0RXZ0OndoZW49IjIwMjAtMTItMTBUMTA6MjM6NDIrMDk6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4xIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhYdaq8AAAH7SURBVFiF7ZfRcdswDIa/9jKANqi6gT1B3AniDapsIE9gZYK2E4QbJJ2gygTRBtEG0QbtA4EQoinZdSTlxd8djzQIm78BkpDgwoX38cmMM6CQfkk6wEn/RgY8A38/qD0TBaL8QDHaSoArEyGlBp7iuM7ENbCxGq4STk9AtYgcv87GGj4vtPDJpCJk2RD9gwmopSU5RdB+Oi1v1EMTKqhiuX0zyrE95IAd0M6uRDgmqAV+Al+BW6LbdA5UUEW4oF6ABw7LiBNhbglBlhzYAvfAq/S5zHX4SN0uKSimwEetMjYHrJkhhSrIAd+k3QFNwnePL4K5fG7EfzFyfLriIvgKrIxfkfAZa5X5bhXbx1LW4vfKmn7EMuAPIVKOCTd66pTpCVMafGrsopn4KTsm2k+pCG3xqXqRMYTTZUWtCOHvRNQsgpQcH4V7Y9vRT9+efuraqQQ5fFriBcGn74eMOw7vIFt8f71XkBbXVlqNLxWlLJTJfIl/cHvEC3aEfVYQ9tAjx18S6jO1ssIfcVtSlJz+US44j4qBY68TD/QvvrtIhC7c0k/tzZmCDogf0Lb4h7I1odJ/J1yEN4ST9tvYtVeqE9e/NuMv8Q/YFNg7pozmlM2AHf7v5u69Bg0d+60ZNwM+U9IgkdeU1SPOLf29dMzOiD1FR+JV+sKFc/kHPkbXK6gg7e8AAAAASUVORK5CYII=" | ||
|
||
readonly offIcon="iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGX2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDMgNzkuMTY0NTI3LCAyMDIwLzEwLzE1LTE3OjQ4OjMyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTUtMDMtMjFUMDQ6NTQ6MjIrMDk6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTEyLTEwVDEwOjI2OjA2KzA5OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTEyLTEwVDEwOjI2OjA2KzA5OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjgxYzg2NGI4LTQ0OTQtNDdiNy1iOGY2LTdkNDNiZjgyNzUxZCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjEyODQ2OTA3LTBjMjctODk0Ni1iODJlLTgwN2M0NjFkZTVmZCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmMwOTBmMjkyLTIwN2EtNDVlYy04Y2ZkLThiMzc0ZjljNDNiMiI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzA5MGYyOTItMjA3YS00NWVjLThjZmQtOGIzNzRmOWM0M2IyIiBzdEV2dDp3aGVuPSIyMDE1LTAzLTIxVDA0OjU0OjIyKzA5OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MWM4NjRiOC00NDk0LTQ3YjctYjhmNi03ZDQzYmY4Mjc1MWQiIHN0RXZ0OndoZW49IjIwMjAtMTItMTBUMTA6MjY6MDYrMDk6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4xIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgzdiP0AAAHiSURBVFiF7ZetdoNAEIW/pghEBKIiIgKJRPQBkJGVlX2EPkIfI7KysrIyMiICUVERgYhARCAiEBUVMxsWCklOICSCe86eXWY32cu9sz/AgAHtcGe1XSDUuk/kQKz1npALvACTnskYpMA7kI80EF6RDDp3COBowLYp0dIHfC17Dk7NoARY9MEGiCgIATCqHXZFDISOweTQgv7y5iBuTqGbI2Qsi7QAZMjO+aMlvwYhG56WQJ9jJL+yHvicZFkIvFIoeFHca50h9sTadoFxZayPqLamOxt9ip06ARJDKFcimXaslJxL+dAdI4qtgd0lCB2yLAM+gTmS5AbmquJ1QOgfjEKRThIhijgWiR3wjahj1HKQN1u1nN+nwTK74wHJlRBRaQv8IjnmWaRMjiVdEjpkmQc8A09W7IuyfREdW1ddZSny5vYKmyB5s0aU2gCPVr+rvz0HPkdW2QbJixyYUmycUyW7RXLKo7BuAiyVbGtCTZYt0Uu3FZtZ7UVlfEBHMIQi4A3JGU9jaWViD72IU5x3nROqnmUBIuFcJ11S/iIJkA0TJG9s22xEJ87vW22vjhBIks6AD32OKeyylUiqf3YGIRspNB+uQXXghZGiyhuFEpqvsFlDX1OcA/E6lD6lBwxoiz93TGyVG5zbNAAAAABJRU5ErkJggg==" | ||
|
||
|
||
|
||
# Run app | ||
|
||
if [ "$1" = "start" ]; then | ||
# Must use -Z to keep CPU under control | ||
# & runs in background so plugin can refresh | ||
"$path$processName" -Z & | ||
exit | ||
fi | ||
|
||
|
||
|
||
# Exit app | ||
|
||
if [ "$1" = "stop" ]; then | ||
pid=$(pgrep "$processName") | ||
kill -s $2 $pid | ||
# Give the plugin time to wait for the app process to end | ||
sleep 1 | ||
exit | ||
fi | ||
|
||
|
||
|
||
# Check if app script is running | ||
|
||
running=false | ||
ps cax | grep aircast-osx-multi > /dev/null | ||
|
||
if [ $? = 0 ]; then | ||
running=true | ||
fi | ||
|
||
|
||
|
||
# Show menu bar item | ||
|
||
if [ "$running" = true ]; then | ||
echo "| templateImage=$onIcon" | ||
else | ||
echo "| templateImage=$offIcon" | ||
fi | ||
echo "---" | ||
|
||
|
||
|
||
# Check that the app can be located and only show help if not | ||
|
||
test -f "$path$processName" | ||
|
||
if [ $? != 0 ]; then | ||
echo "$app Not Found" | ||
echo "Refresh | refresh=true" | ||
echo "Help" | ||
echo "-- Set path and filename in .sh file" | ||
echo "-- Open Plugin Folder… | href=file://${0%/*}/" | ||
echo "-----" | ||
echo "-- Download and install $app binary" | ||
echo "-- Open GitHub Page… | href=https://github.com/philippe44/AirConnect" | ||
exit | ||
fi | ||
|
||
|
||
|
||
|
||
# Show full menu (if app is properly located) | ||
|
||
if [ "$running" = true ]; then | ||
# Running | ||
echo "Running" | ||
echo "Stop $app | bash='$0' param1=stop param2=TERM terminal=false refresh=true" | ||
# Hold opt key to force quit | ||
echo "Force Quit $app | alternate=true bash='$0' param1=stop param2=KILL terminal=false refresh=true" | ||
else | ||
# Not running | ||
echo "Not Running" | ||
echo "Start $app | bash='$0' param1=start terminal=false refresh=true" | ||
fi |