plx-native

GLinnik21GPL-3.0活跃维护

用 Rust 写的 LG webOS 电视原生 Plex 客户端,绕开 Chromium/WebView,实现 60fps 界面和 4K HEVC、杜比视界流畅播放。

Fast, unofficial Plex client for LG webOS TVs — native 60 fps UI, 4K HEVC/Dolby Vision, no Chromium or WebView.

nightly/v0.10.0-nightly-20261109发布于 2026-11-09 11:19 UTC1,224star +28 / 7 天142fork同步于 2026-11-10 11:49 UTC

怎么上手

由 README 提炼,执行前请确认
通过 LG Developer Mode 配合 webOS Dev Manager 安装 .ipk;或先在电视装 Homebrew Channel,再从目录安装 PlxNative
硬件要求按 README 说明

需 LG webOS 4.0 或更新版本的电视;2016 年 webOS 3.4.3 与 2018 年 webOS 3.9.3 机型在特定条件下可用。README 未提及显存或 CPU 要求,应用运行在电视端而非通用 PC。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

LG webOS 电视上的非官方 Plex 客户端,用原生 GPU 渲染替代 Chromium 网页界面,解决官方应用卡顿问题

用 Rust 写的 LG webOS 电视原生 Plex 客户端,绕开 Chromium/WebView,实现 60fps 界面和 4K HEVC、杜比视界流畅播放。

核心能力

  • 界面直接由 GPU 绘制,在 2019 年机型上达到 60 fps
  • 通过电视端二维码登录并选择 Plex Home 用户
  • 直接播放 H.264/HEVC,支持 4K 10-bit、杜比视界 5/8、E-AC-3 Atmos
  • 支持续播、拖动、章节、音轨字幕、跳过片头片尾与自动连播
  • 跨所有可访问服务器搜索,并支持 plex.tv Watchlist 标签页

容易踩的坑

