Music player for Plan 9
a history? are you kidding me...
libtags update: MOD format


browse  log 



You can also use your local clone with git send-email.




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


The module music decoder of choice is now audio/moddec, a port of DUMB. Please install it if you want to continue playing those mods.


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

#Text-based alternative

Behold, a music player in rc, with keyboard control, plumbing, and a playlist that can be live-edited(!), by umbraticus: music.


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/music.plist
audio/zuke < $home/music.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

To remote control zuke, you can emulate pressing keys through plumber (ugh!):

plumb -d audio 'key >' # will skip to the next song


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

To play opus, visit this.

To play music mods, install audio/moddec.

To play m4a, install AAC decoder and mcfs.


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
b  file basename
t  title
D  duration
d  date
T  track number
p  full 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