Skip to content

Zenrac/Zenrac-jellyfin-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BANNER

A collection of useful JavaScript scripts and CSS snippets to enhance your Jellyfin web client and improve your overall experience.

⚠️ Disclaimer

  • These snippets are created by a new Jellyfin user (me). They prioritize compatibility over performance or efficiency.
  • My JavaScript scripts are experimental and may rely on frequent setInterval checks, which can affect performance depending on your setup. Use them at your own discretion. Optimizations are possible by replacing intervals with event-based listeners where applicable.

🛠️ Prerequisites

  • Tested on Jellyfin Web Client v10.11.5. Compatibility with other versions is not guaranteed.
  • CSS snippets can be added directly via Dashboard > Branding or through external plugins.
  • JavaScript scripts can be added using Jellyfin-JavaScript-Injector.

CSS Snippets

Remove "My Media" from Home Page

@import url("https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/css/remove-my-media.css");

Remove "Cast" from show pages

@import url("https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/css/remove-cast.css");

Show full season/movie name in show/collection

@import url("https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/css/show-full-season-name.css");

JavaScript Scripts

Display cards in search suggestion

Replace hyperlinks in search's suggestions with cards.

Suggestion

You can configure:

  • itemsCount - number of items to display.
  • horizontalScroll - enable horizontal scrolling instead of vertical wrap.
const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/suggestions-card.js";
s.dataset.itemsCount = 20;
s.dataset.horizontalScroll = "false";
s.async = true;
document.head.appendChild(s);

Clickable Header Logo

Allows clicking the header logo to return Home. Also modifies the 'Home' tab behavior to match the 'Home' in menu, fixing a issue with Media Bar Plugin.

Clickable Header Logo

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/clickable-header-logo.js";
s.async = true;
document.head.appendChild(s);

Remove Next Up Items

Enhances the KefinTweaks plugin to also be able to remove items from Next Up (it currently only allows removing Watching items)

NextUp

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/remove-nextup-item.js";
s.async = true;
document.head.appendChild(s);

Video Theme Player Modal

Enabling Settings > Display > Theme videos adds a button to open the video theme player in a modal.

Open player

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/open-player-video-theme.js";
s.async = true;
document.head.appendChild(s);

Video Themes List

Adds video themes in show details. Ordering for Openings/Endings is supported. Built-in player in a modal.

Video Theme

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/display-video-theme.js";
s.async = true;
document.head.appendChild(s);

More buttons on home sections

Adds "Hide Watched" and "Random Dice" buttons to specified sections (can be configured individually). Uses Jellyfin-Enhanced for random dice. This supports KefinTweaks plugin section IDs.

Home Buttons

You can configure:

  • diceButtonSection - Comma-separated list of section identifiers or class names where the Random (dice) button should be added.
  • hideButtonSection - Comma-separated list of section identifiers or class names where the Hide Watched button should be added.
  • countSection - Comma-separated list of section identifiers or class names where the item count badge should be added (defaults to NextUp, ContinueWatchingNextUp, ContinueWatching, watchlist).

To explicitly disable one of these features, set it to an empty string ("").

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/home-section-button.js";
s.dataset.diceButtonSection = "LatestShows,RecentlyAddedShows,new-episodes,watchlist,NextUp,ContinueWatchingNextUp,ContinueWatching";
s.dataset.hideButtonSection = "LatestShows,RecentlyAddedShows,new-episodes";
s.dataset.countSection = "LatestShows,RecentlyAddedShows,new-episodes,watchlist,NextUp,ContinueWatchingNextUp,ContinueWatching";
s.async = true;
document.head.appendChild(s);

Disable examples:

s.dataset.diceButtonSection = "";
s.dataset.hideButtonSection = "";
s.dataset.countSection = "";

Remove HTML Tags in MediaBar

A small fix for Media Bar to remove buggy HTML tags from Shows descriptions.

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/media-bar-plot-fix.js";
s.async = true;
document.head.appendChild(s);

Remove Dark Reader extension

Dark Reader is a very popular extension but it causes issues with Jellyfin. This script forces the extension to ignore your pages.

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/remove-dark-reader.js";
s.async = true;
document.head.appendChild(s);

Fix Plugin Page on Android Mobile App

Plugin Pages does not work on android mobile app because of JQuery. This script loads JQuery then reloads Plugin Pages.

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/plugin-pages-android.js";
s.async = true;
document.head.appendChild(s);

Clickable Upcoming Cards (Shows/Movies)

Makes Upcoming Shows/Upcoming Movies cards from Home Screen Sections clickable by linking them to the item details page.
Uses the Jellyfin-Enhanced ARR calendar endpoint to map titles to Jellyfin items.

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/clickable-upcomings.js";
s.async = true;
document.head.appendChild(s);

New Season Badge

Adds a visual badge for series with a new season to make them easier to spot in lists.

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/new-season-badge.js";
s.async = true;
document.head.appendChild(s);

All-in-one (JS and CSS)

To get everything in one JS. Convenient but not customizable.

all.js loader version:

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/js/all.js";
s.async = true;
document.head.appendChild(s);

combined.min.js single-file version:

const s = document.createElement("script");
s.src = "https://cdn.jsdelivr.net/gh/Zenrac/Zenrac-jellyfin-scripts@latest/combined.min.js";
s.async = true;
document.head.appendChild(s);

🤖 AI Assistance

  • The banner image at the top was generated with AI.
  • Some code was AI-assisted but manually improved, reviewed and tested before use.

🤝 Contribution Guidelines

  • Contributions are welcome! You can suggest new JS or CSS snippets, improvements to existing ones, or fixes.
  • Please make sure your code is compatible with Jellyfin Web Client v10.11.5 or clearly specify if it targets other versions.
  • Respect existing code style and naming conventions to keep the repository consistent.
  • For discussions, ideas, or questions, you can open an issue or join the Jellyfin Community Discord.

Licence

This project is licensed under the MIT License - see the LICENSE file for details.

About

Zenrac's Jellyfin JS scripts and CSS snippets

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors