Home Screen Sections (commonly referred to as Modular Home) is a Jellyfin plugin which allows users to update their web client's home screen to be a bit more dynamic and more "Netflixy".
A lot of the sections included are the base sections that would appear in a vanilla instance of Jellyfin. This has been done because using Modular Home hasn't been integrated to work side by side with the vanilla home screen and instead wholesale replaces it. Since a lot of the sections are useful and contain everything you'd want in a home screen they've been included for convenience.
NOTE: Its worth noting that the sections that have been created are one's that I myself use for my own instance, if there is a section that's missing check the "Adding your own sections" heading below for info on how you can create your own.
These vanilla sections are listed here:
- My Media
- Same as vanilla Jellyfin
- Continue Watching
- Same as vanilla Jellyfin
- Next Up
- Same as vanilla Jellyfin
- Recently Added Movies/TV Shows
- Same as vanilla Jellyfin
- Live TV
- Mostly the same as vanilla Jellyfin. Current State is untested since updating to 10.10.3 so may find that there are issues
The sections that are new for this plugin (and most likely the reason you would use this plugin in the first place) are outlined here:
-
Latest Movies/TV Shows
- These are movies/shows that have recently aired (or released) rather than when they were added to your library.
-
Because You Watched
- Very similar to Netflix's "because you watched" section, a maximum of 5 of these will appear when the section is enabled
- Watch Again
- Again similar to Netflix's feature of the same name, this will request Movies in a Collection and TV Shows that have been watched to their completion and will provide the user an option to watch the show/movie collection again. The listed entry will be the first movie to be released in that collection (done by Premiere Date) or the first episode in the series
- My List
- Again similar to Netflix's feature. This requires a bit more setup than the others to get working. It looks for a playlist called "My List" and retrieves the entries in that playlist.
- This plugin is based on Jellyfin Version
10.10.5
- The following plugins are required to also be installed, please following their installation guides:
- File Transformation (https://github.com/IAmParadox27/jellyfin-plugin-file-transformation)
- Plugin Pages (https://github.com/IAmParadox27/jellyfin-plugin-pages)
- Add
https://www.iamparadox.dev/jellyfin/plugins/manifest.json
to your plugin repositories. - Install
Home Screen Sections
from the Catalogue. - Restart Jellyfin.
- On the user's homepage, open the hamburger menu and you should see a link for settings to "Modular Home". Click this.
- At the top there is a button to enable support and it will retrieve all sections that are available on your instance. Select all that apply.
- Save the settings. Please note currently the user is not provided any feedback when the settings are saved.
- Force refresh your webpage (or app) and you should see your new sections instead of the original ones.
If you find an issue with any of the sections or usage of the plugin, please open an issue on GitHub.
The easiest way to confirm whether the user is using the modular home settings is to check whether the movie posters are portrait or landscape. Due to how the cards are delivered from the backend all cards are forced to be landscape
This is great an' all but I want a section that doesn't exist here. Can I make one?
Yep! Home Screen Sections exposes HTTP endpoints which can be used to register sections.
Send an HTTP POST request to http(s)://{YOUR_JELLYFIN_URL}/HomeScreen/RegisterSection
with data in the following structure
{
"id": "", // Unique ID for your section
"displayText":"", // What text should be displayed for your section
"limit": 1, // This can only be 1 at the moment, I am working hard to support more than 1 section via HTTP request
"additionalData": "", // Any accompanying data you want sent to your endpoint
"resultsEndpoint":"" // The endpoint that will be requested when the section is requested. Expected to return `QueryResult<BaseItemDto>`
}
I'm open to any and all pull requests that expand the functionality of this plugin, while keeping within the scope of what its outlined to do, however if the PR includes new sections which are not vanilla implementations it will be rejected as the above approach is preferred.
I don't want this plugin to bloat with lots of section types another server admin might not want, best to keep those as "plugin plugins".