HoverTrailer
June 9, 2026 · View on GitHub
Preview
|
Configuration 1 - Centered Positioning, Background Blur, Higher Scaling, No Offset
|
Configuration 2 - Custom Positioning, No Blur, Lower Scaling, Custom Offset
|
▶️ Show Preview Videos
Configuration 1
Configuration 2
Manifest URL
https://raw.githubusercontent.com/Fovty/HoverTrailer/master/manifest.json
Recommended companion plugin: install File Transformation (v2.2.1.0+) first. HoverTrailer auto-detects it and injects the client script through it instead of modifying files on disk.
Features
Playback
- Netflix-style hover preview with configurable delay
- Multi-source trailer detection with a fixed priority — local trailer file → remote YouTube → theme-video fallback (first match wins; theme-video fallback is optional)
- Audio on/off with adjustable volume; the volume and mute you set on the player are remembered per device (muted during autoplay until the page has user activation — browser policy)
- Interactive control bar (play/pause, seek, volume, mute, fullscreen) on both YouTube and local trailer previews (requires Persistent preview; the seek bar hides automatically when a local stream reports no duration)
- Hover progress indicator on the card during the delay
Positioning modes
- Fix Position — preview is pinned to a fixed, percentage-based spot: center or any of the four corners (with an adjustable corner margin, so it stays correct across resolutions). In this mode you can also drag the preview to move it and drag the corner handle to resize it while it plays — the position and size are remembered per device. Double-click the move handle to reset to the configured spot.
- Custom — preview is centered on the card with configurable offsets
- Anchor to Card — preview follows the card as the page scrolls (tethered)
Sizing
- Fit to Content (default) — matches the trailer's aspect ratio, scaled by a percentage you choose (50-1500%), clamped to 90% of the viewport
- Manual — fixed width and height in pixels
- Adjustable opacity and corner radius
Background blur
- Off / Full (uniform blur over the page) / Halo (dense blur right next to the preview, fading out over a configurable radius — hides distracting nearby posters without dimming the whole screen)
Behavior options
- Persistent preview — keep playing after the cursor leaves the card; dismiss with click, Escape, or by hovering a different card long enough for a new preview to start
- Focus trigger — keyboard/D-pad focus on a card triggers the preview (for Jellyfin Web in a TV browser or with spatial-navigation overlays). Mouse clicks don't re-trigger.
Installation
From Jellyfin Plugin Catalog (Recommended)
- Open Jellyfin Admin Dashboard
- Navigate to Plugins → Manage Repositories
- Click + (Add) to add a new repository
- Enter the Manifest URL:
https://raw.githubusercontent.com/Fovty/HoverTrailer/master/manifest.json - Click Save
- Navigate back to Plugins
- Search for "HoverTrailer"
- Click Install
- Restart Jellyfin server to activate the plugin
- Open Plugins → HoverTrailer → Settings to configure (every option has an inline description)
Manual Installation
- Download the latest release from GitHub Releases
- Extract the
.dllfile to your Jellyfin plugins directory:- Windows:
%ProgramData%\Jellyfin\Server\plugins\HoverTrailer - Linux:
/var/lib/jellyfin/plugins/HoverTrailer - Docker:
/config/plugins/HoverTrailer
- Windows:
- Restart Jellyfin server
Known limitations
- Touch devices: hover is a pointer-only gesture, so the plugin disables itself on phones and tablets (UA sniff +
(hover: none)). - Native mobile / TV apps: Jellyfin's native mobile and smart-TV apps don't load the web frontend, so the plugin has no effect there. Focus Trigger covers the Jellyfin-Web-in-a-TV-browser case.
- If audio is enabled, the first hover after a fresh page load still plays muted. Chrome and Safari block unmuted autoplay until you interact with the page once — click anywhere and all subsequent hovers have audio.
- YouTube iframe aspect ratio is hardcoded to 16:9. The YouTube iframe is cross-origin so the actual video aspect can't be read.
Troubleshooting
Trailers not playing
- Check trailer availability — confirm the movie has a trailer URL or local trailer file in Jellyfin.
- Enable Debug Logging and watch the browser console (F12) for
[HoverTrailer]lines. - Audio: if you expect sound on the first hover, click anywhere in Jellyfin once to grant the page user activation.
Preview not showing
- Confirm the plugin appears in the Jellyfin admin panel and is enabled.
- Hard reload the page (Ctrl+Shift+R / Cmd+Shift+R) — the client script is cached by the browser.
- Make sure you're on a desktop browser (phones and tablets skip the plugin by design).
Docker permission issues
If you see Access to the path '/usr/share/jellyfin/web/index.html' is denied, install the File Transformation plugin (see the recommendation under Manifest URL) — HoverTrailer will detect it and stop touching the web directory.
Manual alternatives if you can't use File Transformation
Fix file permissions:
docker exec -it jellyfin find / -name index.html
docker exec -it --user root jellyfin chown jellyfin:jellyfin /jellyfin/jellyfin-web/index.html
docker restart jellyfin
Or bind-mount the file:
docker cp jellyfin:/jellyfin/jellyfin-web/index.html /path/to/jellyfin/config/index.html
# then in docker-compose.yml:
volumes:
- /path/to/jellyfin/config/index.html:/jellyfin/jellyfin-web/index.html
Development
git clone https://github.com/Fovty/HoverTrailer.git
cd hovertrailer
# StyleCop warnings are treated as errors in CI; suppress locally:
dotnet build --configuration Release --property:TreatWarningsAsErrors=false
Contributions welcome — fork, branch, PR. Match the existing code style, update docs alongside any configuration change, and test across browsers / Jellyfin versions.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Jellyfin Team - For the excellent media server platform
- IntroSkipper Plugin - Architecture and CI/CD inspiration
- Jellyscrub Plugin - Configuration UI patterns
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Jellyfin Community: Official Jellyfin Forums
Note: This plugin is not officially affiliated with Jellyfin or Netflix. It's a community-developed enhancement for the Jellyfin media server.