mkplist, zuke – graphical music player

audio/mkplist [ –s ] directory/file/URL [...]
audio/readtags [ –i ] [file ...]
audio/zuke [ –s ] [ –c columns ]


Zuke is a graphical music player that reads a playlist from standard input and presents an interface to play music.

Playlists are generated by mkplist, which accepts files, directories, and URLs as its arguments, and writes the resulting playlist to standard output. Option –s enables "simple" sorting of the entries of the playlist, where only full paths are compared.

Formats supported by zuke are: MP3, OGG/Vorbis, FLAC, and WAV. With additional programs, Opus, modules and M4A (AAC) can be played. Zuke also supports network streams, such as IceCast. Option –s enables ``shuffle'' mode on start.

The columns (and their order) displayed can be changed by passing the following letters along –c option:
A   Artist
a   Album
b   File basename
t   Title
D   Duration
d   Date
T   Track number
p   Full file path

By default, artist, album, title, and duration are displayed, which corresponds to –c AatD.

Zuke can be controlled with a mouse, keyboard, and plumber. Button 1 selects a track, button 2 plays a track. Clicking on the seek bar changes the playback position accordingly. On the right of the seek bar, current position, track duration and volume are displayed. ``∫'' is shown if shuffle mode is enabled.

Plumbing a file with .plist extension loads the playlist in zuke. This is useful with a collection of playlists displayed aside.

Zuke provides a number of keyboard controls:
Lower volume.
+ =                      Increase volume.
↓ Pgup Pgdown Home End   Move within the playlist.
o i                      Jump to current track.
Enter                    Play selected track.
> b                      Skip to next track.
< z                      Skip to previous track.
   →                      Seek 10 seconds back/forward.
, .                      Seek 60 seconds back/forward.
v                        Stop
p c Space                Pause/Resume.
r                        Toggle ``repeat one''.
g                        Switch between no gain, track gain, and album gain applied.
s                        Toggle ``shuffle''.
q Del                    Quit.
/                        Search forward.
?                        Search backwards.
n                        Repeat search forward.
N                        Repeat search backwards.

Typing any digit initiates a "Seek to" prompt. Minutes, hours and seconds can be separated with a colon, if needed, otherwise the position is taken as seconds from the beginning of the track.

Zuke can be controlled by emulating key presses via the plumber port audio.

Files present in the current playlist can be plumbed too, and will be played immediately.

When a new track starts playing, zuke will write its tags to stdout, each column separated by a tab character. If playback is stopped, an empty line is written instead. This can be used for scrobbling or displaying the current track in another window.

Readtags prints tags stored within audio files. When option –i is specified, it will try to extract the cover image and write it to standard output as a Plan 9 image instead.

Generate a playlist:
audio/mkplist /usr/glenda/music \
file.mp3 \ > music.plist

Playing a playlist:
audio/zuke < music.plist

Append to a playlist:
audio/mkplist /n/moremusic >> music.plist

Skip to the next track using plumber:
plumb –d audio 'key >'



Zuke first appeared in 9front (April, 2021).