• Tip Jar

Shell-fm, a Command Line Last.fm Player

I was searching for a good command line last.fm player to use on my netbook. Command line apps really have an advantage on netbooks because of their speed. The player I chose is shell-fm. It is easy to configure and use, and has a nifty ability that makes it, in my opinion, easily the best choice. You can run other command line commands from inside shell-fm and, better still, bind the command to a keypress. I will show you why this is so awesome in just a sec, but first, installation.
Although you can install shell-fm from the repositories with:
sudo apt-get install shell-fm
you will probably want to compile it from source. The latest version has built in volume controls using the + and – keys. To compile from source open terminal and type:
sudo apt-get install git-core
sudo apt-get build-dep shell-fm
git clone http://github.com/jkramer/shell-fm.git
cd shell-fm/
sudo make install PREFIX=/usr MANDIR=/usr/share/man
When it is finished installing switch back to your home directory by typing:
Create the .shell-fm/ directory by typing:
mkdir .shell-fm/
mkdir .shell-fm/cache/
then create the shell-fm configuration file:
gedit ~/.shell-fm/shell-fm.rc
There are several things you can put in this file. I only have three or four lines in mine though. The format is:
variable = setting
Here is a sample of what you can put in it. Replace USER with your Last.fm user name and PASSWORD with your Last.fm account password. Note that only upper case words should be changed:
username = USER
password = PASSWORD
title-format = Now playing %t by %a from %l
screen-format = Now playing %t by %a from %l
term-format = Now playing %t by %a from %l
default-radio = lastfm://user/USER
The last line loads your chosen radio station when shell-fm opens. If you use the default-radio line above with your user name the station that plays is your last.fm library. If you would like to automatically download free songs, add the next line replacing USER with your home directory:
download = /home/USER/Downloads/%a – %t.mp3
Downloaded tracks will be saved in your ~/Downloads directory.
And now, as promised, I will show you some extra coolness. If you have installed TTYtter, Here is a script that uses TTYtter to tweet the currently playing song. To get it set up open terminal and type the following line:
wget --output-document ~/.shell-fm/tweet.sh http://www.stormdragon.tk/scripts/tweet.sh
chmod 700 ~/.shell-fm/tweet.sh
Finally, the key binding thing I mentioned earlier. In your ~/.shell-fm/shell-fm.rc add the following line. Replace USER with the name of your home directory (usually your login name):
key0x74 = /home/USER/.shell-fm/tweet.sh %t %a %l %T
This binds the tweet script to the lower case letter t. the key format uses the HEX value of the ASCII character. You can get the HEX value using a Hex to ASCII Converter. The key must be entered as:
key0xHEXNUMBER = command
Shell-fm also has the ability to run a command when a song starts or when it ends. One use for this is to set your status in Pidgin to the currently playing track. To do this, open your ~/.shell-fm/shell-fm.rc and add the line:
np-cmd = /usr/bin/purple-remote ‘setstatus?status=available&message=Listening to %t by %a from %l’
If you do it this way though your status may have a lot of \ characters in it. To avoid this, put it in a script and call it like the tweet script above without the URL. Here is status script. Save it in your ~/.shell-fm/ directory and call it like this:
np-cmd = /home/USER/.shell-fm/status.sh %t %a %l
Don’t forget to change permission to 700 with:
chmod 700 ~/.shell-fm/status.sh
To get instructions on using shell-fm type:
man shell-fm
or if you are running shell-fm type:
for a list of commands.

Bookmark the permalink.


  1. Pingback: tts

  2. Pingback: nifty tips|nifty charts|stock charts

Comments are closed

  • Tip Jar