/splay

​splay is the only :notes: player I need. It is made for me by me and I :heart: it. It is :penguin: only.

Primary LanguageCGNU General Public License v3.0GPL-3.0

s[hell]play

splay is the only 🎶 player I need. It is made for me by me and I ❤️ it. It is 🐧 only.

Build splay

To build splay clone the git repo, change into it

git clone https://github.com/aichingm/splay && cd splay

and run one of the four build options:

  1. The tiny versionmake build
  2. A version with enabled MPRIS support: make build-mpris
  3. A debugging version for the the 1. option make debug
  4. A debugging version for the 2. option make dbbug-mpris

this will create a binary in the cwd called splay.

Colorize splay

To change the colors edit the color definitions in src/colors.h and rebuild splay.

Install splay

Just move the splay binary in any of the directories which are in your $PATH.

No don't actually do this! Move it for example to /usr/local/bin or create a bin directory in your ~ and add it to your $PATH

In order to run (and build) you need some of the below listed libraries on your system:

  • libvlc
  • ncurses
  • libtinfo
  • dbus (only for build with MPRS support)

Play all the tunes

splay reads a list of files from stdin and plays one after another. splay can play all formats vlc can play.

For the purpose of usage I will assume that you have some music in ~/Music , 'cause that's where music belongs.

Basic usage

​Play your 💙 song

echo best_song_ever.ogg | splay

Play all music in the cwd

ls -N1 | splay

Play all your music

find ~/Music | splay

Play all your ogg's

find ~/Music/*.ogg | splay

Advanced usage

splay can also play in shuffle mode

find ~/Music | shuf | splay

Play your music ordered by name (add -r after sort to reverse)

find ~/Music | sort | splay  

Hey DJ, loop it 💿

while true; do echo ~/Music/nyan_cat_poor_quality.mp3 | splay; done

Play all your music in a loop

while true; do find ~/Music | splay; done

Play the 10 most recently added tracks

find ~/Music -type f -printf '%T@ %p\0' | sort -zk 1nr | sed -z 's/^[^ ]* //' | tr '\0' '\n' | head -n 10 | splay

I will stop now, I think you got it 💡

splay does playlists too

Create a playlist of all your ogg music

find ~/Music*.ogg > ~/Playlists/cool_songs.plist

Add a song to a playlist

echo ~/Music/nyan_cat_poor_quality.mp3 >> ~/Playlists/cool_songs.plist

Play a playlist with splay

cat ~/Playlists/cool_songs.plist | splay

I need my daily dose of :needle:

How do I play only ogg's from interpret <insert cool artist here>? That's simple:

(a=<insert cool artist here>; find . -name "*.ogg" -type f -exec grep -l -i -P "ARTIST=$a\x01" {} \; | splay)

Since searching for tracks of fresh artists is a hard job for your spinning metal consider saving your search results to a playlist:

(a=<insert cool artist here>; find . -name "*.ogg" -type f -exec grep -l -i -P "ARTIST=$a\x01" {} \; | tee "Only_$a.plist" | splay)

You can now play your playlist every time you want:

cat "Only_<insert cool artist here>.plist" | splay

Hit all the Keys

There are only 11 defined

  • e , end end splay
  • up move the selection up
  • down move the selection not up
  • enter play the selected song
  • n play the next song
  • p play the previous song
  • space switch between playing and pause
  • left seek ten seconds backwards
  • right seek ten seconds in to the future
  • t cycle through title display modes 🔄