cc2018aae787476a54d08f04a44fad5ab99b9924
- SwiftUI popover: apps grid w/ live search, sources, glass remote, gradient volume slider, animations - Persistent python protocol bridge (vidaa-control, MQTT/TLS :36669) - Wake-on-LAN power-on, one-time PIN pairing with token auto-refresh - MCP server for AI agents (11 tv_* tools) + live test script - Gitea Actions CI workflow
HisenseBar
A native macOS menu-bar app that controls Hisense VIDAA smart TVs over the local network — volume, apps, input sources, remote keys, and power, all from the menu bar.
Features
- Volume — live slider with mute (changes are pushed to the TV as you drag)
- Apps — full app grid with icons and local search; click to launch
- Sources — switch inputs (TV, HDMI1–3, AV…) with friendly device names ("PlayStation 5")
- Remote — d-pad with hold-to-repeat, OK/back/home/menu, transport keys, number pad
- Power — off via remote key, on via Wake-on-LAN (MAC auto-detected)
- Pairing — one-time PIN flow straight from the popover; token stored in
~/Library/Application Support/HisenseBar/tokens.jsonand auto-refreshed
Requirements
- macOS 14+
- Hisense VIDAA TV on the same network (MQTT protocol, port 36669)
- Python 3.9+ on this Mac for the protocol bridge (see Architecture)
Install
- Download
HisenseBar.app.zipfrom Releases. - Unzip and drag
HisenseBar.appto/Applications. - First launch: right-click → Open (the app is not notarized), then allow Local Network access when macOS asks.
- Click the TV icon in the menu bar → enter the PIN shown on your TV once.
Build from source
git clone https://gitea.anwarpy.ai/ahmed/hisence-mac-app.git
cd hisence-mac-app
# create a python venv with the vidaa-control protocol library, then:
bash make_app.sh
make_app.sh builds the Swift package, assembles HisenseBar.app, and bundles the bridge + icon.
Architecture
SwiftUI menu-bar app (BridgeTV actor)
│ line-JSON over stdio
▼
bridge.py — persistent protocol bridge (vidaa-control implementation)
│ MQTT 3.1.1 over TLS :36669
▼
Hisense VIDAA TV
The UI is pure native SwiftUI. All TV protocol work (pairing, tokens, MQTT) happens in the Python bridge process, which stays connected for instant commands. The TV's TLS stack rejects Apple's Network.framework TLS, but accepts OpenSSL — the bridge sidesteps that entirely.
Troubleshooting
| Problem | Fix |
|---|---|
| Nothing happens / no PIN | System Settings → Privacy & Security → Local Network → enable HisenseBar |
| macOS blocks launch | Right-click the app → Open (unsigned build) |
| TV shows "fake sleep", commands half-work | Press any key once — the screen wakes, everything responds |
| Pairing expired | Menu bar → gear → Pair TV again |
Roadmap
- Design refresh: animations, custom slider, glass remote buttons, app icon
- Hermes MCP server (
mcp_tv_server.py— in progress, 11tv_*tools) - Notarized builds
License
MIT — see LICENSE.
Releases
1
HisenseBar v1.0.0
Latest
Languages
Swift
65.9%
Python
31.9%
Shell
2.2%