Moonfin for webOS is an enhanced Jellyfin webOS client built with the Enact/Sandstone framework, optimized for the viewing experience on LG Smart TVs running webOS.
Moonfin for webOS builds on the solid foundation of Jellyfin with targeted improvements for TV viewing:
- Native webOS Media Pipeline - Utilizes LG's native video playback for optimal performance
- Smooth playback with proper hardware decoding support
- Enhanced player controls optimized for TV remote navigation
- Unified Library Support - Seamless playback from multiple Jellyfin servers
- Seamless switching between servers for content playback
- Improved server selection logic
Moonfin is the first webOS client with native Jellyseerr support.
- Browse trending, popular, and recommended movies/shows and filter content by Series/Movie Genres, Studio, Network, and keywords
- Request content in HD or 4K directly from your LG TV
- NSFW Content Filtering (optional) using Jellyseerr/TMDB metadata
- Smart season selection when requesting TV shows
- View all your pending, approved, and available requests
- Authenticate using your Jellyfin login (permanent local API key saved)
- Global search includes Jellyseerr results
- Rich backdrop images for a more cinematic discovery experience
- Quick access home button and search functionality
- Shuffle button for instant random movie/TV show discovery
- Genres menu to browse all media by genre in one place
- Dynamic library buttons automatically populate based on your Jellyfin libraries
- One-click navigation to any library or collection directly from the navbar
- Cleaner icon-based design for frequently used actions
- Theme Music Playback - Background theme music support for TV shows and movies with volume control
- Pre-Playback Track Selection - Choose your preferred audio track and subtitle before playback starts (configurable in settings)
- Next Episode Countdown - Skip button shows countdown timer when next episode is available
- Trickplay Preview - Thumbnail previews when scrubbing through video
- Electronic Program Guide (EPG) - Browse live TV channels with program information
- DVR Recordings - Access and playback recorded content
- Metadata organized into clear sections: genres, directors, writers, studios, and runtime
- Taglines displayed above the description where available
- Cast photos appear as circles for a cleaner look
- Fits more useful information on screen without feeling cramped
- Built with Enact/Sandstone - Modern React-based framework designed for webOS TVs
- Accent Color Customization - Personalize the UI with your preferred accent color
- Backdrop Blur Settings - Customizable blur effects for home and details pages
- Item details show up right in the row, no need to open every title to see what it is
- Buttons look better when not focused (transparent instead of distracting)
- Better contrast makes text easier to read
- Transitions and animations feel responsive
- Consistent icons and visual elements throughout
Download the latest IPK from the Releases page.
Supported Devices:
- LG Smart TVs running webOS 4.0+
- LG webOS TVs (2016 and newer models)
To enable media discovery and requesting:
- Install and configure Jellyseerr on your network (jellyseerr.dev)
- In Moonfin, go to Settings → Jellyseerr
- Enter your Jellyseerr server URL (e.g.,
http://192.168.1.100:5055) - Click Connect with Jellyfin and enter your Jellyfin password
- Test the connection, then start discovering!
Your session is saved securely and will reconnect automatically.
- Enable Developer Mode on your LG TV
- Install the webOS Dev Mode app from the LG Content Store
- Use the ares-cli tools to install the IPK (see Building from Source section)
- Node.js and npm
- webOS SDK (ares-cli tools)
# Install dependencies
npm install
# Development server
npm run serve
# Build for production
npm run pack-p
# Package for webOS (creates IPK)
npm run package
# Install to TV
npm run install-tv
# Launch on TV
npm run launch-tvThe webOS ares-cli tools are included as a dev dependency. After running npm install, you can package and deploy the app.
Testing on a TV requires registering a LG developer account and setting up the devmode app.
Once you have installed the devmode app on your target TV and logged in with your LG developer account, you need to turn on the Dev Mode Status and Key Server.
Make sure to take a note of the passphrase.
# Add your TV
ares-setup-device
# Set up SSH key (Key Server must be running)
ares-novacom --device tv --getkey
# Verify connection
ares-device-info -d tv
# Install the app
ares-install -d tv build/*.ipk
# Launch with inspector
ares-inspect -d tv org.moonfin.webos
# Or just launch
ares-launch -d tv org.moonfin.webosThis project is built with Enact, LG's React-based application framework for webOS TVs.
src/
├── App/ # Main application component
├── components/ # Reusable UI components
├── context/ # React context providers
├── hooks/ # Custom React hooks
├── services/ # API and service modules
├── views/ # Page components
└── styles/ # Global styles and variables
- Uses Enact/Sandstone for webOS-optimized UI components
- Spotlight navigation for TV remote control support
- Code style follows Enact conventions
- UI changes should be tested on actual LG TV devices when possible
We welcome contributions to Moonfin for webOS!
- Check existing issues - See if your idea/bug is already reported
- Discuss major changes - Open an issue first for significant features
- Follow code style - Match the existing codebase conventions
- Test on TV devices - Verify changes work on actual LG TV hardware
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes with clear commit messages
- Test thoroughly on LG TV devices
- Submit a pull request with a detailed description
- Issues - GitHub Issues for bugs and feature requests
- Discussions - GitHub Discussions for questions and ideas
- Jellyfin - jellyfin.org for server-related questions
Moonfin for webOS is built upon the excellent work of:
- Jellyfin Project - The media server
- Enact - LG's React-based framework for webOS
- Jellyfin webOS Contributors - The original client developers
- Moonfin Contributors - Everyone who has contributed to this project
This project is licensed under the MPL 2.0 license. Some parts incorporate content licensed under the Apache 2.0 license. All images are taken from and licensed under the same license as https://github.com/jellyfin/jellyfin-ux. See the LICENSE file for details.
Moonfin for webOS
An enhanced Jellyfin client for LG Smart TVs

