Skip to content

vdawg-git/moo

Repository files navigation

Moo

Sick terminal music player

Warning

The app is in early development. There are bugs and a lot of features I still need to implement.

Features

  • Create smart playlists with a simple config (including autocompletion!)
    • Easy to back up. It's just simple .yml files
    • Updates automatically when your library changes
  • Easy to use
    • Nice flexible runner a la VS Code.
    • No need to remember every shortcut. Just type the first letters of what you want
  • Simple Json5 config with out-of-the-box LSP support via JSON schema :)
  • Customize it to your liking.
    • (Chorded) keybindings, icons and more
    • Custom layouts/colors will get added in the future

How to use

  • Use ; to switch to other playlists.
  • Use : to open the commandd runner.
  • Enter to play the selected track.
  • Space to toggle pause.
  • Default keybindings use Vim mode.

Config

You can find the config in ~/.config/moo/config.json5 . To take full advantage of the format use an editor with a Yaml LSP.

For VS Code you can install the Yaml Extention.

Smart playlists

Create playlists as .yml files in ~/.config/moo/playlists/ .

The filters can be as complex and deeply nested as you want :)

Here is an example of a playlist:

# yaml-language-server: $schema=https://raw.githubusercontent.com/vdawg-git/moo/refs/heads/main/other/schemas/mooPlaylist.json

rules:
  - all:
      - artist:
          includes: ["Rick Astley", "Waterman"]
      - title:
          includes: ["never gonna give you up"]

  - any:
      - genre:
          includes: "deephouse"
      - all:
          - artist:
              starts_not_with: "Grass"
          - genre:
              includes: ['idk smth']

Install

On Arch you can use the AUR via yay -S moo .

Requirements

  • mpv

  • Bun

  • Terminal with Nerdfonts support like Kitty or Ghostty or use a patched font.

    You can also change all Nerdfont icons to regular letters in the config though.

Steps

  • Install the required depedencies (mpv and Bun)
  # Clone the repo
  git clone [email protected]:vdawg-git/moo.git
  cd moo
  # Install the dependencies
  bun install
  # Compile into a single executable
  bun compile

The executable app will be compiled into ./dist/moo

Credits

  • Tuir: React TUI library which powers the app.
  • Kew: Design inspiration
  • Musikcube: Design inspiration