[AIP] Fathom v0.9.0: a new desktop Jellyfin client with built-in server management, Seerr, and YouTube (github.com)
from TraceApps@lemmy.world to selfhosted@lemmy.world on 25 Jul 14:38
https://lemmy.world/post/49880681

I’ve been building Fathom, a desktop Jellyfin client, for quite some time and just put out the first public release (0.9.0) for Linux and Windows.

The real draw is having everything in one place. Your Jellyfin movies, shows, music, and Live TV; most of Jellyfin’s important server-side management (users, libraries, scheduled tasks, transcoding, Live TV and DVR, and more); and optional Seerr requests plus a full YouTube client, all without leaving the app. No bouncing between the web dashboard, a requests page, and a browser tab. One window does the lot.

What’s in it:

It’s Linux-first (built and tested on Arch/KDE) with a self-contained AppImage, plus a portable Windows build. Android and more features are on the roadmap.

Download + source: github.com/Fathom-Media/fathom/releases/…/v0.9.0 Repo (AGPL-3.0): github.com/Fathom-Media/fathom

This is the first public release, so expect a few rough edges. All feedback is genuinely wanted: bug reports, feature requests, and ideas. The goal is to grow Fathom into one of the best Jellyfin clients out there, so open an issue or start a discussion and it’ll get read.

AI Disclosure

Per Rule 7 / [AIP] disclosure requirements AI was used during development as a coding assistant. Level per category:

#selfhosted

threaded - newest

warmaster@lemmy.world on 25 Jul 15:08 next collapse

Any screenshots?

[deleted] on 25 Jul 15:14 next collapse

.

TraceApps@lemmy.world on 25 Jul 15:14 collapse

yes here are a few of different areas: <img alt="" src="https://lemmy.world/pictrs/image/c42f5a4e-5c5e-477f-956c-9c8ee3c2e804.png"><img alt="" src="https://lemmy.world/pictrs/image/4e9688f7-989c-4f5e-b507-02084c6fae04.png"><img alt="" src="https://lemmy.world/pictrs/image/bb9fe704-4133-4e18-bc9b-5e58592d627e.png">

warmaster@lemmy.world on 27 Jul 08:27 collapse

That looks great!

deleted@lemmy.world on 25 Jul 19:54 next collapse

Great app and AI disclosure. AI is a tool and useful when used properly.

Gonna try it!

Jjoiq@lemmy.world on 26 Jul 07:26 next collapse

Is this compatabile with Emby per chance?

TraceApps@lemmy.world on 26 Jul 12:55 collapse

Unfortunately, it’s Jellyfin-only. Emby and Jellyfin came from the same codebase originally, but their APIs and auth have drifted apart enough that Fathom’s Jellyfin-specific calls won’t work against Emby. No Emby support planned, the focus is Jellyfin, alongside the Seerr and YouTube pieces.

sk@utsukta.org on 26 Jul 08:12 next collapse

i cant sign-in, any chance this is because i use LDAP auth plugin in jellyfin and its not implemented here?

TraceApps@lemmy.world on 26 Jul 12:54 collapse

Sign-in goes through Jellyfin’s normal username/password endpoint (AuthenticateByName) plus Quick Connect, which is the same path the LDAP plugin hooks into, so LDAP logins generally work with a standard client like this, it shouldn’t be the blocker by itself. A few things worth trying: if your server has Quick Connect enabled, try that (it sidesteps the password path entirely and is a good way to isolate the problem); double-check the server URL has the scheme and port (e.g. host:8096); and a self-signed HTTPS cert can also cause a failure. If you can paste the exact error you’re seeing, I’ll dig in, and a GitHub issue is welcome.

sk@utsukta.org on 26 Jul 12:59 collapse

this is all i see
<img alt="Image/photo" src="https://utsukta.org/photo/40038f6d-a7ce-41e4-b2a3-aa9f632c52ab-1.png">

i am using the linux Appimage, quick connect simply times out, no messages in console except :

./Fathom-x86_64.AppImage 
Gtk-Message: 18:26:14.006: Failed to load module "xapp-gtk3-module"
Gtk-Message: 18:26:14.006: Failed to load module "canberra-gtk-module"
package:media_kit_libs_linux registered.
[W][18:26:18.213431] pw.conf      | [          conf.c: 1209 pw_conf_load_conf_for_context()] setting config.name to client-rt.conf is deprecated, using client.conf
I have jellyfin running on a domain with proper certs and jellyfin's official client works perfectly.
TraceApps@lemmy.world on 26 Jul 13:26 collapse

Sorry about that. That message is a network timeout, so the Quick Connect request isn’t getting a response back within the window. Since you had to enter the server address to reach that screen, plain reachability and your cert are should be fine, so it’s something specific to the Quick Connect path.

Two things would help me narrow it down:

Does normal username/password sign-in work against the same server, or does that time out too? If password works and only Quick Connect hangs, that isolates it to the Quick Connect endpoints.

Is Jellyfin behind a reverse proxy (nginx/Caddy/Traefik), and which Jellyfin version?