Developer Mode 会过期,过期后通过它安装的应用会被移除,需定期续期;2019 年部分 k5lp/k3lp 芯片机型在 Developer Mode 下视频无法播放且无 root 无解;预编译 v0.8.0 在 webOS 3.9.3 的 2018 机型上视频不启动,需从 60f99c7 之后源码构建;Nightly 构建未在电视上实测且 30 天后删除

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本nightly/v0.10.0-nightly-20261109
  1. nightly/v0.10.0-nightly-20261109PlxNative 0.10.0-nightly-20261109pre-release最新正式版2026-11-09 · 2026-11-09 11:19 UTC

    Automatic build of main at 8e486d1. It installs beside PlxNative as a separate app, "PlxNative Nightly", with its own launcher tile and its own sign-in — your regular PlxNative install is untouched.

    This build has not been tested on a television. It passed the same automated checks a release does — the ARM cross-build, the packaging gates, and the firmware loader compatibility check — but nobody has watched it play. Keep the stable app installed.

    Changes since 0.10.0-nightly-20261108

    • Settings > Video & playback > Playback engine: a per-profile opt-in to the URI engine (#1279)
    • Fix Magic Remote Back and cursor recovery (#1288)
    • Settings: ask for a poster of a kind the Under posters preview lacks (#1287)
    • Admit a transcode's cold resume at the Feed start door (#1286)
    • Give play back through the startup runner after a transcode seek (#1285)
    • Test Plex server identity during automatic episode advance (#1282)
    • Default to a playback version the TV can decode (#1245)
    • Net: add the WebSocket codec for Open Watch Party (#1273)
    • ACB: a second boot handle (player type 0) for the URI engine (#1281)
    • Preserve baseline audio codecs and size converted Opus on webOS (#1133)
    • The playback build/package matrix: PLAYBACK_BACKENDS selects both, uri, feed or none (P7) (#1276)

    Compare 0.10.0-nightly-20261108...0.10.0-nightly-20261109 · Latest stable release

    Reporting problems

    Open an issue and include the version string 0.10.0-nightly-20261109. If error reporting is enabled, reports from this build go to the project's development tracker, kept apart from reports the stable app sends.

    Installing

    With Homebrew Channel: under Settings, choose Add repository and enter https://plxnative.com/nightly/repo.json, then install "PlxNative Nightly" from the list. Later nightlies appear there as updates. The guide has the details.

    By hand: download plxnative-v0.10.0-nightly-20261109.ipk below and install it with dev-manager-desktop — no rooted television is needed. A package installed this way does not update itself; the newest nightly is always linked from plxnative.com/nightly/latest.json.

    667f3f90d56f5f06b365c8b6362415ba060163eea018c676d48c6526c71f8beb  plxnative-v0.10.0-nightly-20261109.ipk
    

    This package bundles FFmpeg under LGPL-2.1-or-later; the complete corresponding source is attached below. Nightly builds are deleted after 30 days.

  2. nightly/v0.10.0-nightly-20261108PlxNative 0.10.0-nightly-20261108pre-release2026-11-08 · 2026-11-08 01:49 UTC
    查看更新说明

    Automatic build of main at 1d96fbb. It installs beside PlxNative as a separate app, "PlxNative Nightly", with its own launcher tile and its own sign-in — your regular PlxNative install is untouched.

    This build has not been tested on a television. It passed the same automated checks a release does — the ARM cross-build, the packaging gates, and the firmware loader compatibility check — but nobody has watched it play. Keep the stable app installed.

    Changes since 0.10.0-nightly-20261106

    • Site font subset: cover the Vietnamese block the Featured in headline uses (#1277)
    • Settings: a viewer's Plex Pass grants intro and credits skipping (auto-skip hidden from Pass holders) (#1246)
    • The URI backend returns as plx_play_uri: in the shipping binary, never selected, dev triggers back (#1275)
    • Neutral playback orchestration: the Feed becomes plx_play_feed, the app composes backends, the sink/plane seam is split (#1274)
    • Lower-layer prerequisites of the neutral media crate: plx_net::range_io, plx_base::clock, LoadVideo in platform, contract landing plan (#1272)
    • Media codecs crate: the bundled-FFmpeg ABI, PCM decode, speed audio and the encoder leave plx_media (#1271)
    • Settings: Under posters takes composable details and the two-poster preview (#1269)
    • Playback contract crate, BackendRunner and attempt-metrics reducers (unwired) (#1268)
    • Playback: honor Plex server stops (#1265)
    • Playback: a Dolby Vision resume or seek that lands on a CRA plays the HDR10 base layer (#1263)
    • Settings: fps scenes for the pages Settings v2 added
    • Settings: a pushed page's text is made resident before it moves
    • Interpose exit(): end a library's exit() without exit handlers and report it through the crash log (#1242)
    • Settings: the Under posters picture names its tiles MOVIES and SHOWS
    • Settings v2: the remaining pages, the push motion and the Under posters split
    • Settings: v2 anatomy and root (follow-focus sentence, 48 title, groups, Diagnostics page) (#1256)

    Compare 0.10.0-nightly-20261106...0.10.0-nightly-20261108 · Latest stable release

    Reporting problems

    Open an issue and include the version string 0.10.0-nightly-20261108. If error reporting is enabled, reports from this build go to the project's development tracker, kept apart from reports the stable app sends.

    Installing

    With Homebrew Channel: under Settings, choose Add repository and enter https://plxnative.com/nightly/repo.json, then install "PlxNative Nightly" from the list. Later nightlies appear there as updates. The guide has the details.

    By hand: download plxnative-v0.10.0-nightly-20261108.ipk below and install it with dev-manager-desktop — no rooted television is needed. A package installed this way does not update itself; the newest nightly is always linked from plxnative.com/nightly/latest.json.

    9ed7e74476abc3460ecb780615da760e2963a485785cbbce04e05fad8dab347d  plxnative-v0.10.0-nightly-20261108.ipk
    

    This package bundles FFmpeg under LGPL-2.1-or-later; the complete corresponding source is attached below. Nightly builds are deleted after 30 days.

  3. nightly/v0.10.0-nightly-20261106PlxNative 0.10.0-nightly-20261106pre-release2026-11-06 · 2026-11-06 10:47 UTC
    查看更新说明

    Automatic build of main at 9cc53ed. It installs beside PlxNative as a separate app, "PlxNative Nightly", with its own launcher tile and its own sign-in — your regular PlxNative install is untouched.

    This build has not been tested on a television. It passed the same automated checks a release does — the ARM cross-build, the packaging gates, and the firmware loader compatibility check — but nobody has watched it play. Keep the stable app installed.

    Changes since 0.10.0-nightly-20261105

    • Deps: Bump encoding_rs from 0.8.42 to 0.8.44 in /rust-modules in the rust-minor-patch group (#1250)
    • CI: Bump the actions group across 1 directory with 4 updates (#1251)
    • Tools: Bump @github/copilot from 1.0.103 to 1.0.105 in /tools in the node-tools group (#1249)
    • Tools: Bump fonttools from 4.67.0 to 4.68.0 in /tools in the python-tools group (#1248)
    • Playback: a retired PMS session gets its stopped timeline (#1254)
    • HUD previews: the long-title corpus covers Catalan (#1253)
    • Settings: the built-in HUD is named Built-in (#1247)
    • Tests: the lint, screenshot and replay runs delete their temp trees (#1244)
    • HUD registry: serve from huds.plxnative.com (#1243)
    • Add Catalan localization (#1230)

    Compare 0.10.0-nightly-20261105...0.10.0-nightly-20261106 · Latest stable release

    Reporting problems

    Open an issue and include the version string 0.10.0-nightly-20261106. If error reporting is enabled, reports from this build go to the project's development tracker, kept apart from reports the stable app sends.

    Installing

    With Homebrew Channel: under Settings, choose Add repository and enter https://plxnative.com/nightly/repo.json, then install "PlxNative Nightly" from the list. Later nightlies appear there as updates. The guide has the details.

    By hand: download plxnative-v0.10.0-nightly-20261106.ipk below and install it with dev-manager-desktop — no rooted television is needed. A package installed this way does not update itself; the newest nightly is always linked from plxnative.com/nightly/latest.json.

    472087c685a07e638f2cde4165182f4417b8b7ce5263a87a69244f0c2870ad1e  plxnative-v0.10.0-nightly-20261106.ipk
    

    This package bundles FFmpeg under LGPL-2.1-or-later; the complete corresponding source is attached below. Nightly builds are deleted after 30 days.

  4. nightly/v0.10.0-nightly-20261105PlxNative 0.10.0-nightly-20261105pre-release2026-11-05 · 2026-11-05 10:46 UTC
    查看更新说明

    Automatic build of main at 951db62. It installs beside PlxNative as a separate app, "PlxNative Nightly", with its own launcher tile and its own sign-in — your regular PlxNative install is untouched.

    This build has not been tested on a television. It passed the same automated checks a release does — the ARM cross-build, the packaging gates, and the firmware loader compatibility check — but nobody has watched it play. Keep the stable app installed.

    Changes since 0.10.0-nightly-20261103

    • HUD plugins: tools/hud-dev, and Play re-fetches a development-source HUD on the TV (#1241)
    • HUD plugins: a cargo fuzz package over every package and registry parser (#1240)
    • HUD gallery: accept only a signed registry index (#1239)
    • Cycle HUD preview backgrounds and use shared glass controls (#1238)
    • Make three timing-dependent unit tests deterministic (#1237)
    • Hold the simulator's settled capture until an armed autopause lands (#1235)
    • Let the playurl dev trigger start playback from the sign-in and picker pages (#1234)
    • Bound every plx_net test server's accept, and give its deadlines room (#1232)
    • Keep the preflight guard test's checkout on the tree's volume (#1233)
    • Add the native Player HUD gallery and cached registry (#1226)
    • Bound every plx_plex test server's accept, and give its deadlines room (#1229)
    • Add automatic intro and credits skipping for Plex Pass viewers (#1227)
    • Avoid flashing hold-options hint on short OK presses (#1225)
    • Separate library navigation from Sort & Filter (#1224)
    • Report diagnostic export failures and add DV CRA/IDR controls (#1223)
    • Use initial 1.0 resource bundles for Player HUD plugins (#1222)
    • Align Home and Detail heroes and normalize logo sizing (#1220)
    • Refresh the open library grid atomically after server changes (#1215)

    Compare 0.10.0-nightly-20261103...0.10.0-nightly-20261105 · Latest stable release

    Reporting problems

    Open an issue and include the version string 0.10.0-nightly-20261105. If error reporting is enabled, reports from this build go to the project's development tracker, kept apart from reports the stable app sends.

    Installing

    With Homebrew Channel: under Settings, choose Add repository and enter https://plxnative.com/nightly/repo.json, then install "PlxNative Nightly" from the list. Later nightlies appear there as updates. The guide has the details.

    By hand: download plxnative-v0.10.0-nightly-20261105.ipk below and install it with dev-manager-desktop — no rooted television is needed. A package installed this way does not update itself; the newest nightly is always linked from plxnative.com/nightly/latest.json.

    902db816f32c660f6ea90e450c3a871eeee4a2b6ad14021ff26135b0dcb42bf0  plxnative-v0.10.0-nightly-20261105.ipk
    

    This package bundles FFmpeg under LGPL-2.1-or-later; the complete corresponding source is attached below. Nightly builds are deleted after 30 days.

  5. hud-simulator-017ff3ad29443e5ecf47e7c3d3b93f4625cf5c2cPlayer HUD authoring simulator (development)pre-release2026-11-03 · 2026-11-03 15:36 UTC
    查看更新说明

    Development utility for HUD registry validation. Source: 017ff3ad29443e5ecf47e7c3d3b93f4625cf5c2c. Target app: 0.10.0-dev.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    PlxNative

    A fast, unofficial Plex client for LG webOS televisions. Native, not a web page — the interface is drawn straight on the GPU at 60 fps, and video plays on the TV's own decoder.

    Website: plxnative.com · Install guide · Troubleshooting

    In daily use on a 2019 LG set. PlxNative is an independent project and is not affiliated with Plex, Inc. or LG. The same install steps are in the repo: installation guide.

    Why this exists

    The official Plex app on my old LG is slow. Scrolling a shelf stutters, opening a poster takes a beat too long. It behaves like a web page because it is one: a web app running in the television's Chromium. Patching it doesn't help — the ceiling isn't the code, it's the browser.

    So I threw the browser away.

    PlxNative draws straight on the GPU and hands video to the same silicon the built-in apps use. No Chromium, no JavaScript, no web view. It just draws. Almost all of it is Rust, and I use it every day to watch things off my server in the next room.

    What it looks like

    Real captures of the app, not mockups: the same code that runs on the television, on the desktop simulator, browsing a demo library of openly licensed films (credits). make screenshots regenerates them.

    Home

    Home — a rotating hero from what you're partway through and what's just landed, shelves under it.

    Library

    Library — a library opens on its full poster grid, with an A–Z rail down the side and one header row for sort & filter (including unwatched-only), a Collections page and a Recommended page. The shelves live on Recommended: what you're partway through, with the time left under the focused card, and what just landed (pictured here). Settings → Libraries → Under posters also has a Sort value switch (on by default, per profile). In a movie or TV show library sorted by something other than Title or Random (its movies, shows, seasons or episodes), every card shows the value it is sorted by on one line under it (a score, a length, a date as Today, Yesterday, 27 Oct or Oct 2024), in place of the title and details line; a sort with no value to show, such as the Show order of Seasons and Episodes, keeps the usual captions. It uses the existing sort menu; other poster surfaces keep their usual captions.

    Search

    Search — one query across every server you can reach, results grouped by kind.

    Player

    Player — the transport with chapters and track menus, drawn over video the television decodes itself. (In this capture the frame under it was decoded by the simulator.)

    What it does

    • An interface that keeps up with the remote. 60 fps on the 2019 set I develop on, with frame-rate regression scenes that measure it on the television rather than trusting it.
    • Sign in on the TV with an on-screen QR code and pick a Plex Home profile.
    • Browse and search your libraries — on your own servers and on ones shared with you. Your servers' libraries, that is, plus the plex.tv Watchlist as its own tab, where any title can be added or removed; search covers servers only.
    • Direct play H.264 and HEVC — 4K, 10-bit, Dolby Vision profiles 5 and 8, E-AC-3 Atmos, and AV1 or VP9 (10-bit VP9 only on webOS 4 sets) on televisions whose codec table lists that decoder — decided against your television's own codec table where it publishes one. Anything else the server transcodes, and you can switch a playback to Auto to follow a link whose speed changes.
    • Everything you expect while watching: resume, seek and scrub, chapters, audio and subtitle tracks (including image subtitles), Skip Intro, Skip Credits, Up Next with auto-advance, and progress reported back to your server.

    Will it work on my television?

    It needs webOS 4.0 or newer, with two tested exceptions: a 2016 set on webOS 3.4.3 signs in, browses, searches and plays (direct play, transcodes, subtitles and seeking) through Developer Mode, and a 2018 set on webOS 3.9.3 plays direct play the same way when built from source at or after 60f99c7 — the catalogue's prebuilt v0.8.0 predates that fix (see Known issues). Other 3.x releases are untested, and anything older than 3.4 is unknown. Past that, it most likely will. I develop and test on a 2019 set, and opt-in usage reports show video playing on sets from 2018 through the newest, on webOS 11 — both direct play and server transcodes, Developer Mode installs included.

    Owners' reports, set by set, are in the compatibility list.

    Known issues

    WhereWhat happens
    Some 2019 sets on LG's k5lp or k3lp chip, installed through Developer ModeVideo won't play. On these sets LG's Developer Mode sandbox can withhold a device the video path needs — Kodi and Moonlight hit the same wall. The app checks for it and says so instead of crashing; other sets on the same chip play normally. On a rooted TV with Homebrew Channel, the failure screen offers Repair, which applies the Homebrew Channel fix to the sandbox (one owner fixed it this way from a root shell; the button itself hasn't been run on an affected set yet). Without root there is no fix.
    2018 sets on firmware that reports platform release 3.9.3Sign-in and browsing work. The prebuilt v0.8.0 holds a strong ELF reference to the cxx11 StarfishMediaAPIs::Feed symbol, which 3.x libplayerAPIs does not export, so on the prebuilt video never starts and no error is reported: #249. A source build at or after 60f99c7 resolves Feed with a dual-ABI dlsym and plays direct play on a 2018 C7 (W17H chassis, 3.9.3).
    webOS 3.xSeeking jumps in place through LG's public Seek, as on webOS 5 and newer (tested on platform release 3.9.3 only). The in-place path webOS 4 uses depends on the internal layout of LG's 4.x media player, which differs on 3.x, so it is not used there. A set that refuses Seek falls back to restarting the stream at the new position, as all 3.x sets did before. Menus can drop frames at 1920x1080 on these sets; Settings → System → Interface resolution trades sharper text for smoother menus.
    Sets on LG's k6hp chipA crash seen in opt-in crash reports and not reproduced here, because I have no such set: #174.

    Rooted or not

    No root is needed. A regular TV in Developer Mode runs everything except the k5lp/k3lp Repair above. What Developer Mode costs you is renewal: if the session lapses, LG removes the apps installed through it (how to keep them). A rooted TV with Homebrew Channel has no expiry.

    If something goes wrong, check Troubleshooting first, then tell me what happened — and if you own one of the sets above, it working is as useful a report as it failing: post it under Discussions > Compatibility.

    Installing

    First time installing an app outside the LG Content Store? Follow the step-by-step installation guide. It starts with a regular LG webOS TV, a computer on the same network, and a Plex account with access to your own or a shared server. No root is required.

    Set up LG Developer Mode and connect with webOS Dev Manager, then choose:

    • Install PlxNative directly: add only PlxNative to the TV; install future .ipk updates from your computer.
    • Install Homebrew Channel first: get an app catalogue on the TV, then install PlxNative and its updates with the remote.

    Already have Homebrew Channel? Find PlxNative in its catalogue and select Install. Skip the computer setup.

    Developer Mode needs periodic renewal. If it expires and LG disables Developer Mode, apps installed through it are removed. Installing Homebrew Channel through Developer Mode does not remove that requirement. The guide explains how to renew the session.

    For manual .ipk downloads, verify the release checksum before installing. Homebrew Channel verifies catalogue downloads for you.

    Nightly builds

    Every day main moves, CI cuts a nightly .ipk from wherever it stands. It installs beside the regular app as "PlxNative Nightly" — its own tile, its own sign-in — so trying it never touches the release you already trust.

    With Homebrew Channel: under Settings choose Add repository, enter https://plxnative.com/nightly/repo.json, then install PlxNative Nightly. Every later nightly appears there as an update. The nightly builds guide has the steps, how the versions work and what to do if something goes wrong.

    Without it: each build is a prerelease, and the newest is always linked from plxnative.com/nightly/latest.json. Install it with Dev Manager; a package installed that way does not update itself.

    It is not tested on a television. It passes the same automated build and packaging checks a release does, but nobody has watched it play. Each nightly is deleted 30 days after it is published, so link to a specific .ipk at your own risk.

    Release candidates

    Before a release, CI may publish a release candidate as a prerelease named like PlxNative 0.8.0-rc.1. It is the release build itself, so it installs as the regular PlxNative app, replacing the one you have the way an update would. It is not in the Homebrew Channel, and the Channel will not offer the final release over it either: reinstall the final by hand once it is out.

    Privacy

    Your library data never reaches me. The app talks to your Plex server, to plex.tv to sign in, and to discover.provider.plex.tv for cast biographies and the Watchlist (reading it, and adding or removing a title when you ask, with the active profile's plex.tv token).

    Crash reports and usage analytics are off until you turn them on — two separate first-run questions, each answerable with Don't Share, both reversible later under Account → Settings → Privacy & data. No title, search term, subtitle line, server name or address can appear in any report. PRIVACY.md is the whole statement, including the schemas.

    ASS/SSA subtitles render natively during direct play, including styles, positioning, overlapping signs and dialogue, karaoke, and embedded fonts. External ASS files retain their original scripts. A re-encode still burns the selected subtitle on the server; over a remux the app draws a sidecar, and an embedded track when the link is local and the Part is 1..=30000 kbps, and otherwise the server burns it.

    The honest scope

    I built this for how I watch, so it's narrower than Plex's:

    • Movies and TV shows. No music, no photos, no live TV or DVR.
    • No typing in server addresses. Servers come from your Plex account; set them up on a phone or PC and choose from what's there. Servers reached through Plex's relay, or that require an encrypted connection, are supported but haven't been watched end to end.
    • One person's spare time. There will be bugs I haven't hit, because I don't watch the way you do.

    If that fits, it's genuinely nice to use. If it doesn't, the official app will serve you better.

    Contributing

    Issues and pull requests are welcome, especially from anyone whose television or library differs from mine — docs/building.md is the build and the test loop, and says what hardware I most need help with. Feature ideas go to Discussions > Ideas. Security issues go through SECURITY.md rather than a public issue.

    Acknowledgements

    Error monitoring for PlxNative is sponsored by Sentry.

    Licence

    GPL-3.0-or-later, © 2026 Gleb Linnik. The PlxNative name and its brand artwork are excluded — see TRADEMARKS.md, which also carries the Plex and LG non-affiliation statements. Third-party components and their licences are in THIRD-PARTY-NOTICES.md and licenses/ — notably the app ships its own LGPL build of FFmpeg. Those notices and licence texts ship inside the .ipk too, so they travel with the binary and not only with this repository.

    This is an unofficial client, not affiliated with, endorsed by, or sponsored by Plex GmbH or LG Electronics. "Plex", "Rotten Tomatoes", "IMDb", "TMDB", "LG" and "webOS" are trademarks of their respective owners; where they appear in the app, they identify whose service or score is being shown.

    Star history