shithub: zuke

ref: dd231a1c06f2da190f5d29f3f2aa01323600d1af
dir: /README.md/

View raw version
# zuke

A music player for Plan 9.

![screenshot](zuke.jpg)

With some stuff one expects from a music player:

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

## 2020/12/22

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](http://runjimmyrunrunyoufuckerrun.com/rc/music).

## Installing

Install [libtags](https://git.sr.ht/~ft/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

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

## Formats

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

To play opus, visit [this](http://nopenopenope.net/posts/audcomp).

To play ImpulseTracker mods, install [itdec](https://git.sr.ht/~ft/itdec).

## Theme

To change the default theme install
[picker](https://git.sr.ht/~ft/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`):

```
theme=.../my.theme
```

## 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

## Mouse

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