# termusic

> Terminal music and podcast player in Rust with a server/TUI split, rusty, MPV and GStreamer backends, tag editor, and YouTube downloads via yt-dlp.

Stars: 2.2k · Language: Rust · License: GPL-3.0 · Categories: Productivity

- Repository: https://github.com/tramhao/termusic
- Page: https://www.trmn.sh/tools/termusic

## Overview

termusic is a terminal music and podcast player written in Rust. It was started as a rewrite of the Go player GOMU to avoid data race problems. It has a TUI frontend that talks to a separate server over a protobuf-based protocol, and it includes a built-in tag editor and a podcast database.

Playback is handled by one of three backends. The default is `rusty`, which is based on Symphonia. MPV and GStreamer backends can be enabled with the `mpv` and `gst` features. The README gives a per-backend support matrix covering MP4/M4A, MP3, OGG, FLAC, ADTS, WAV/AIFF, CAF and MKV/WebM containers. It also covers the AAC, MP3, FLAC, Vorbis, Opus, ADPCM and PCM codecs. Opus in the rusty backend needs the `rusty-libopus` feature. The `rusty-soundtouch` feature enables SoundTouch as the speed modifier. MPRIS media control is supported through D-Bus on Linux.

Tracks can be downloaded from sources such as YouTube, NetEase, Migu and KuGou using `yt-dlp`, with `ffmpeg` for post-processing. Album covers can be shown inside the terminal with the `cover` feature, or through an Ueberzug implementation with `cover-ueberzug`. Configuration lives in `server.toml` and `tui.toml`, plus a `themes/` directory, under `~/.config/termusic/` on Linux, `~/Library/Application Support/termusic/` on macOS and `%APPDATA%\termusic\` on Windows. It is aimed at users who want a local, terminal-based music and podcast library on Linux, macOS or Windows.

![termusic main view](https://media.trmn.sh/cached/2c0c4b0d47300b03efc477683d836a2a14c1c30ef0f63413066b85233bd6f362.png)

![termusic tag editor](https://media.trmn.sh/cached/cf00152cd0253b3e9a833a723242c2d6cf560261e0d8f22ad66a59fc18e15f57.png)

## Alternatives

- [taskwarrior-tui](https://www.trmn.sh/tools/taskwarrior-tui.md): A terminal user interface for Taskwarrior with vim-like navigation and live filtering capabilities. (Rust, 2.2k stars)
- [kalker](https://www.trmn.sh/tools/kalker.md): Scientific calculator CLI with support for calculus, variables, functions, matrices, and multiple number bases (Rust, 1.9k stars)
- [Numbat](https://www.trmn.sh/tools/numbat.md): Statically typed scientific calculator language with physical dimensions as types and first-class units, with an interactive REPL and unit conversion via ->. (Rust, 2.8k stars)
- [basalt](https://www.trmn.sh/tools/basalt.md): Terminal user interface (TUI) for managing Obsidian vaults and notes from the command line (Rust, 1.4k stars)
- [outside](https://www.trmn.sh/tools/outside.md): Terminal weather client with multiple output formats including TUI, JSON, and Waybar integration (Rust, 103 stars)

---

Canonical: https://www.trmn.sh/tools/termusic
