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 client for the terminal — powered by mpv and Chromecast
chromecast
jellyfin
upnp
tui
mpv
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
97.3%
Nix
2.2%
Shell
0.1%
Other
0.5%
main
fix/status-bar-help-ttl
v0.2.0
v0.1.0
15
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 day ago
.tangled
1 day ago
crates
1 day ago
dist
1 day ago
.envrc
1 day ago
.gitignore
1 day ago
Cargo.lock
1 day ago
Cargo.toml
1 day ago
LICENSE
1 day ago
README.md
1 day ago
flake.lock
1 day ago
flake.nix
1 day ago
Commits<br>15
Expire TUI status messages so the help hints reappear
The status bar shows a keybinding cheat sheet whenever `status_message`<br>is `None`, but load results like `♪ 118 album(s)` were set on screen<br>load and never cleared, so the help was only visible for a blink before<br>being overwritten.
Stamp each status message with an `Instant` and treat entries older than<br>4s as `None` at draw time. The 200ms tick loop guarantees the redraw<br>that flips them back to the help text.
39608ea6
tsiry-sandratraina.com
1 day ago
main
1/1
build.yml
success
3m 14s
docs: document UPnP renderer in README
e4591681
tsiry-sandratraina.com
1 day ago
v0.2.0
1/1
build.yml
success
6m 35s
update README.md
a0bdaa7d
tsiry-sandratraina.com
1 day ago
1/1
build.yml
success
7m 4s
Branches
main
1 day ago
Default
fix/status-bar-help-ttl
1 day ago
Compare
Tags
v0.2.0
Latest
README.md
fin#
a Jellyfin client for the terminal — powered by mpv, Chromecast, and UPnP
fin is a Rust TUI + one-shot CLI that talks to your Jellyfin server, searches<br>your library, manages playlists, and pushes streams to your local mpv<br>window, any Chromecast on your network, or any UPnP MediaRenderer (Sonos,<br>Kodi, Roon endpoints, Samsung/LG TVs, gmediarender, …). Remote playback is<br>fully queued — enqueue, play-next, skip, resume, all from the terminal.
Features#
Ratatui-based TUI with a neon-electric palette (teal / cyan / violet).
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.
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:
mpv (local) — spawned automatically and driven via its JSON IPC socket.
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.
Real queue management — enqueue, play next, jump between tracks, and<br>see the whole queue in its own tab. Works identically for all renderers.
Playlists — browse, open, and play the playlists you've saved on the<br>server.
Now Playing bar with title, subtitle, elapsed / total time, a neon<br>progress gauge, volume, and the active renderer.
CLI shortcuts for scripting: fin play "kind of blue",<br>fin queue --chromecast "Living Room" "wednesday",<br>fin play --upnp "Kitchen Speaker" "solaris", fin devices.
All settings are available as CLI flags or TOML keys — one<br>workflow scales from ad-hoc invocation to per-machine config.
Pure Rust TLS (rustls) everywhere — no OpenSSL required.
Install#
fin needs mpv on your $PATH at runtime. Every install path below<br>either bundles it or pulls it in as a dependency.
macOS / Linux — Homebrew#
brew install tsirysndr/tap/fin<br>The formula pulls in mpv automatically.
Debian / Ubuntu — .deb#
Download the .deb for your architecture from the<br>latest release and:
# amd64<br>curl -LO https://github.com/tsirysndr/fin/releases/latest/download/fin_0.2.0_amd64.deb<br>sudo apt install ./fin_0.2.0_amd64.deb
# arm64 (Raspberry Pi 4/5, Apple-silicon VM, …)<br>curl -LO...