gtm.rs 🦀
Feature rich terminal audio player with background playback support and YouTube/Spotify integration. Rust implementation of the gtm spec.
Demo GIF placeholder — regenerate with VHS, see
tapes/VHS.md.
Features
- Background daemon (
gtmd) — playback survives terminal close; control it from the TUI, the CLI, or MPRIS. - YouTube, Spotify, Deezer integration — search, download, and resolve tracks, sync Spotify playlists, and fetch missing metadata/lyrics/cover art.
- Equalizer — 16 presets plus per-band gain, headroom stage, and a spectrum visualizer.
- Cover art — rendered inline via the kitty/terminal image protocol.
- Themes — 12 built-in themes (light and dark) plus user TOML themes.
- MPRIS — media player controls via D-Bus (optional feature).
- Termux / Android — runs on Android via PulseAudio (optional feature).
Install
You can use the shared install.sh script for an interactive, hassle free installation. It asks which implementation (gtm.rs or gtm.nim) and which install type you want:
|
Or pick this implementation directly:
|
GitHub Release
Every release publishes complete per-target archives plus native distro
packages. Each gtm-{platform}.tar.gz bundles both binaries
(bin/gtm, bin/gtmd), man pages, shell completions, and the systemd user
service. Grab one from the releases page.
Manual install for x86_64 Linux (tar.xvf style):
Substitute aarch64-linux, aarch64-linux-musl (musl), aarch64-darwin,
or aarch64-android for x86_64-linux as needed. Verify the download with the
release's checksums.txt.
Native packages are also published for each release:
| Format | Distro | Install |
|---|---|---|
.deb |
Debian / Ubuntu | sudo dpkg -i gtm_*.deb |
.rpm |
Fedora / RHEL / CentOS | sudo dnf install ./gtm-*.rpm |
.pkg.tar.zst |
Arch Linux | sudo pacman -U gtm-*.pkg.tar.zst |
.apk |
Alpine (musl) | sudo apk add --allow-untrusted ./gtm-*.apk |
Build from Source
Requires Rust 1.81+ and ALSA development headers (libasound2-dev on Debian/Ubuntu).
To install just the client binary (for example to try the TUI against an already-running daemon), or to install without system packages:
Screenshots
Crates
The audio player is split into separate crates, allowing you to easily pick which component of the player you want to tweak.
| Crate | Description |
|---|---|
gtm-core |
Shared types, IPC protocol, state machine, DaemonClient |
gtm-audio |
Audio playback backend (rodio + symphonia and fundsp) |
gtmd |
Daemon — manages queue, library, IPC socket |
gtm |
Client — TUI and CLI interface |
gtm-mpris |
MPRIS D-Bus interface (optional) |
Documentation
Contributing
[!note]
This is a hobby project but is feature complete and stable enough to use as my daily driver. However its still largely a WIP.
See CONTRIBUTING.md for build instructions, the crate layout and the green gates (fmt / clippy / test).
License 📜
(c) 2025 - present, prjctimg
This is free software, released under the GPL-3.0 license.