← Index / File 007
007

VintherOS

The Samsung home screen is built to sell: sponsored rows, autoplay and tracking sit between you and the app you wanted. VintherOS replaces it with a calm, fast launcher. I designed it in Figma as a full system of screens, components and variables, generated the app’s styles from those variables, and got it running on a real Samsung TV — including the remote’s Home button.

RoleProduct designer & developer
Year2026
ClientPersonal project
TeamSolo, with an AI coding agent as pair
StackFigma variables, design tokens, Tizen web app
Interactive demoArrow keys to move · Enter to select · Esc to go backOpen full screen ↗
01

Brief

Our living-room TV is shared by the whole family, guests and a PS5. Most of the time we just want Netflix, DR TV or the console — but Samsung’s Smart Hub puts ads, trailers and recommendation rows in the way, and tracks what we watch.

The goal: a home screen that does one thing well. Get you to what you want to watch in as few clicks as possible, look calm on a big screen, work with nothing but the remote, and never show an ad.

02

My role

I owned it end to end: research into what a Samsung TV actually allows, the design system and every screen in Figma, the token pipeline into code, and installing it on our TV.

The code started as a fork of CleanFrame (MIT) by Nathan Clark. The design, the system, the features on top and the Home-button work are mine.

03

Approach

  • Designed for the remote, not the mouse. Every screen works with arrows, OK and Back. Focus is big, glassy and obvious from the sofa, and nothing needs typing — even HDMI ports get their names from a list.
  • One system from Figma to the TV. Colours, sizes and glass materials are Figma variables. The app’s styles are generated from them, so a change in Figma ships to the TV.
  • Glass without the cost. TVs have weak graphics chips, so blur and glass are rendered ahead of time for each wallpaper. The TV only animates position and opacity, which keeps every focus move instant.
  • Inputs that feel like apps. I explored three ways to reach the PS5 — in the dock, a top-bar Inputs button, or inside All apps — and made the dock the default, with a live preview of what’s on HDMI and a setting for the other two.
  • Owning the Home button. Installing an app is easy; making the physical Home key open it is not. I found a way on Tizen 6 that needs no rooting, by repointing Samsung’s own key-routing rule, with a tested way back to stock.
04

Outcome

VintherOS runs every day on our living-room TV. Home opens it, the PS5 is one click away with a live preview, and there isn’t a single ad. It speaks Danish and English, ships with fifteen wallpapers plus our own photos, and starts with an animation of the snowflake mark.

It’s also how I like to work: a real design system in Figma that code is generated from, and decisions tested on the actual device — not just in a frame.

0Ads on the home screen
1 clickFrom Home to the PS5
2Languages, following the TV
VintherOS home screen: clock, top bar and an app dock over a coastal photograph, with the PS5 focused and a live HDMI preview above it
Visual 02 — Home: your apps, a photograph and the time. The PS5 sits in the dock with a live preview of HDMI.
Photo of VintherOS running on the living-room Samsung TV, with a live PS5 preview above the dock
Visual 03 — On the living-room TV — the physical Home button opens VintherOS.
VintherOS input settings: naming an HDMI port from a list
Visual 04 — Inputs: name each HDMI port from a list, so nothing has to be typed with the remote.
VintherOS settings overview on the TV
Visual 05 — Settings: layout, clock, language, wallpaper and startup — all reachable with arrows and OK.
VintherOS All apps grid
Visual 06 — All apps: everything installed on the TV, reorderable onto Home.
VintherOS AirPlay help sheet
Visual 07 — AirPlay help, one press from the top bar.
Visual 08 — Startup: the snowflake mark draws in, then Home fades up. Plays once per cold start; any key skips it.
Visual 09 — Startup, wordmark variant — chosen under Settings → Startup.
Next file002Online Shop →