Plugin for seasonal themes/animations for Jellyfin Web
56
stars
335
commits
JavaScript
primary language
Sep 4, 2026
updated
Jellyfin Seasonals is a plugin that adds seasonal themes to your Jellyfin web interface. Depending on the configuration, it automatically selects a theme based on the current date or allows you to manually set a default theme.
This plugin is based on my manual mod (see the legacy branch), which builds up on the awesome work of BobHasNoSoul-jellyfin-mods.

Automatic Theme Selection: Dynamically updates the theme based on the date (e.g., snowflakes in December, fireworks for new year's eve).
Easy Integration: No manual file editing required. The plugin injects everything automatically.
Configuration UI: Configure settings directly in the Jellyfin Dashboard.
User Toggle & Menu Location: Optionally allow users to enable/disable seasonal effects from their client browser. Admins can choose the location of the settings button (Navbar, Sidebar, or Both) separately for desktop and mobile clients.
TV Layout Auto-Disable (Performance): Automatically disable Seasonals visual effects on TV display layouts (smart TVs, consoles, etc.) by default to optimize performance and prevent lag. TV users can still manually override this in their client settings.
Click on the following themes to expand them and see the theme in action:
And many more since version 2.0.0.0!
If you have any (specific) ideas for additional seasonals, feel free to open an issue or create a pull request. See the contributing guidelines for more details.
This plugin is based on Jellyfin Version 10.11.x
To install this plugin, you will first need to add the repository in Jellyfin.
https://raw.githubusercontent.com/CodeDevMLH/jellyfin-plugin-manifest/refs/heads/main/manifest.json
Since this plugin relies on modifying the web interface (CSS/JS injection), it only works on clients that use the web wrapper. Native clients that use their own UI rendering engine are not supported.
| Client Platform | Status | Notes |
|---|---|---|
| Web Browsers (Firefox, Chrome etc.) | ✅ | Direct JS injection |
| Jellyfin Media Player (Windows/Linux/macOS) | ✅ | Uses jellyfin web |
| Android App | ✅ | Uses a web wrapper |
| iOS App | ✅ | Uses a web wrapper |
| webOS (LG TV) | ✅ | Uses a web wrapper |
| Android TV / Fire TV | ❌ | Not supported. Uses a native Java/Kotlin UI. |
| Tizen OS | ❌ | Not supported. Uses a native UI. |
| Roku | ❌ | Not supported. Uses a native UI. |
| Swiftfin (iOS/tvOS) | ❌ | Not supported. Uses a native Swift UI. |
| Kodi (via Jellyfin Addon) | ❌ | Not supported. Uses Kodi's native skinning engine. |
After installation and restart:
Navbar, Sidebar, or Both) for desktop and mobile clients.If automatic selection is enabled, the following themes are applied based on the date. Specific holiday events take precedence over general seasonal themes.:
| Theme | Active Period | Description |
|---|---|---|
santa | Dec 22 – Dec 27 | Christmas theme |
fireworks | Dec 28 – Jan 05 | New Year's celebration |
hearts | Feb 10 – Feb 18 | Valentine's Day |
easter | Mar 25 – Apr 25 | Easter theme |
halloween | Oct 24 – Nov 05 | Halloween theme |
snowflakes | December (Remainder) | General December winter theme |
snowfall | January & February | General winter theme (outside of holidays) |
autumn | Sep, Oct, Nov | Fall theme (when not Halloween) |
none | All other dates | Default appearance |
Note: Holiday themes (like
santaorfireworks) override monthly seasonal themes (likesnowflakes).
Each theme contains additional settings to customize its behavior. Expand the advanced configuration section to configure each theme, adjust parameters like particle count, animation speed etc.
If you want to build the plugin yourself:
dotnet build Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj --configuration Release --output bin/Publish
Verify plugin installation:
Clear browser cache:
If you encounter the message Access was denied when attempting to inject script into index.html. Automatic direct injection failed. Automatic direct insertion failed. The system will now attempt to use the File Transformation plugin. in the log or similar permission errors in Docker:
Option 1: Use File Transformation Plugin (Recommended)
Seasonals now automatically detects and uses the File Transformation plugin (v2.5.0.0+) if it's installed. This eliminates permission issues by transforming content at runtime without modifying files on disk.
Installation Steps:
Benefits:
Option 2: Fix File Permissions
# Find the actual index.html location
docker exec -it jellyfin find / -name index.html
# Fix ownership (replace 'jellyfin' with your container name and adjust user:group if needed)
docker exec -it --user root jellyfin chown jellyfin:jellyfin /jellyfin/jellyfin-web/index.html
# Restart container
docker restart jellyfin
Option 3: Manual Volume Mapping
# Extract index.html from container
docker cp jellyfin:/jellyfin/jellyfin-web/index.html /path/to/jellyfin/config/index.html
# Add to docker-compose.yml volumes section:
volumes:
- /path/to/jellyfin/config/index.html:/jellyfin/jellyfin-web/index.html
Feel free to contribute to this project by creating pull requests or reporting issues. For detailed contribution guidelines, please refer to the CONTRIBUTING.md file.
331 commits
4 commits
JavaScript
47.2%
HTML
35.4%
CSS
11.9%
C#
5.5%
Plugin for seasonal themes/animations for Jellyfin Web
56
stars
335
commits
JavaScript
primary language
Sep 4, 2026
updated
Jellyfin Seasonals is a plugin that adds seasonal themes to your Jellyfin web interface. Depending on the configuration, it automatically selects a theme based on the current date or allows you to manually set a default theme.
This plugin is based on my manual mod (see the legacy branch), which builds up on the awesome work of BobHasNoSoul-jellyfin-mods.

