Archive of https://git.etawen.dev/earthonion/jellyfin-tv-mode — Jellyfin plugin that forces TV/gamepad layout with smooth scrolling on all pages including sign-in
  • C# 62.3%
  • HTML 37.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-13 00:12:32 -04:00
Pages initial commit 2026-10-13 00:12:32 -04:00
.gitignore initial commit 2026-10-13 00:12:32 -04:00
jellyfin-tv-mode.csproj initial commit 2026-10-13 00:12:32 -04:00
Plugin.cs initial commit 2026-10-13 00:12:32 -04:00
PluginConfiguration.cs initial commit 2026-10-13 00:12:32 -04:00
README.md initial commit 2026-10-13 00:12:32 -04:00
TvModeController.cs initial commit 2026-10-13 00:12:32 -04:00
TvModeEntryPoint.cs initial commit 2026-10-13 00:12:32 -04:00
TvModeServiceRegistrator.cs initial commit 2026-10-13 00:12:32 -04:00

Jellyfin TV Mode

Jellyfin plugin that forces TV/gamepad layout with smooth scrolling on all pages, including the sign-in screen.

Features

  • Forces TV layout before the web client initializes (works on login page)
  • Smooth scrolling
  • URL param override: ?layout=tv, ?layout=desktop, ?layout=mobile
  • Config page in Admin Dashboard → Plugins → TV Mode

Install

  1. Build or download Jellyfin.Plugin.TvMode.dll
  2. Create <jellyfin-data>/plugins/TvMode_1.0.0.0/
  3. Drop in the DLL and meta.json
  4. Make index.html writable: chown jellyfin /usr/share/jellyfin/web/index.html
  5. Restart Jellyfin

Build

dotnet build

Requires .NET 9 SDK. References Jellyfin 10.11 assemblies from /usr/lib/jellyfin/bin/.

How it works

On startup the plugin injects a <script> tag into the web client's index.html that loads /TvMode/ClientScript. That endpoint returns JavaScript that sets localStorage.layout before the Jellyfin bundle reads it — so TV mode applies on every page load, including pre-auth.

On shutdown the injected tag is removed.