mihirgupta0900 / tv-home
git clone https://github.com/mihirgupta0900/tv-home.git
Debloat a slow, ad-filled Android TV over Wi-Fi and give it a fast Apple TV-style home screen. One prompt for Claude Code, or do it by hand.
—
stars, 24h
+300
stars, 7 days · #195
+300
stars, 30 days · #877
300
★ total · +300% this week
35
forks · 5 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageJava
License—
Created2026-10-18 (2d ago)
Last push2d ago
Watchers1
OwnerUser
GitHub topics
Links
README excerpt
# tv-home
**Make a slow, ad-filled Android TV fast and clean again.** Debloat it over Wi-Fi and give it a
tiny Apple TV-style home screen with rotating nature wallpapers. You can hand the whole thing to
Claude Code with one prompt, or do it by hand with the scripts here.
On a 2 GB TCL Google TV this disabled 25 bloat apps and cut the home screen's memory use from
192 MB to 83 MB. Everything is reversible: packages are disabled, never uninstalled.
## Do it with Claude Code (easiest)
1. On the TV: Settings → System → About → press OK on **Build** 7 times → back → Developer options
→ turn on **USB debugging**. Keep the TV on, on the same Wi-Fi as your computer.
2. Clone this repo, open Claude Code inside it (so it can reuse the launcher and scripts), and paste:
[code]
3. Accept "Allow USB debugging?" on the TV when asked, then answer a few questions: which apps you
use, which go in the dock, whether you want wallpapers.
The prompt is short on purpose; Claude works out the details. The gotchas below are there in case it gets stuck.
## Do it by hand (macOS)
[code]
Undo everything with `tools/restore.sh `.
## What's here
| Path | What it is |
|---|---|
| PROMPT.md | The prompt for Claude Code / any coding agent |
| launcher/ | The home screen. 4.7 MB including the wallpapers; plain Android, no network, no background services |
| launcher/res/values/config.xml | Dock apps, hidden apps, Live TV app, grid columns |
| tools/tv.py | Pure-Python ADB client: shell, batch, screenshots, chunked APK push |
| tools/find-tv.sh | Finds Android TVs on your Wi-Fi |
| tools/type.sh | Type into the TV's on-screen keyboard from your laptop (`tools/type.sh` alone prompts hidden, for passwords) |
| tools/disable.sh, tools/restore.sh | Apply / undo a debloat list |
| examples/ | Debloat lists per TV model |
## The launcher
- Clock, greeting and date top-left. Frosted pills top-right for **Inputs** (HDMI/AV/Live TV
dropdown; the remote's Menu key opens it too), **Wi-Fi** (shows the network name) and **Settings**.
- A dock of your favourite apps. The focused app's name appears above it over a glow coloured from
its banner. Press Down for every other app in a grid.
- 12 nature photos crossfade every 10 minutes, with a scrim so text stays readable. Swap them in
`launcher/assets/wallpapers/` (1920×1080 JPEGs, credits in `launcher/WALLPAPER-CREDITS.md`).
- Deterministic D-pad focus, remembers the last tile, picks up newly installed apps on return.
Change the dock: edit `config.xml`, then run `launcher/build-and-install.sh`.
## Gotchas we hit
- **macOS blocks the `adb` binary** on the local network ("No route to host"). `tools/tv.py` uses
the `adb-shell` Python package instead.
- **Google TV hijacks the Home button.** With the stock launcher disabled, the setup app
(`com.google.android.tungsten.setupwraith`) has a higher HOME priority than any third-party
launcher. The install script disables it; `restore.sh` re-enables it.
- **Home opened the launcher behind the curr