# 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
You need Chez Scheme 10.4 or newer. Playback needs `mpc`.
```sh
ninja tui INPUT=/path/to/releases
```
Input is chosen from `--input`, then `MCOL_INPUT`, then the current directory:
```sh
export MCOL_INPUT=/path/to/releases
ninja tui
```
A small runnable demo is in [`demo/`](demo/README.md):
```sh
ninja 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
ninja build
ninja test
ninja install # /usr/local, escalates to sudo if needed
```
Run `ninja install` to write to a system prefix. mcol asks for `sudo` if the
target directories are not writable. Set `PREFIX`, `DESTDIR`, `SCHEME` or
`NO_COLOR` in the environment to override the defaults. See `mcol(1)` after
installation. Set `NO_COLOR=1` to turn off colour.