Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

tv-vibehack

Your TV, minus the ads. Debloat any Android TV / Google TV over ADB and give it a clean, tvOS-inspired launcher. Hand the prompt to Claude Code or any coding assistant, answer a few questions about which apps you use, and it does the rest on the real TV.

Stock home screenAfter
Stock Google TV home with a sponsored adtvOS-style launcher

Everything is reversible: packages are disabled, never uninstalled, and a restore script puts the stock launcher back.

Quick start

  1. On the TV: Settings → Device Preferences → About → press OK on Build seven times → back → Developer options → turn on USB debugging (and Network/ADB debugging if your TV shows it). Keep the TV on and on the same Wi-Fi as your computer.
  2. Open Claude Code (or your assistant of choice) on your computer and paste the prompt from PROMPT.md, filling in your TV model.
  3. Accept the "Allow USB debugging?" prompt on the TV when told to, then answer the checklist questions (which apps you use, which four go in the dock).

That's it. The assistant backs up, debloats, builds and installs the launcher, and verifies each step with screenshots from the TV. If you'd rather do it by hand, the pieces are below.

What's in the repo

PathWhat it is
PROMPT.mdThe prompt. Brand-neutral; the assistant discovers your TV's bloat.
launcher/The tvOS-style launcher. Edit app/src/main/res/values/config.xml for your dock, hidden apps and Live TV package, then run build-and-install.sh.
tools/tv.pyPure-Python ADB client (shell, batch, push, pull). Works where the stock adb is blocked.
tools/b64push.pyUploads larger files (APKs) as base64 chunks with an md5 check.
tools/disable.sh, tools/restore.shApply or undo a debloat list.
examples/Per-TV debloat lists. Add yours, see CONTRIBUTING.md.

The launcher

A small native Android TV home screen (com.gathin.tvhome), built for sets with 1 GB of RAM:

  • Pitch-black background, like Apple TV 4K.
  • A dock at the bottom in a lighter rounded band with the four apps you choose. The shelf above shows the focused dock app's name in large type with an ambient glow sampled from its banner. Press Down and the dock slides up to reveal the rest of your apps in a grid.
  • One translucent glass highlight springs from tile to tile. The focused tile lifts and shows its name.
  • Frosted pills top right: Inputs (a dropdown of HDMI ports, AV and Live TV), Wi-Fi (shows the network name) and Settings. Greeting, a large thin clock and the date top left, set in Outfit.
  • Deterministic D-pad navigation, last focused tile remembered, staggered entrance animation. No blur, no video, no network, no background services.

Configure it in launcher/app/src/main/res/values/config.xml: dock order, hidden apps, Live TV package and columns. Build and install with

TV_HOST=192.168.1.50 launcher/build-and-install.sh

Needs JDK 17 and the Android SDK (platform 34, build-tools 34.0.0). On macOS: brew install openjdk@17 android-commandlinetools && sdkmanager "platforms;android-34" "build-tools;34.0.0".

Talking to the TV by hand

python3 -m venv tools/venv && tools/venv/bin/pip install -r tools/requirements.txt
export TV_HOST=192.168.1.50                                   # your TV's IP
tools/venv/bin/python -I tools/tv.py --probe                 # model, Android version, firmware
tools/venv/bin/python -I tools/tv.py 'pm list packages'      # one command
printf 'cmd1\ncmd2\n' | tools/venv/bin/python -I tools/tv.py --batch
tools/disable.sh examples/xiaomi-mi-tv-4a/debloat.txt        # apply a list
tools/restore.sh examples/xiaomi-mi-tv-4a/debloat.txt        # undo it, restore stock launcher

Gotchas we hit

  • macOS: adb connect says "No route to host" while the port is clearly open. Recent macOS treats the Google-signed adb as its own app under Local Network privacy and silently blocks it. tools/tv.py avoids the binary entirely.
  • No "wireless debugging" toggle on some TVs (Xiaomi among them). USB debugging alone opens network ADB on port 5555.
  • Chained pm commands (pm disable a; pm disable b) may silently stop after the first. Run one per shell call; --batch does this.
  • Large pushes hang through the Python client. Use tools/b64push.py for APKs.
  • Disable the stock launcher only after the new one is installed, or the Home button lands on a factory test app.
  • Third-party launchers often charge for basics like a custom wallpaper. Hence launcher/.
  • No on-screen keyboard after switching launchers (seen on Xiaomi): the default input method pointed at a Baidu IME that isn't installed. Fix with tools/tv.py 'ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME'.

Supported TVs

Anything running Android TV or Google TV: Xiaomi/Redmi, TCL, Hisense, Sony, OnePlus, Realme, Nvidia Shield and most others. Not Samsung Tizen, LG webOS or Amazon Fire TV (different OS, no ADB launcher replacement). Tested so far on the models in examples/.

Contributing

Add your TV's debloat list, improve the launcher, or sharpen the prompt. See CONTRIBUTING.md.

Licence

MIT, see LICENSE. The Outfit typeface is under the SIL Open Font License, see launcher/FONT-LICENSE-OFL.txt.

关于 About

Your TV, minus the ads. Debloat any Android TV over ADB and give it a clean, tvOS-inspired launcher. Built in an afternoon with Claude Code.
adbandroid-tvclaude-codedebloatlauncherxiaomi

语言 Languages

Java84.4%
Python9.5%
Shell6.2%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
12
Total Commits
峰值: 12次/周
Less
More

核心贡献者 Contributors