sk@utsukta.org on 26 Jul 13:47 collapse

was running v10.11.9, updated to 10.11.11 and it started working. 
interface looks nice! but playback stutters, with hardware acceleration on or off (makes no difference).

TraceApps@lemmy.world on 26 Jul 15:20 collapse

Glad 10.11.11 fixed the login. Since it’s the same with hardware acceleration on or off, decoding isn’t the bottleneck, it’s likely delivery or frame timing. Two quick checks: in your Jellyfin dashboard, is that session Direct Play or Transcode? And does the same file play smoothly in plain mpv/VLC (Fathom uses libmpv underneath)? That’ll tell us if it’s server/network vs. something on the Fathom side.

sk@utsukta.org on 26 Jul 15:25 collapse

def. on fathom side since it plays smooth in jellyfin official client. and its direct playing. there is tearing, stuttering in video, audio is good.

TraceApps@lemmy.world on 26 Jul 16:41 collapse

Thanks, that narrows it down a lot. Fathom renders through libmpv and currently leans on its default frame timing, where a well-tuned client instead syncs frames to the display refresh.

Two questions would let me pin it down:

Which official client are you comparing against: the web client in a browser, or the Jellyfin Media Player desktop app? It matters because a browser hands video to a hardware overlay that is tear-free by design, while Jellyfin Media Player runs the same engine Fathom does, just configured differently.

What OS are you on, and what is your monitor’s refresh rate (60, 120, 144Hz)? On Linux, which desktop or compositor?

On the fix side, the next dev build adds a “Smooth Motion (Display Sync)” option under Settings > Playback > Advanced that paces frames to your monitor’s refresh. That is the usual cure for this kind of judder, so please try it when you have a moment.

The same build also adds a Diagnostics screen under Settings > About. Open it, turn on Diagnostic Logging, start the video again, let the stutter happen for a few seconds, then use “Copy Diagnostics” and paste the result here. That shows me the exact decode path and frame timing instead of me guessing. It strips out anything sensitive before copying.

github.com/Fathom-Media/fathom/…/v0.9.1-dev.3

potustheplant@feddit.nl on 26 Jul 08:36 next collapse

I’m assuming the youtube client is precisely that, right? Meaning that it’s the client that fetches the stream, not the server. Asking because Google’s been very annoying about not veing able “verify my country” due to travelling for extended periods of time. So I’m trying to find a way to spoof my location.

TraceApps@lemmy.world on 26 Jul 12:53 collapse

Yes, the YouTube side is fully client-side, the app resolves and fetches the stream directly, the Jellyfin server isn’t involved at all. So YouTube sees the connection of whatever machine is running Fathom, using that machine’s IP and location. Fathom doesn’t spoof anything itself, but because it’s client-side, running it at home or behind a VPN is what should decide the location YouTube sees.

potustheplant@feddit.nl on 26 Jul 13:02 collapse

Yeah except that YouTube support told me that they can detect if you’re using a vpn or no. At least in my case, using ProtonVPN that seems to be the case because when I try to subscribe to premium, it says that they can’t verify my country.

TraceApps@lemmy.world on 26 Jul 13:29 collapse

Yeah, unfortunately that’s a Google account/billing thing, not a playback thing. Fathom only fetches the video stream on your machine; it doesn’t touch your account or Premium. That “verify your country” check is much stricter than playback and wants a residential IP in the country, so datacenter VPN ranges like Proton’s can get “flagged”. Nothing i think a media client alone can get around.

potustheplant@feddit.nl on 26 Jul 17:38 collapse

My thought was that (maybe) the server (aka fathom in this case) could be the one that has the active youtube session so that it fetches the stream and then uploads it to the client. Acting like a proxy of sorts. To youtube, the user is always where the server is, but you can move around freely without issues.

CAVOK@lemmy.world on 26 Jul 11:41 next collapse

Any idea of integrating it into I2P? Being able to torrent files anonymously would be nice maybe?

TraceApps@lemmy.world on 26 Jul 12:56 collapse

Interesting idea, but that’s out of scope for this app, Fathom is just a Jellyfin/YouTube/Seerr client, with no torrent or P2P layer, so there’s nothing for I2P to integrate with.

CAVOK@lemmy.world on 26 Jul 17:25 collapse

Alright, just an idea. Will check it out when I get back to my computer.

vpklotar@lemmy.world on 26 Jul 13:37 next collapse

Oh man, of this just had a controller friendly interface for YouTube I could ditch my Nvidia shield and setup an HTPC with KDE big screen and this. Would’ve been awesome!

Nice project anyways!

electric_nan@lemmy.ml on 26 Jul 13:55 next collapse

Sounds rad. Can’t wait to try it out.

Axolotl_cpp@feddit.it on 27 Jul 10:05 collapse

Does it have adblocking and sponsorblock for youtube?

TraceApps@lemmy.world on 27 Jul 11:14 collapse

yes both are included as an available option to enable/disable!

Axolotl_cpp@feddit.it on 27 Jul 12:20 collapse

That’s great!