Skip to content

About

An ad-free home screen for Samsung Tizen TVs. Comes back when apps close, answers the Home button, starts with the TV. No root, no Android box.

Topics

Resources

Contributing

Stars

8 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

Skylight. A home screen for Samsung TVs. No root, no Android box, no ads. A painted lake at golden hour, the sun setting behind the mountains.

Live demo Latest release MIT license Tested on Tizen 9 No root needed

Skylight replaces what you see when you turn on a Samsung TV. Your apps as tiles, under a sky that follows the hour, and nothing sponsored. It is a sideloaded Tizen web app: no root, no Android box, nothing removed from the TV. Three small loops keep it in place on a system that was never meant to allow a third-party home screen: it comes back when an app closes, it answers the Home button, and it starts with the TV.

A whole day on Skylight in nine seconds: the sky over the lake moves from before dawn through sunrise, noon, golden hour, dusk and an aurora night, while the clock on the home screen moves forward
A whole day in nine seconds, drawn by the same code the TV runs.

Why this exists

In October 2026 Clean Your TV went viral: 38,000 GitHub stars in nine days, and a showcase of more than a hundred projects built around it. It works because Android TVs have ADB. Turn on debugging, switch the manufacturer's bloat off with pm disable-user, install a clean launcher and make it Home.

Samsung TVs run Tizen, and none of that exists there. Clean Your TV's own notes on Tizen put it plainly: there is no shell to switch Samsung's apps off, and a custom app tested on a 2024 Samsung still lost the Home button to Samsung Home and came back on HDMI after a restart.

Skylight takes a different route. It leaves Samsung's software where it is, puts a better home screen in front of it, and then does the work Tizen won't do for it: noticing when it has lost the screen, and taking it back.

Android TV with Clean Your TV Samsung TV as it ships Samsung TV with Skylight
Sponsored rows on the home screen Switched off over ADB Always there Out of sight: Skylight is the home you see
Your own home screen Replaces the launcher Not possible A sideloaded app that holds its place
Press Home The new launcher Samsung Home Skylight, a moment later
Leave an app The new launcher Samsung Home Skylight
Turn the TV on The new launcher Samsung Home or the last source Skylight (about 90 s after a cold boot)
What it changes on the TV Disables apps, restorably Nothing Nothing

What it does

  • Your apps as tiles. Favourites on top, the rest below. Hold OK on a tile to move it or hide it. New apps show up by themselves; Samsung's system apps don't.
  • Comes back when an app closes. Exit Netflix, YouTube or anything else and you land on Skylight, even with apps the TV keeps running in the background.
  • Answers the Home button. Press Home anywhere and Skylight is back a moment later. A Samsung tile hands you Samsung's own screen for three minutes when you need the app store.
  • Starts with the TV, from standby and from a cold boot, through two small SmartThings cloud rules.
  • A sky that keeps the time. Dawn, day, golden hour, dusk and night blend into each other, the sun and moon cross the sky, the moon shows its real phase, and the line under the date gives the next sunrise or sunset.
  • Fast on TV hardware. On the TV the scenery is painted once a minute into one flat image, and only a few tiny things move. No frameworks, no network calls, fonts bundled: the whole app is about half a megabyte.
  • Ad-free YouTube with TizenTube, which Skylight shows as YouTube and returns from cleanly.
Dawn: the sun just over the mountains, mist on the lake Late morning: a blue sky, the bottom row selected
Night: a full moon and the aurora, Netflix selected Holding OK on Netflix opens a small menu: Move, Hide

Try it in your browser

The live demo is the real app, with a stand-in for the TV. Use the arrow keys and Enter, and hold Enter on a tile for Move and Hide. Jump to dawn, noon, golden hour, dusk or night. App logos are not part of this repository, so the demo shows lettered tiles in their place.

How it works

Three timelines. When an app closes: you open Netflix from Skylight, a helper service asks the TV once a second what is on screen, Netflix leaves the screen, Skylight comes back. When you press Home: Samsung's home takes the screen, Skylight notices it was hidden without opening anything, a second and a half later nothing of yours is showing, Skylight comes back. When the TV starts: it reports in to SmartThings, a cloud rule runs launchApp, Skylight opens.

Samsung's platform forbids most of what a launcher needs, so Skylight is three parts, each covering something the others can't.

The app (skylight/) is a plain Tizen web app: one HTML page, hand-written CSS and JavaScript, no build step beyond zipping. It opens apps with tizen.application.launch and keeps running in the background. When it loses the screen without having opened anything, that was the Home button: it waits a second and a half, checks that no app of yours took over, and brings itself back with Samsung's own eden_resume app control, so it returns instantly instead of reloading.

The helper (skylight/service/index.js) is a Tizen web service: Node.js, started by the app, living on as its own process so it keeps watching even while the TV freezes the page under a heavy app. It asks the TV's own status service whether the app you opened is still on screen:

