Let's put the current iTunes track into the tmux status line

When you go full terminal it can be nice to know what music is playing for when it really sucks/rocks. Wouldn’t it be nice to get something like this into your tmux status bar:

Status line screen shot

(the answer is yes)

Link to this section Let’s do this

First you need to get the following into a script file, let’s say we put this into ~/.config/itunes_status.sh.

#!/usr/bin/env bash

ITUNES_TRACK=$(osascript <<EOF
if appIsRunning("iTunes") then
  tell app "iTunes" to get the name of the current track
end if

on appIsRunning(appName)
    tell app "System Events" to (name of processes) contains appName
end appIsRunning
EOF)

if [[ ! -z "$ITUNES_TRACK" ]]; then
  ITUNES_ARTIST=$(osascript <<EOF
  if appIsRunning("iTunes") then
      tell app "iTunes" to get the artist of the current track
  end if

  on appIsRunning(appName)
      tell app "System Events" to (name of processes) contains appName
  end appIsRunning
EOF)

  TRACK_LEN=${#ITUNES_TRACK}
  if [[ "$TRACK_LEN" -gt 30 ]]; then
    ITUNES_TRACK=`echo "$ITUNES_TRACK" | cut -c -30`
    ITUNES_TRACK+=...
  fi

  ARTIST_LEN=${#ITUNES_ARTIST}
  if [[ "$ARTIST_LEN" -gt 20 ]]; then
    ITUNES_ARTIST=`echo "$ITUNES_ARTIST" | cut -c -20`
    ITUNES_ARTIST+=...
  fi

  echo '#[fg=#99a4bc]♫#[fg=#b4b4b9]' "$ITUNES_TRACK" '#[fg=#787882]-#[fg=#b4b4b9]' "$ITUNES_ARTIST"
  exit
else
  echo "#[fg=#787882]No music playing"
fi

Essentially this does the following:

  • Check if iTunes is running, and if so grab the name of the track
  • If we have a track name, also grab the artist
  • If the track name is over 30 characters in length, truncate and insert an ellipsis
  • If the artist name is over 20 characters in length, do the same
  • Output this with some colours and space it out
  • Otherwise write “No music playing”

Link to this section Insert into the tmux status bar

Ok, so that’s nice an’ all but we need to get that into the tmux status. That can be accomplished by inserting something like the following into your .tmux.conf:

set -g status-right "#(~/.config/itunes_status.sh) #[fg=#57575e]│ #[fg=white]%d/%m/%Y %H:%M "

Note as a “bonus” I have also put in the time after the iTunes track (yes, yes, such a generous bonus). If you are wondering what those colour hex values are, they come from the falcon theme (made by moi). Don’t forget that you will need to make this script executable too.