Emby Home Swiper UI replaces the default library grid on your Emby & Jellyfin home page (#!/home) with an interactive, cinematic Swiper banner carousel. It dynamically queries your media serverβs native APIs to showcase the newest, trending, and top-rated movies and TV series β with zero external library overhead for core functionality.
Beyond the home banner carousel, this all-in-one repository also provides:
text_sider)


emby-player)
text_sider)
| Category | Feature | Description |
|---|---|---|
| π Performance | Ultra-Lightweight | Pure native JavaScript utilizing Emby/Jellyfin internal ApiClient. Minimal memory footprint. |
| πΌοΈ Visuals | High-Res Backdrops & Logos | Automatically renders clear transparent PNG logos, backdrop fanart, taglines, and synopsis. |
| β Metadata | Rating & Year Badges | (V2) Displays Community Rating (e.g., β 8.5/10), Production Year (e.g., 2024), and Official Content Rating (PG-13, TV-MA). |
| π Animation | Auto-Slide & Pause on Hover | Rotates slides smoothly every 6β8 seconds; automatically pauses when hovering for uninterrupted reading. |
| π± Responsiveness | Fully Responsive Layout | Adaptive styling seamlessly scales between 4K TVs, Ultrawide monitors, Laptops, Tablets, and Smartphones. |
| π― Navigation | Interactive Controls | Next / Previous buttons, clickable pagination bullet dots, and keyboard/touch swipe navigation. |
| πΏ Playback | External Player Routing | Launch streams straight into PotPlayer (Windows), MPV (via mpv-handler), VLC, and MX Player. |
| π’ Announcements | Detail Page Alert Box | Inject customizable multilingual notice banners on media detail pages with smooth kinetic animation. |
| π‘οΈ Reliability | Graceful Error Handling | Fallback backdrops and error catches prevent layout breaks when metadata or fanart is missing. |
Emby-Home-Swiper-UI/
βββ home-swiper-v2/ # π Advanced Swiper with Ratings, Year & UI upgrades
β βββ home-swiper.js # Clean Swiper script
β βββ home_rating with year.js # Swiper with Community Rating β & Year π
badges
β βββ img/ # V2 Screenshots
βββ home-sider-v1/ # π¦ Classic lightweight home banner slider
β βββ home.js # V1 base swiper logic
β βββ img/ # V1 Screenshots
βββ Jellyfin/ # π Dedicated Jellyfin Web integration
β βββ jellyfin/ # Styles, main.js, jQuery & MD5 dependencies
β βββ script.sh # Auto setup script for Jellyfin Web
β βββ img/ # Jellyfin Screenshots
βββ emby-player/ # π¬ External player launcher (PotPlayer, MPV, VLC)
β βββ emby_launch_player.js
β βββ README.md
βββ text_sider/ # π’ Media detail page announcement & notice boxes
β βββ Text Slider Box.html
β βββ Text No Slider Box.html
β βββ Text Warning Box.html
βββ script.sh # π§ Linux/Docker automatic installation script
βββ setup-swiper.sh # π§ Enhanced Linux/Docker injection script
βββ download-homejs.bat # πͺ Windows PowerShell auto-download script
βββ upload.bat # π οΈ Git upload helper script
βββ README.md # π Main documentation
Choose your platform and preferred installation method below:
Find the dashboard-ui folder on your server:
/volume1/@appstore/EmbyServer/system/dashboard-ui/
lovechen/embyserver or official Emby Docker):
/system/dashboard-ui/
# or locate via: docker exec -it <container_id> find / -name "index.html"
/opt/emby-server/system/dashboard-ui/
C:\Users\<YourUser>\AppData\Roaming\Emby-Server\system\dashboard-ui\
home.js and copy it directly into your dashboard-ui/ directory (or inside a subfolder like dashboard-ui/emby-crx/home.js).index.htmlOpen dashboard-ui/index.html with a text editor and add the script tag just before the closing </head> or </body> tag:
<!-- Emby Home Swiper UI -->
<script src="home.js" defer></script>
(If placed in a subfolder like emby-crx/home.js, use <script src="emby-crx/home.js" defer></script>)
Restart your Emby server or clear your browser cache and refresh (Ctrl + F5). Navigate to #!/home to see your new Swiper banner in action!
Run the included automated setup script in your dashboard-ui directory:
# Navigate to your dashboard-ui folder
cd /path/to/emby/system/dashboard-ui/
# Download and execute the automated setup script
curl -sSL https://raw.githubusercontent.com/sohag1192/Emby-Home-Swiper-UI/main/setup-swiper.sh | bash
Jellyfin/jellyfin/ directory into your Jellyfin web root folder:
/usr/share/jellyfin/web/C:\Program Files\Jellyfin\Server\jellyfin-web\/jellyfin/jellyfin-web/index.html in your Jellyfin web directory and insert the following before </head>:<!-- Jellyfin Swiper UI Assets -->
<link rel="stylesheet" id="theme-css" href="jellyfin-crx/style.css" type="text/css" media="all" />
<script src="jellyfin-crx/jquery-3.6.0.min.js"></script>
<script src="jellyfin-crx/md5.min.js"></script>
<script src="jellyfin-crx/main.js"></script>
sudo systemctl restart jellyfin
emby-player)Route media playback directly to third-party desktop players (PotPlayer, MPV, VLC):
emby-player/emby_launch_player.js into your dashboard-ui/emby-player/ folder.dashboard-ui/index.html, add the following right before </body>:<!-- External Player Hook -->
<script src="emby-player/emby_launch_player.js" defer></script>
Requirements for External Players:
- PotPlayer (Windows): Ensure PotPlayer is installed. Soft subtitles and direct streams are supported out-of-the-box.
- MPV (Windows/macOS/Linux): Requires mpv-handler protocol handler installed locally.
text_sider)To display announcement banners or server status warnings on media item detail pages (#!/item?id=...):
text_sider/Text Slider Box.html (or Text Warning Box.html).<style> and <script> blocks into your dashboard-ui/index.html right before </body>.If you do not have root/admin access to modify the serverβs files, you can inject the script on your client side:
// ==UserScript==
// @name Emby Home Swiper UI
// @namespace https://github.com/sohag1192/Emby-Home-Swiper-UI
// @version 2.0
// @description A dynamic banner carousel for Emby Web
// @match *://*/web/index.html*
// @match *://*/*/web/index.html*
// @require https://raw.githubusercontent.com/sohag1192/Emby-Home-Swiper-UI/main/home-swiper-v2/home_rating%20with%20year.js
// @grant none
// ==/UserScript==
You can easily adjust settings inside home.js / home-swiper.js:
// In class HomeSwiper.start():
this.itemQuery = {
ImageTypes: "Primary,Backdrop",
EnableImageTypes: "Primary,Backdrop,Banner,Logo",
IncludeItemTypes: "Movie,Series", // Filter item types (e.g. "Movie", "Series", "BoxSet")
SortBy: "DateCreated", // Sort order: "DateCreated", "PremiereDate", "CommunityRating", or "Random"
SortOrder: "Descending",
Recursive: true,
Limit: 10, // Maximum number of banner slides
Fields: "Taglines,Overview,ParentId,DateCreated,PremiereDate,ProductionYear,CommunityRating,OfficialRating"
};
this.slideDelay = 6000; // Slide rotation duration in milliseconds (e.g., 6000 = 6 seconds)
this.showItemNum = 9; // Number of items to display
| Platform / Browser | Version | Status |
|---|---|---|
| Emby Web Client | 4.9.1.80 β 4.10.1.0+ | β Supported (Tested OK) |
| Emby Server / Web | Version [4.10.1.0] (version=4.10.1.0) |
β Test Done & Working (OK) |
| Emby Server / Web | Version [4.10.0.40] (version=4.10.0.40) |
β Tested & Working (OK) |
| Jellyfin Web Client | 10.8.x β 10.11.x+ | β Supported |
| Google Chrome / Chromium | Latest | β Supported |
| Mozilla Firefox | Latest | β Supported |
| Microsoft Edge | Latest | β Supported |
| Apple Safari (macOS / iOS) | Latest | β Supported |
| Mobile Browsers (Android / iOS) | Responsive View | β Supported |
[!NOTE] Compatibility Verified: Tested and confirmed working on Emby Web / Server Version [4.10.1.0] (
version=4.10.1.0) (test done) and Version [4.10.0.40] (version=4.10.0.40).
Contributions, bug reports, feature suggestions, and pull requests are welcome!
If you find a bug or have an idea to improve the UI, feel free to open an Issue or submit a Pull Request.
Hello Viewers & Developers! π
If you find this project, custom UI components, or media streaming scripts helpful in your own setup, here are several ways you can support continuous development, hosting, and server maintenance costs:
9YEThZFaqmqPbPJt8f4jLxPKELMzUmgncsrqvCv44BjE
[!NOTE] π‘ Hover over or tap the code box above and click the Copy (π) button in the top-right corner to copy the wallet address instantly.
This project is licensed under the MIT License β free to use, modify, and distribute with attribution.