GET http://127.0.0.1:8001/api/v2/applications/<app id>
{ "running": true, "visible": false }

That service answers without a token only to callers on the TV itself. Exiting YouTube, for instance, never closes it, it only leaves the screen, so leaving the screen is the signal, and Skylight comes back. The helper also serves its log on 127.0.0.1:8130, which the diagnostics panel shows (select a top-row tile and press Up three times).

The cloud rules (tools/smartthings-skylight.ps1) handle startup, which nothing on the TV can do: it ignores on-boot for sideloaded services, and this model has no "autorun last app". Samsung TVs expose launchApp and remoteControl.send to the SmartThings API (the SmartThings phone app's routine editor hides them), and SmartThings Rules run on Samsung's servers with no device of yours left on. One rule fires when the TV reports it has woken from standby. A cold boot sends no power event at all, but the TV does refresh a status timestamp when it checks in, and the second rule listens for that.

What does not work on these TVs, so you don't have to try it
Idea What happens
Catching the Home key Samsung keeps it; no app receives it.
Registering as a source Not available to third-party apps.
Replacing the home app id Possible on some sets by rewriting system settings over the developer connection, as CleanFrame does. Skylight leaves it alone: it is undocumented, differs by model and firmware, and changes the TV itself.
on-boot="true" services Ignored for sideloaded apps; nothing runs until something launches it.
prelaunch.support Not supported since 2019 TVs.
getAppsContext() as an "app closed" signal Resident apps such as YouTube stay in the list after you exit them.
The casting (DIAL) service from the TV itself Answers 401 to callers on the TV.
Launching YouTube in the caller's app group It hands over to Samsung's resident YouTube engine instead.
The SmartThings phone app's routines They don't offer "open app"; the API does.

The full investigation, dead ends included, is in docs/startup-investigation.md.

Install

You need a Samsung TV with Developer Mode (tested on a 2025 model with Tizen 9; see compatibility), a Windows PC on the same network for the PowerShell scripts, and a Samsung account. The startup rules also need the TV added to SmartThings.

1. Developer Mode on the TV. Open the Apps screen and type 1 2 3 4 5 on the remote. On remotes without number keys, the SmartThings phone app's remote has a keypad. Switch Developer Mode on, enter your PC's IP address as the Host PC IP, then unplug the TV for a full minute and plug it back in. On 2025 models a normal restart isn't enough.

2. The installer. Download Apps2Samsung-cli-<version>-win-x64.zip from the Apps2Samsung releases, unzip it, and check that it finds the TV:

apps2samsung-cli scan

3. The app. Download Skylight.wgt from the latest release, or build it yourself with the app logos, which aren't redistributed here:

tools\fetch-icons.ps1        # downloads the logos into skylight\icons
tools\build-skylight.ps1     # writes dist\Skylight.wgt

4. Install it. The first install opens a browser so you can sign in to Samsung, which creates a signing certificate for your TV. Later installs reuse it.

apps2samsung-cli install dist\Skylight.wgt --tv <TV IP> --partner --launch

Add --local-ip <PC IP> if the PC has more than one network. For ad-free YouTube, install TizenTube from the installer's catalog the same way: apps2samsung-cli install TizenTube --tv <TV IP>.

5. TV settings. Settings, All Settings, Advanced Features, Start Screen Options: turn Start with Smart Hub Home on, so a cold boot waits on Samsung's home rather than a "no signal" screen while startup runs, and turn Autorun Samsung TV Plus off.

6. Startup. Create a token at https://account.smartthings.com/tokens with Devices: read, execute, Locations: read and Rules: read, write, execute. New tokens expire after 24 hours, which is fine: the rules keep running without it.

$env:SMARTTHINGS_TOKEN = '<token>'
tools\smartthings-skylight.ps1                                      # finds the TV, checks it accepts app launches
tools\smartthings-skylight.ps1 -Test                                # opens Skylight on the TV through the cloud
tools\smartthings-skylight.ps1 -CreateRule                          # standby wake: Skylight
tools\smartthings-skylight.ps1 -ReportRule -BootDelay 5 -NoHomeKey  # cold boot: Skylight

If your TV starts on a tuner "no signal" screen instead of Samsung's home, leave out -NoHomeKey and the rule presses Home before launching. -ListRules, -DeleteRule poweron or -DeleteRule checkin, -Status, -History, -Execute checkin and -Capability <name> are there for looking around.

Everyday use

Do this Get this
Arrows, then OK Move around, open an app
Hold OK on a tile Move it with the arrows, or hide it
The Hidden apps tile, at the end of the bottom row Bring hidden apps back
The Samsung tile, then Home Samsung's own screen for three minutes, for the app store
Home, from anywhere Skylight
Back out of any app Skylight
A top-row tile, then Up three times Diagnostics: what Skylight and its helper noticed

Make it yours

Everything opinionated lives in two files.

  • skylight/js/catalog.js decides which apps are favourites, the order of the rest, which apps stay hidden, and each app's name, logo, colour and the note shown when it is selected. Store apps that aren't listed still appear, with a colour of their own; Samsung's system apps are skipped unless listed.
  • skylight/js/scenery.js holds the five skies (SKIES), how long they take to blend, and sunrise and sunset (SUNRISE, SUNSET, in hours).

To preview on a PC, serve the skylight folder with any static server and open it in a browser; a stand-in replaces the TV's tizen API. Handy flags: ?hour=22.4 for any time of day, ?lean for the TV's rendering, ?still for screenshots, ?visitors for birds and shooting stars right away, and ?keys=39,39,13 to replay remote keys.

Compatibility

TV Year Tizen Result
Samsung Crystal UHD UA43UE86AFULXL 2025 9.0 Everything works. A cold boot reaches Skylight after about 90 seconds.
Samsung The Frame QA75LS03BASXNZ 2022 6.5 Tested with another launcher that makes the same status calls, not with Skylight itself (#1). Coming back after Home and after ordinary web apps works. Returning from Netflix, Disney+, Prime Video and YouTube doesn't: the TV reports them as off screen even while they play.

Tried it on another Samsung? Tell us how it went, good or bad. This table grows from those reports.

Questions

Does it change anything on the TV's system?
No. It is an ordinary app installed through Samsung's own Developer Mode, the way developers test their apps. Nothing is rooted, flashed, patched or disabled. Uninstall it from the Apps screen and the TV is exactly as it was. The startup rules live in your SmartThings account; -DeleteRule poweron and -DeleteRule checkin remove them.
Are Samsung's ads gone?
From the screen you see, yes. Samsung's home still exists underneath, and you'll see it for a moment after pressing Home, or whenever you open it on purpose through the Samsung tile. Turning off Autorun Samsung TV Plus and the ad and viewing-information options under Settings, Privacy Choices removes most of the rest.
Does my PC have to stay on?
No. The PC is only for installing. The helper runs on the TV, and the startup rules run in Samsung's cloud.
Why does a cold boot take about 90 seconds?
After the power has been off, the TV needs about that long to get back online and report in to SmartThings, and nothing on the TV may start a sideloaded app before then. Waking from standby is much quicker. If you always turn the TV off with the remote, you rarely see a cold boot at all.
What happens after a firmware update?
Installed apps stay. If Samsung ever changes the TV's local status service, returning from apps could stop working; the diagnostics panel will show it, and an issue here will get it looked at.
Why not just buy an Android TV box?
You can, and Clean Your TV is excellent there. Skylight is for keeping the TV you already have, with its own remote, picture settings and apps, and making it calm.
Does it collect anything?
No. No analytics, no accounts, no network calls. The helper talks only to the TV itself on 127.0.0.1, and the startup rules sit in your own SmartThings account.
Does it work on Android TV or LG?
No, Skylight is for Samsung's Tizen. For Android TV and Google TV, use Clean Your TV or its phone app; its showcase also lists projects for Fire TV and LG webOS.

Performance notes

The TV's graphics chip is the limit, not the code. What proved expensive on a budget chip: many large translucent layers blended every frame, such as CSS masks, -webkit-box-reflect, drifting full-screen gradients and gliding transforms. What proved free: anything drawn once and left alone, plus a few small transform and opacity animations. Skylight switches to a lean rendering on the TV (the class lean on #screen) and keeps the richer one for the browser. If you add an effect, keep it small, or keep it behind .screen:not(.lean).

Known limits

  • A cold boot shows Samsung's home for about 90 seconds before Skylight appears (see above).
  • The cold-boot rule relies on Skylight having been the last app on screen when the power went. After a cut while another app was showing, one press of Home brings Skylight back.
  • Sideloaded apps need Developer Mode to stay on, with the Host PC IP pointing at a machine that exists.
  • Skylight comes back only after apps that report themselves as on screen. On 2022 sets (Tizen 6.5), Samsung's integrated apps such as Netflix, Disney+, Prime Video and YouTube don't (#1); after those, open Skylight from Samsung's apps row.

Contributing

Reports from other TVs are the most useful thing right now; there's a form for them. Code is welcome too: see CONTRIBUTING.md for how to preview, what to keep in mind for TV hardware, and how to test on a set.

Credits

License

MIT, see LICENSE. The bundled fonts keep their own licenses, and app logos belong to their owners.

About

An ad-free home screen for Samsung Tizen TVs. Comes back when apps close, answers the Home button, starts with the TV. No root, no Android box.

Topics

Resources

Contributing

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages