From 28f571b5c2252473b21595340a7896b1a3aacc0a Mon Sep 17 00:00:00 2001 From: Andy Bateman Date: Mon, 14 Sep 2015 19:27:41 +1200 Subject: [PATCH 1/5] Update osx.plugin.zsh Added function to display the song you're currently listening to in iTunes Fixed indent Indentation on line 169 was squiffy Fixed spelling Removed unnecessary wording to make function more succinct. Highlighting of Artist and Track Changed the highlighting of the Track and Artist in yellow to make use of Prompt Expansion Colors --- plugins/osx/osx.plugin.zsh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index 390960fdc..044276c1c 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -161,6 +161,15 @@ function itunes() { vol) opt="set sound volume to $1" #$1 Due to the shift ;; + playing) + local state=`osascript -e 'tell application "iTunes" to player state as string'` + if [ "$state" = "playing" ]; then + currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'` + currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'` + echo "Listening to %F{yellow}$currenttrack%f by %F{yellow}$currentartist%f"; + fi + return 0 + ;; shuf|shuff|shuffle) # The shuffle property of current playlist can't be changed in iTunes 12, # so this workaround uses AppleScript to simulate user input instead. @@ -199,6 +208,7 @@ EOF echo "\tnext|previous\tplay next or previous track" echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer." echo "\tvol\tSet the volume, takes an argument from 0 to 100" + echo "\tplaying\tShow what song is currently playing in iTunes." echo "\thelp\tshow this message and exit" return 0 ;; From 5e1498ab24e2dc302e558897c5697acc50f67073 Mon Sep 17 00:00:00 2001 From: Andy Bateman Date: Thu, 17 Sep 2015 13:48:30 +1200 Subject: [PATCH 2/5] Fixed colourisation of Now Playing function --- plugins/osx/osx.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index 044276c1c..f1b437189 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -166,7 +166,7 @@ function itunes() { if [ "$state" = "playing" ]; then currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'` currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'` - echo "Listening to %F{yellow}$currenttrack%f by %F{yellow}$currentartist%f"; + print -P "Listening to %F{yellow}$currenttrack%f by %F{yellow}$currentartist%f"; fi return 0 ;; From 0ac7a2512a834adc84d38d60d2dd1bd5f3fb731a Mon Sep 17 00:00:00 2001 From: Andy Bateman Date: Thu, 17 Sep 2015 18:28:48 +1200 Subject: [PATCH 3/5] You can now use 'itunes status' as well as 'itunes playing' to show current track --- plugins/osx/osx.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index f1b437189..859e08da5 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -161,9 +161,9 @@ function itunes() { vol) opt="set sound volume to $1" #$1 Due to the shift ;; - playing) + playing|status) local state=`osascript -e 'tell application "iTunes" to player state as string'` - if [ "$state" = "playing" ]; then + if [[ "$state" = "playing" ]]; then currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'` currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'` print -P "Listening to %F{yellow}$currenttrack%f by %F{yellow}$currentartist%f"; From 67132a2f41d1dd6e4e35ebd451909ea5cce3a637 Mon Sep 17 00:00:00 2001 From: Andy Bateman Date: Thu, 17 Sep 2015 19:12:35 +1200 Subject: [PATCH 4/5] Added function for 'itunes playing' to display state when not playing --- plugins/osx/osx.plugin.zsh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index 859e08da5..9413f5056 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -167,6 +167,8 @@ function itunes() { currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'` currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'` print -P "Listening to %F{yellow}$currenttrack%f by %F{yellow}$currentartist%f"; + else + print "iTunes is" $state; fi return 0 ;; @@ -208,7 +210,7 @@ EOF echo "\tnext|previous\tplay next or previous track" echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer." echo "\tvol\tSet the volume, takes an argument from 0 to 100" - echo "\tplaying\tShow what song is currently playing in iTunes." + echo "\tplaying|status\tShow what song is currently playing in iTunes." echo "\thelp\tshow this message and exit" return 0 ;; From 90ff9bbf7385e10fe36e3bf08cbe6c78a691fb20 Mon Sep 17 00:00:00 2001 From: Andy Bateman Date: Sun, 20 Sep 2015 08:46:45 +1200 Subject: [PATCH 5/5] Replaced the use of 'print' with 'echo' in order to sanitise track and artist names Fixed indentation Fixed indentation --- plugins/osx/osx.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index 9413f5056..86778363b 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -166,9 +166,9 @@ function itunes() { if [[ "$state" = "playing" ]]; then currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'` currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'` - print -P "Listening to %F{yellow}$currenttrack%f by %F{yellow}$currentartist%f"; + echo -E "Listening to $fg[yellow]$currenttrack$reset_color by $fg[yellow]$currentartist$reset_color"; else - print "iTunes is" $state; + echo "iTunes is" $state; fi return 0 ;;