feat(jellyfin): big-screen theme for the TV, mounted into the wmc slot
This commit is contained in:
1 parent
64f489023e
commit
51abc6550d
3 files changed
+94
No files matched your search
@@ -407,6 +407,41 @@ removed. Discover a route's verb from the `Allow` header of an `OPTIONS` (or
|
||||
Seerr keeps a key of its own in its own DB (which of its two rows it uses was
|
||||
never confirmed), so revoke by token and never by app name.
|
||||
|
||||
## Big-screen theme (the TV)
|
||||
|
||||
`dankserver/jellyfin/theme/wmc/theme.css` is repo-owned and bind-mounted over the
|
||||
image's **Media Center** theme slot (the `Volume=` line in
|
||||
`dankserver/jellyfin/quadlet/jellyfin.container`). It exists for
|
||||
`danklivingroom`, which renders this server-served web app at 3840×2160 with no
|
||||
client-side scaling, so 14 px text arrives on a panel read from three metres.
|
||||
|
||||
The file is four rules, and its first line is the design:
|
||||
`@import url("../dark/theme.css")` pulls in the **live upstream** dark palette, so
|
||||
the repo never vendors a CSS snapshot and a Jellyfin image bump cannot strand one.
|
||||
That works because jellyfin-web applies a theme as
|
||||
`<link rel="stylesheet" href="themes/<id>/theme.css">` — a relative URL resolved
|
||||
against the CSS file, not the document. The size lives in one number:
|
||||
`--dank-big-screen-zoom` (1.75 ≈ three metres; 1.5 mild, 2.0 projector). `zoom` on
|
||||
the root element is the right lever: the card-grid code measures layout pixels, so
|
||||
fewer, larger columns are computed rather than overflow produced.
|
||||
|
||||
- **Adoption is per device, and it stays that way.** The theme a client renders
|
||||
comes from its own settings (localStorage first), so there is no server-side
|
||||
"everyone gets the big UI" knob. On the screen that wants it:
|
||||
**Display Settings → Theme → Media Center.** That is also the honest label —
|
||||
the dropdown names are compiled into the bundle, so a "Big Screen" entry will
|
||||
never appear; do not go looking for one.
|
||||
- The mount is `:ro` and the app only fetches the file, so the failure mode of a
|
||||
stale `@import` target is slightly wrong colors, never a dead web app.
|
||||
- **Editing the CSS needs no restart.** The bind hands out the host file's live
|
||||
bytes, so a changed zoom number is on screen at the next page load. The planner
|
||||
agrees by construction: only `dankserver/<svc>/quadlet/**` maps to a service, so
|
||||
a `theme/**`-only commit plans nothing — that is correct, not a gap to "fix",
|
||||
because restarting a media server for a font size is the wrong trade. Only the
|
||||
first deploy of the `Volume=` line restarts anything.
|
||||
- **Rollback is one line:** drop the `Volume=` and redeploy; nothing in the
|
||||
database records the theme, so no cleanup follows.
|
||||
|
||||
## See Also
|
||||
|
||||
- [[Plex]] — co-resident media server on the same volume
|
||||
|
||||
Reference in new issue
Block a user