A native macOS menu bar app for controlling LG WebOS TVs.
| Menu bar (compact) | Menu bar (expanded) |
|---|---|
![]() Compact status view |
![]() Expanded controls |
| General settings | Automation settings | Diagnostics |
|---|---|---|
![]() Connection and input preferences |
![]() Wake/sleep and input rules |
![]() Logging and export tools |
- Wake-on-LAN: Wake your TV when your Mac wakes
- Auto Sleep: Turn off TV when Mac sleeps (skips if watching different input)
- Volume Control: Weighted slider with resistance at high volumes
- Input Switching: Quick switch between HDMI, DisplayPort, USB-C inputs
- Screen Control: Turn screen on/off without powering down TV
- PC Mode: Auto-detect and set PC mode for reduced input lag
- Media Keys: Capture volume keys to control TV volume
- Onboarding: First-run setup wizard
- macOS 15.0+
- LG WebOS TV (2018 or newer recommended)
- TV and Mac on the same network
# Build the project
swift build
# Run tests
swift test
# Build release DMG
./scripts/build-dmg.sh- Download the latest DMG from Releases
- Open the DMG and drag LGTVMenuBar to Applications
- Launch LGTVMenuBar
- Follow the onboarding wizard to connect your TV
- Grant Accessibility permission when prompted (for media key capture)
Since this app is distributed outside the Mac App Store and uses ad-hoc code signing, macOS Gatekeeper will block it on first launch with a message: "LGTVMenuBar cannot be opened because the developer cannot be verified."
To open the app:
- Right-click (or Control-click) on LGTVMenuBar in Applications
- Select Open from the context menu
- Click Open in the dialog that appears
You only need to do this once—subsequent launches work normally.
This app is signed but not notarized with Apple (which requires a paid Developer account). The source code is fully available in this repository, and you can build it yourself if you prefer.
On first launch, the onboarding wizard will guide you through:
- TV Discovery: Enter your TV's IP address and MAC address
- TV Pairing: Accept the pairing prompt on your TV
- Preferences: Configure wake/sleep behavior and preferred input
- Permissions: Grant necessary system permissions
- Swift 6.0 with strict concurrency
- SwiftUI for the menu bar popover UI
- WebSocket communication with LG WebOS API
- Keychain for secure pairing key storage
Sources/LGTVMenuBar/
├── Models/ # Data models and enums
├── Protocols/ # Protocol definitions
├── Services/ # Business logic and API clients
└── Views/ # SwiftUI views
Tests/LGTVMenuBarTests/
├── Mocks/ # Mock implementations for testing
├── Services/ # Service integration tests
└── Unit/ # Unit tests
MIT License - see LICENSE for details.




