Free My TV: An Ad-Free Home Screen That Turns Off the Bloat, Built With Claude Code
By Indie Kings | October 22, 2026
Updated October 22, 2026: Free My TV, an open-source replacement home screen for smart televisions, published version 1.1.0 on 22 October 2026, adding nine more TV brands and fixes for LG and Samsung sets. It is not a launcher skin. On Google TV it uses the television's own ADB service to turn off the stock home screen and a list of preinstalled promotional apps, and it keeps a record so every one of them can be switched back on.
Image: GitHub repository card for simbasjungles/free-my-tv, a replacement home screen for Google TV, LG and Samsung televisions.
What it replaces
On most smart TVs the home screen is an advertising surface: a row of sponsored placements above the apps you actually opened, refreshed by the manufacturer. Free My TV replaces that layer with a glass shelf of your own apps, a drawer for inputs, weather and prices, and a theme that follows the sunset in your city.
The feature list is deliberately narrow. A shelf of streaming apps you pick and order on the TV itself. Three trending picks every hour drawn from what is trending this week and the latest releases, filtered to apps you already have, with separate Movies and Shows tabs. An hour-by-hour forecast with sunrise and sunset, plus crypto prices. A full-screen screensaver with a large glass clock. Setup on the TV through the app's own settings screen, covering language, city, temperature unit, theme, which cards appear and which coins to track.
The version history matters more than the feature list for understanding the project. Version 1.0.0, published on 20 October 2026, was already the Samsung and LG release: it shipped the same design as a Tizen app for 2017 and newer Samsung sets and as a webOS app for webOS 3 and newer. Version 1.1.0, two days later, is the one that fills in the edges and widens the hardware list.
How an app on the TV turns off the TV's own launcher
This is the part that separates Free My TV from a home screen replacement that only draws over the top. The README describes the mechanism in three sentences that are worth reading slowly.
The app is a plain Android application with no Gradle and no third-party libraries. The build script runs aapt2, javac, d8, zipalign and apksigner in sequence and produces an APK of about 2 MB. That keeps the dependency surface small, and it also means the whole program is readable Java rather than a framework project.
To change the home screen, it uses the television's own ADB service from inside the television. The app connects to 127.0.0.1:5555 with its own key, which is the "Allow USB debugging?" prompt the user accepts during setup, and then runs the same commands a person would run from a computer: cmd package set-home-activity to make itself the home app, settings put secure screensaver_components for the screensaver, and pm disable-user for the apps on its off list. The README notes that nothing in the app listens on the network: the connection it opens is a loopback connection inside the device. The television's own ADB service is the part that accepts connections, which is why the install from a computer has to reach the set over the LAN.
That design has a consequence worth stating plainly. Because it disables packages rather than drawing over them, the change is real. The stock home screen is not sitting underneath, waiting to reappear. It is turned off, and the app is the home screen.
The off list and the protected list
The project structures the invasiveness as two lists in one file. DEBLOAT is what gets turned off. PROTECTED is what is never touched, checked before every change. The README spells out both.
| Turned off, without uninstalling | Never touched |
|---|---|
| The stock home screen and screensaver | Picture and sound settings |
| Google TV's recovery home, Play Games and YouTube Music | Inputs and remote pairing |
| On TCL televisions, the TCL Channel, messages, store demo, hotel menu, manuals, mirroring and logging apps | Google services and the Play Store |
| On Philco televisions, AI PONT promo channels and app downloads, and the manual | Any app that saved a Wi-Fi network, since Android would erase the network |
| On Multilaser and KTC-made televisions, Anoki's screen content recognition, the store demo and the manual | Google Assistant, unless disable_assistant=true is set explicitly |
The Wi-Fi exception is the sort of detail that shows someone tested on real hardware. Turning off an app that stored a network would make Android forget the network, so those apps are left alone, and the README says that if the TV's first setup saved your network, the switch asks you to forget it and reconnect in Settings first.
There is a second list for remote buttons. On TCL televisions the Netflix, YouTube and Prime buttons keep working through a small accessibility service that only reads those three keys, and each can be pointed at a different app in Free My TV's Remote Buttons screen. Vestel-made sets and Xiaomi projectors get the same treatment for the Netflix button, KTC-made sets for the Tabii button, and Sony sets can remap BRAVIA CORE, Netflix, Disney+, Prime Video, YouTube and Crunchyroll, plus Google Play on remotes that have that button. The service is switched off when you return to the original home screen.
The performance numbers
The README claims 60 frames per second with every frame inside 16.6 ms, on the TV's own chip, and a home screen that uses 96 MB of memory instead of 242 MB. Both figures are attributed to one measurement: a 98 inch TCL Google TV running Android 14.
| Measurement | Claimed value | Basis |
|---|---|---|
| Frame rate | 60 fps, every frame in 16.6 ms | README, measured on a 98 inch TCL Google TV, Android 14 |
| Memory use | 96 MB against 242 MB for the stock home screen | README, same television, described as a 60 percent reduction |
| APK size | About 2 MB | README, built without Gradle or third-party libraries |
| Install time | About ten minutes | README, for the Google TV and Android TV path |
| Repository size | About 10,100 KB | GitHub repository metadata |
Those are single-device figures from the project's own testing, and the README does not present them as anything else. The memory reduction is the more interesting of the two, because a home screen is resident for the life of the set, and 146 MB on a television that shares its RAM with the streaming apps is the difference between a launcher that survives and one that gets killed. The 16.6 ms framing means the frame budget is met rather than averaged, which is a stronger claim than "60 fps".
Three platforms, three install paths
| Platform | Minimum | How it installs |
|---|---|---|
| Google TV, Android TV | Android 8 or newer | Developer mode, USB debugging, then the built APK over adb, or an AI coding assistant following the README |
| LG, webOS | webOS 3 or newer | LG Developer Mode app, then python3 webos/build.py and python3 webos/install.py from a computer on the same network |
| Samsung, Tizen | Tizen 3, 2017 or newer | Developer mode, then TizenBrew Installer, or python3 tizen/install.py |
The Android path is the least friendly and the README does not hide it. Developer mode is enabled by pressing the Android TV OS build entry seven times, USB debugging goes on in developer options, and the TV's IP address has to be written down because the adb install step needs it. Building needs a JDK 17 or newer, the Android SDK command line tools with build-tools 34 and platform android-34, and adb. On a Mac that is three Homebrew packages and one sdkmanager line; on Linux it is distribution packages plus the same line; on Windows it is Git Bash or WSL.
The first build creates a config.properties carrying the city, a TMDB key for the picks, and an optional Watchmode key that lets a pick open its title inside the streaming app rather than the app's home. The default coordinates are New York, and the default region is US. The README asks for the build to be run again after editing, and tells the reader to keep the generated freemytv.keystore, because updates are signed with it.
There is also a TCL-specific step that no general Android TV guide would mention. TCL blocks background apps by default, and the README says the switch never starts without an appops command that allows auto start.
On LG and Samsung the app is a different codebase: plain HTML, CSS and JavaScript in a web directory, written for the Chromium builds in older televisions, with no frameworks. The LG package is built without LG's tools and installed through Developer Mode, and it lists and opens apps through the television's own service bus, Luna, the way LG's launcher does. Samsung packaging produces a .wgt that uses Tizen's web APIs for apps and inputs.
Going back, and the watchdog
Because the off list is stored on the television rather than only on the computer, the return path survives losing the app. On the TV, Free My TV to Home Screen to Original restores the factory home screen, the screensaver and every app that was turned off. The README says they come back exactly as they were, and that if the app was uninstalled while it was the active home screen, reinstalling it and choosing Original works because the record of what it turned off is still in the TV's settings.
There is a watchdog in a separate process, and two things trigger it. If the new home screen crashes three times within five minutes, it switches back to the stock home screen on its own. And a boot check reasserts the choice after a television update, which is the failure mode that would otherwise leave a set with no working home screen after firmware maintenance.
Removing it for good is a two step process in the README, and the order matters: switch to Original first, then uninstall Free My TV from Settings, Apps. The LG build has its own uninstall flag on the install script.
Developer modes, accounts and firmware
Every install path needs a developer option the manufacturer intended for app development, and two of the three involve a vendor account.
On LG, the Developer Mode app requires a free LG developer account signed in on the TV, and the mode expires. The README says it lasts about 40 days and that the Developer Mode app has to be opened periodically and EXTEND pressed. On Samsung, sets from 2023 or newer ask for a Samsung account sign-in once during install so the app can be signed for that specific television. Both are vendor-controlled switches that a firmware update can change.
Our take: this is an unusually well-engineered use of the television's own tools, and the reader should still go in knowing what is being changed. Enabling USB debugging opens an ADB port on the device, which is the control channel the app depends on at runtime, so switching it off again would remove the mechanism the launcher uses rather than harden the install. The safer question is what else can reach port 5555 on your network while it is on. The app disables packages, which is a real modification to the television's software even though nothing is uninstalled and the return path is documented and self-healing.
The other caveat is the platform one. Installing an unofficial launcher through a developer mode is not a supported configuration on any of these systems, a firmware update can break it, and on a set still under warranty the manufacturer's terms are worth checking before the home screen changes. The README's privacy section is reassuring and specific: no accounts, no analytics, no tracking, with network traffic going to TMDB, Open-Meteo, Binance when prices are enabled, and Watchmode only when a key is set. The project also states it is not affiliated with Google, TCL, LG, Samsung or any streaming service.
One more disclosure deserves recording because it changes how the code should be read. The README names Claude Code in its tagline, and the project leans on that: there is a CLAUDE.md explaining how an assistant should adapt the brand lists, and the README invites the reader to open the folder and say "set it up for my Sony". That is a genuinely different maintenance model from a traditional launcher, and it is why the off list is a data structure in one Java file rather than a hardcoded set of package names scattered through the code.
FAQ
Does Free My TV remove the ads inside streaming apps?
No. It removes the sponsored rows and promotional apps from the television's home screen. Advertising inside Netflix, YouTube or a broadcaster's app is part of those apps and is unaffected.
Does it root the TV or uninstall anything?
It does not root the television and it does not uninstall anything. It disables the stock home screen, the screensaver and a specific list of promotional apps, using the TV's own ADB service over a loopback connection.
How do I get the original home screen back?
On the TV, open Free My TV, go to Home Screen and choose Original. The factory home screen, screensaver and every app come back, and the list of what was turned off is kept in the TV's settings if the app itself was uninstalled.
What happens if the new home screen crashes?
A watchdog in a separate process restores the stock home screen after three crashes within five minutes, and a boot check keeps the choice after a television update.
Which TVs are supported?
Google TV and Android TV on Android 8 or newer, including TCL, Sony, Hisense, Philips, Xiaomi, Vestel-made and KTC-made sets and streamers such as Chromecast with Google TV, the Google TV Streamer, onn 4K and NVIDIA Shield, plus LG on webOS 3 or newer and Samsung on Tizen 3 or newer.
Why does it need a TMDB key?
The trending picks are built from TMDB data, so the build needs a free key in config.properties. The optional Watchmode key lets a pick open the title inside its streaming app instead of the app's home screen.
Bottom Line
Free My TV is the most substantive answer yet to a problem every smart TV owner has: the home screen is not yours. What makes it more than a skin is the mechanism. A 2 MB Java app talks to the television's own ADB service over loopback, sets itself as the home activity, and disables the stock launcher and a named list of promotional apps, while a protected list guards picture, sound, inputs, Google services and the Play Store. The numbers are modest and single-device, 96 MB against 242 on a 98 inch TCL, and the honest part is the exit: a settings-stored record of every package it turned off, a one-screen return to Original, and a watchdog that restores the stock home after three crashes in five minutes. The caveats are the ones that come with the territory. It needs a free TMDB key, it works through developer modes that expire on LG and require a Samsung account on recent sets, and it is unofficial software on a platform where the manufacturer controls the launcher. Read the off list for your brand before you run it, and keep the keystore.
Sources
- Free My TV repository README, simbasjungles/free-my-tv, accessed 22 October 2026
- Free My TV release notes for 1.0.0 and 1.1.0, published 20 and 22 October 2026
- GitHub repository metadata for simbasjungles/free-my-tv, accessed 22 October 2026
Related: Google TV Streamer vs. Apple TV 4K: Which Streaming Device is Right for You? | Top Features of the Google TV Streamer: What Sets It Apart from Competitors | Google TV Streamer: The Ultimate AI-Powered Entertainment and Smart Home Hub