Automatic Theme Selection: Dynamically updates the theme based on the date (e.g., snowflakes in December, fireworks for new year's eve).
Easy Integration: No manual file editing required. The plugin injects everything automatically.
Configuration UI: Configure settings directly in the Jellyfin Dashboard.
User Toggle & Menu Location: Optionally allow users to enable/disable seasonal effects from their client browser. Admins can choose the location of the settings button (Navbar, Sidebar, or Both) separately for desktop and mobile clients.
TV Layout Auto-Disable (Performance): Automatically disable Seasonals visual effects on TV display layouts (smart TVs, consoles, etc.) by default to optimize performance and prevent lag. TV users can still manually override this in their client settings.
Click on the following themes to expand them and see the theme in action:
And many more since version 2.0.0.0!
If you have any (specific) ideas for additional seasonals, feel free to open an issue or create a pull request. See the contributing guidelines for more details.
This plugin is based on Jellyfin Version 10.11.x
To install this plugin, you will first need to add the repository in Jellyfin.
https://raw.githubusercontent.com/CodeDevMLH/jellyfin-plugin-manifest/refs/heads/main/manifest.json
Since this plugin relies on modifying the web interface (CSS/JS injection), it only works on clients that use the web wrapper. Native clients that use their own UI rendering engine are not supported.
| Client Platform | Status | Notes |
|---|---|---|
| Web Browsers (Firefox, Chrome etc.) | ✅ | Direct JS injection |
| Jellyfin Media Player (Windows/Linux/macOS) | ✅ | Uses jellyfin web |
| Android App | ✅ | Uses a web wrapper |
| iOS App | ✅ | Uses a web wrapper |
| webOS (LG TV) | ✅ | Uses a web wrapper |
| Android TV / Fire TV | ❌ | Not supported. Uses a native Java/Kotlin UI. |
| Tizen OS | ❌ | Not supported. Uses a native UI. |
| Roku | ❌ | Not supported. Uses a native UI. |
| Swiftfin (iOS/tvOS) | ❌ | Not supported. Uses a native Swift UI. |
| Kodi (via Jellyfin Addon) | ❌ | Not supported. Uses Kodi's native skinning engine. |
After installation and restart:
Navbar, Sidebar, or Both) for desktop and mobile clients.If automatic selection is enabled, the following themes are applied based on the date. Specific holiday events take precedence over general seasonal themes.:
| Theme | Active Period | Description |
|---|---|---|
santa | Dec 22 – Dec 27 | Christmas theme |
fireworks | Dec 28 – Jan 05 | New Year's celebration |
hearts | Feb 10 – Feb 18 | Valentine's Day |
easter | Mar 25 – Apr 25 | Easter theme |
halloween | Oct 24 – Nov 05 | Halloween theme |
snowflakes | December (Remainder) | General December winter theme |
snowfall | January & February | General winter theme (outside of holidays) |
autumn | Sep, Oct, Nov | Fall theme (when not Halloween) |
none | All other dates | Default appearance |
Note: Holiday themes (like
santaorfireworks) override monthly seasonal themes (likesnowflakes).
Each theme contains additional settings to customize its behavior. Expand the advanced configuration section to configure each theme, adjust parameters like particle count, animation speed etc.
If you want to build the plugin yourself:
dotnet build Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj --configuration Release --output bin/Publish
Verify plugin installation:
Clear browser cache:
If you encounter the message Access was denied when attempting to inject script into index.html. Automatic direct injection failed. Automatic direct insertion failed. The system will now attempt to use the File Transformation plugin. in the log or similar permission errors in Docker:
Option 1: Use File Transformation Plugin (Recommended)
Seasonals now automatically detects and uses the File Transformation plugin (v2.5.0.0+) if it's installed. This eliminates permission issues by transforming content at runtime without modifying files on disk.
Installation Steps:
Benefits:
Option 2: Fix File Permissions
# Find the actual index.html location
docker exec -it jellyfin find / -name index.html
# Fix ownership (replace 'jellyfin' with your container name and adjust user:group if needed)
docker exec -it --user root jellyfin chown jellyfin:jellyfin /jellyfin/jellyfin-web/index.html
# Restart container
docker restart jellyfin
Option 3: Manual Volume Mapping
# Extract index.html from container
docker cp jellyfin:/jellyfin/jellyfin-web/index.html /path/to/jellyfin/config/index.html
# Add to docker-compose.yml volumes section:
volumes:
- /path/to/jellyfin/config/index.html:/jellyfin/jellyfin-web/index.html
Feel free to contribute to this project by creating pull requests or reporting issues. For detailed contribution guidelines, please refer to the CONTRIBUTING.md file.
331 commits
4 commits
JavaScript
47.2%
HTML
35.4%
CSS
11.9%
C#
5.5%