Tree


.gitignorecommits | blame
LICENSEcommits | blame
Makefilecommits | blame
README.mdcommits | blame
bin/
demo/
doc/
src/
test/
tools/

README.md

# mcol

Terminal browser for an MPD release archive, written in Chez Scheme.

mcol scans dated release lists and builds its release list from their
slash-separated paths, read as:

- `artist/album`
- `label/artist/release` (or a longer label/artist/release path)

Blank lines and parent paths are not counted as releases. mcol scans recognized
dated lists without a date cutoff:

- `YEAR/MONTH/dailies/YYYY-MM-DD.txt`, or historical `DD_MM_YYYY.txt`
- `YEAR/dailies/YYYY-MM-DD.txt` as a fallback when a month-local daily is absent
- `YEAR/dailies/stdin_playlist_YYYYMMDD*.txt` as a fallback when no daily exists
- `YEAR/MONTH/1_..._....txt` through `YEAR/MONTH/4_..._....txt` for weekly lists

## Run

Requires Chez Scheme 10.4 or newer. Playback requires `mpc`.

```sh
make tui INPUT=/path/to/releases
```

Input is chosen from `--input`, then `MCOL_INPUT`, then the current directory:

```sh
export MCOL_INPUT=/path/to/releases
make tui
```

A small runnable demo is included in [`demo/`](demo/README.md):

```sh
make tui INPUT=demo
```

## Keys

```text
m  months       w  weeks       l  labels
a  artists      s  search      r  random play
p  play release  q  queue release
pa play buffer   qa queue buffer
nn next page    pp prev page   b  back
?  help         /  filter
x  exit
```

Enter a row number to open it. Commands such as `:month 2026-08`,
`:day 2026-08-11`, `:label Warp`, `:artist Autechre`, `:release Label/Artist/Release`, and
`:search Autechre`
are also accepted.

`r` plays random releases from the current buffer. mcol asks for a count and
defaults to 5. `pa` plays every release in the current buffer. `qa` adds every
release in the current buffer to the queue. Use `p 4 5 2` to play releases 4, 5
and 2 from the visible page. mcol adds them to the queue and starts the first
one. Use `q 4 5 2` to add them to the queue without playing.

## Build and install

```sh
make build
make test
make install                 # /usr/local
make install PREFIX=~/.local
```

See `mcol(1)` after installation. Set `NO_COLOR=1` to disable colour.