tsiry-sandratraina.com/fin at main · Tangled
tsiry-sandratraina.com
fin
Star
Fork
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
a Jellyfin & Subsonic client for the terminal — powered by mpv, Chromecast and UPnP MediaRenderer
jellyfin
upnp
tui
mpv
chromecast
Star
Fork
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Rust
98.6%
Nix
1.1%
Shell
0.1%
Other
0.2%
main
fix/status-bar-help-ttl
v0.3.1
v0.3.0
v0.2.0
v0.1.0
56
Code
Clone this repository
Use permalink
HTTPS
https://tangled.org/tsiry-sandratraina.com/fin<br>https://tangled.org/did:plc:tad7qmftxdjq62iw3lp4syfi<br>getComputedStyle(s).display !== 'none').textContent)"<br>class="px-3 py-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"<br>title="Copy to clipboard"
SSH
git@tangled.org:tsiry-sandratraina.com/fin<br>git@tangled.org:did:plc:tad7qmftxdjq62iw3lp4syfi<br>getComputedStyle(s).display !== 'none').textContent)"<br>class="px-3 py-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"<br>title="Copy to clipboard"
For self-hosted knots, clone URLs may differ based on your setup.
Download tar.gz
Download .zip
.github
1 hour ago
.tangled
1 day ago
crates
21 hours ago
dist
21 hours ago
.envrc
3 days ago
.gitignore
3 days ago
CHANGELOG.md
21 hours ago
Cargo.lock
21 hours ago
Cargo.toml
21 hours ago
LICENSE
3 days ago
README.md
12 hours ago
flake.lock
3 days ago
flake.nix
3 hours ago
Commits<br>56
Add Nix build CI workflow
Run nix build on ubuntu-latest and macos-latest for every push to<br>main and every pull request, using the Determinate Systems Nix<br>installer.
90dc271e
tsiry-sandratraina.com
1 hour ago
main
1/1
build.yml
success
4m 18s
update flake.nix
20415e23
tsiry-sandratraina.com
3 hours ago
1/1
build.yml
success
4m 11s
Fix Gemfury account name in README install instructions
The apt and yum repos live under https://apt.fury.io/tsiry and<br>https://yum.fury.io/tsiry, not tsirysndr.
ba2a1cdf
tsiry-sandratraina.com
12 hours ago
1/1
build.yml
success
3m 55s
Branches
main
1 hour ago
Default
fix/status-bar-help-ttl
3 days ago
Compare
Tags
v0.3.1
Latest
README.md
fin#
a Jellyfin & Subsonic client for the terminal — powered by symphonia, mpv, Chromecast, and UPnP
fin is a Rust TUI + one-shot CLI that talks to your Jellyfin or<br>Subsonic server (Navidrome, Airsonic, Gonic, Astiga, … — the flavour is<br>auto-detected at login), searches your library, manages playlists, and pushes<br>streams to your local machine<br>(symphonia for audio, mpv for video), any Chromecast on your<br>network, or any UPnP MediaRenderer (Sonos, Kodi, Roon endpoints, Samsung/LG<br>TVs, gmediarender, …). Local playback is now audio-native — HTTP streaming,<br>decoding, resampling, and output all run in-process, and audio never touches<br>mpv. Remote playback is fully queued, with client-side auto-advance.
Contents#
Features
Install
macOS / Linux — Homebrew
Debian / Ubuntu — .deb
Fedora / RHEL / openSUSE — .rpm
Arch — from AUR / source
Prebuilt tarballs
From source
Nix
Getting started
Renderer selection
All settings
Multiple servers
Sub-commands
Keybindings (TUI)
Playback modes & effects
Shuffle
Repeat
ReplayGain
Crossfade
Equalizer
Bass & treble
Queue persistence
Remote-renderer queue
Streams & transcoding
Development
License
Features#
Ratatui-based TUI with a neon-electric palette (teal / cyan / violet).
In-process audio — HTTP streaming + symphonia decode (MP3, FLAC, AAC,<br>Opus, Vorbis, ALAC, WAV, …) + resampling + cpal output. mpv is used only<br>for video.
fzf-style instant search — results update on every keystroke.
Drill-in navigation — Enter on an album lists its tracks, Enter on a<br>series lists its episodes, Enter on a playlist lists its items. x<br>plays the whole container in one go, Shift+X does the same shuffled.
No list truncation — Music, Videos, and Playlists fetch every item<br>the server has, so nothing stays hidden past an arbitrary limit.
Three renderers , one interface:
local (default) — symphonia + cpal for audio, mpv for video, spawned<br>only when needed.
chromecast — device discovery via mDNS, playback through the Default<br>Media Receiver, with a local queue that auto-advances on FINISHED.
upnp — SSDP discovery of any UPnP AV MediaRenderer, playback via<br>AVTransport (SetAVTransportURI / Play / Pause / Stop / Seek)<br>and volume via RenderingControl. Same auto-advancing queue.
Playback modes — shuffle, repeat-off/all/one, ReplayGain<br>(track / album), crossfade between adjacent tracks<br>(traditional cosine curves or additive DJ-mixed), and a<br>10-band equalizer powered by the Rockbox DSP pipeline.
Queue persistence — the audio queue, shuffle/repeat state, and the exact<br>playhead within the current track survive restarts. Restore lands paused;<br>Space picks up where you...