Music player for Plan 9

659fc7d fix a warning on 386

~ft pushed to ~ft/picker git

2 days ago

9c7e0ac new playlist loader: allocate all metadata once

~ft pushed to ~ft/zuke git

3 days ago


A music player for Plan 9.


With some stuff one expects from a music player:

  • gapless playback
  • seeking
  • playlists
  • good metadata support
  • basic livestreams (ie IceCast) support


New playlist format. Zuke still will load old format and you can convert to the new one like so:

audio/zuke -G <old.plist >new.plist


Install libtags first.

Clone the repo, do mk install.

Zuke comes with two programs. One is audio/zuke, which is the player itself. The other one is audio/mkplist, it's used to make playlists that are then fed to audio/zuke's stdin:

audio/mkplist /n/somefs/dir /n/otherfs/file.mp3 http://stream.nauticradio.net:14280/ > $home/somefs.plist
audio/zuke < $home/somefs.plist

Of course, one can combine these steps into one:

audio/mkplist /n/music | audio/zuke


Plumbing music files and playlists is supported via "audio" port. New files can't be added to the current playlist just yet.

type	is	text
data	matches	'.+\.(mp3|MP3|ogg|OGG|flac|FLAC|wav|WAV|au|AU|mid|MID|mus|MUS|m3u|M3U|pls|PLS|it|IT|plist)$'
arg	isfile	$0
plumb	to	audio
plumb	start	window -scroll play $file

To disable plumbing, execute before launching zuke:

bind /dev/null /mnt/plumb/audio


The ones supported with stock 9front: mp3, ogg/vorbis, flac, wav.

To play opus, visit this.

To play ImpulseTracker mods, install itdec.


To change the default theme install picker and run it using right mouse button menu in zuke. snarf all and save it to a file, then point to that file using an environment variable (you can put it into $home/lib/profile):


#Columns to display

Zuke has an optional argument -c that specifies which columns to display, the default is -c AatD.

A  artist
a  album
t  title
D  duration
d  date
T  track number
p  file path

With -s zuke will start in shuffled mode.

#Hot keys

-    volume down
+ =  volume up

left/right                  seek backwards/forward (10 seconds step)
, .                         seek backwards/forward (one minute step)
up down pgup pgdn home end  move within the playlist
o i                         move to the currently playing track
enter                       play the selected track

> b         skip next
< z         skip prev
v           stop
p c space   pause/resume
s           toggle shuffle
q/del       quit

/  search forward
?  search backwards
n  repeat search forward
N  repeat search backwards


left   - select a track
right  - menu
middle - play the track under the pointer