Case study
LGwebOS-menubar: a native macOS remote for LG webOS TVs
A native macOS menu-bar app that pairs with an LG webOS TV over its local encrypted WebSocket interface to launch apps, switch inputs, adjust volume and picture settings, send pointer input and cast selected media. The project credits the public Connect SDK for webOS protocol behavior and reuses PyWebOSTV’s registration manifest. Testing covers one TV on webOS 5.0.
- Targets
- App
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: Reviewed at the 2026-10-13 head, when the repository held only this app. By 2026-10-20 GitHub serves it as TVmenubar-MacOS, and its head README splits it into separate LG webOS 5.0 and Roku OS 15.3.4 apps. It needs macOS 14 or later, Xcode Command Line Tools with Swift 5.9 or later, and an LG webOS TV on the same network; the only tested set is an LG 50UN7310PSC on webOS 5.0, and other models and versions are unverified. Pairing must be accepted on the TV, an IPv4 address is required, and Wake-on-LAN needs the TV’s MAC address.
- Prerequisites: scripts/build.sh produces a locally signed, unnotarized app bundle. Pairing uses encrypted WebSockets on port 3001; the app pins the TV certificate after explicit approval and keeps pairing keys in Keychain. The repository ships no device addresses or pairing keys, and a privacy-check script scans files before publishing.
- Testing evidence: The offline --self-check runs preference, certificate, pointer, Home, usage, resource and loopback media tests without a TV.
- Limits: The README narrows the author’s post: screen time is counted locally only while the app is connected, AirPlay support is limited to guidance for macOS Screen Mirroring, picture-setting changes depend on TV permissions, and casting depends on the TV’s codecs and DLNA service.
- License: MIT covers the project code; the PyWebOSTV manifest keeps its MIT notice, and LG, app and console icons keep their owners’ rights. Commits credit Claude as co-author, and an X post by the same account credits REA. This is an unofficial client.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- THIRD_PARTY_NOTICES.md GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- Sources/LGwebOSMenubar/WebOS.swift GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- Sources/LGwebOSMenubar/FeatureChecks.swift GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- Package.swift GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- scripts/build.sh GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- LICENSE GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8482f36
- README.md GitHub · gabrielgreco1/TVmenubar-MacOS · Revision 8641101
- https://x.com/greco_dev/status/2109842197654692349
More in Apps
- Galaxy Buds Client: an unofficial manager built on Samsung’s earbud protocol · Case study
- Wino Mail: recreating Windows Mail and Calendar · Case study
- ScooterLink: reconstructing Honda RoadSync’s handlebar-button protocol · Case study
- iX500 Scan: a macOS client for the reverse-engineered ScanSnap Wi-Fi protocol · Case study
- WristBeam: reconstructing Garmin’s watch protocol for a Mac companion · Case study
- usque: an open reimplementation of Cloudflare WARP’s MASQUE mode · Case study