Placard 1.0.0 — bake library names onto backdrops

Jellyfin 10.11 plugin: a scheduled task that labels each library card with the
library name over a representative backdrop (Noto Sans, centered, soft shadow),
matching Jellyfin's default cover style. Supports source rules (top-rated /
random / newest) and per-library pinned sources. Sets images via the internal
provider API so the home-screen view cache updates without a server restart.
This commit is contained in:
flan
2026-07-19 19:35:06 +00:00
commit 0c59673e91
14 changed files with 630 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# Placard
A Jellyfin plugin that bakes each **library's name onto a representative backdrop**,
matching Jellyfin's default library-card styling — so your home-screen library cards
look intentional and stop rotating.
![example](docs/example.jpg)
## What it does
Jellyfin auto-generates a collage for libraries with no image and re-rolls it over
time. Placard replaces that with a static, labeled card per library:
- Picks a backdrop from a title in the library (highest-rated, random, or newest),
or a **pinned** title you choose.
- Composites the library name centered, in **Noto Sans**, with a soft drop shadow
over a light darkening scrim — the same look Jellyfin uses for its default covers.
- Sets the image through the internal provider API, so the change shows **without a
server restart**.
- Runs as a scheduled task (daily by default) and applies to new libraries too.
## Configuration
Dashboard → Plugins → **Placard**:
| Setting | Description |
|---|---|
| Enabled | Master on/off. |
| Backdrop source | Highest rated / Random / Newest title in each library. |
| Darkening | Scrim opacity (0–255); ~105 matches the default. |
| Label size | Label height as a percent of image height. |
| Pinned sources | One per line, `Library Name=Item Title`. Overrides the rule. |
Example pins:
```
Movies=The Dark Knight
Anime=Death Note
Collections=The Avengers Collection
```
Then run **Scheduled Tasks → Generate Placard library cards** (or wait for the daily run).
## Building
Requires the .NET 9 SDK (Jellyfin 10.11 targets net9.0).
```
dotnet build -c Release
```
Copy `bin/Release/net9.0/Jellyfin.Plugin.Placard.dll` (plus `meta.json`) into
`<jellyfin-config>/plugins/Placard_<version>/` and restart Jellyfin.
## Compatibility
- Jellyfin **10.11.x** (targetAbi `10.11.0.0`, net9.0).
- Uses the SkiaSharp bundled with the Jellyfin server.