A customizable, open-source Android TV launcher built with Flutter.
Original project: https://gitlab.com/flauncher/flauncher by etienn01
This fork: Enhanced with modern Flutter, improved UI/UX, and additional features.
This fork is intended for private use only. It is provided as-is with no guarantees, warranties, or support. Use at your own risk. Your mileage may vary (YMMV). The maintainer assumes no responsibility for any issues, damage, or malfunctions that may occur from using this software. Always backup your data and device settings before installation.
- Customizable Categories: Organize apps into rows or grids with custom names and layouts
- Now Playing Widget: Live media controls in the status bar
- Play/pause control for active media sessions
- Track information (artist, title, album)
- Works with any app that uses Android MediaSession API (Spotify, YouTube Music, etc.)
- Auto-hide when no media is playing
- Wallpaper Management: Built-in wallpaper system with support for:
- Custom images (from device storage)
- Gradient backgrounds
- Unsplash integration for high-quality photos
- TV-Optimized Navigation: Designed for D-pad remotes with focus management and sound feedback
- Status Bar Customization:
- Customizable date/time format
- Network status indicator
- Auto-hide top bar option
- Back Button Actions: Configure back button behavior (show clock, screensaver/ambient mode, or do nothing)
- Multi-Language Support: English, Spanish, Dutch
- Material Design 3: Modern Flutter UI with glass-morphism effects
- Privacy-Focused: No analytics or crash reporting
![]() |
![]() |
![]() |
![]() |
- mise - Development tool version manager
-
Clone the repository
-
Install dependencies:
mise install
-
Create
.envfile (for Unsplash integration):cp .env.example .env # Edit .env and add your Unsplash API key
# Development build (installs as com.geert.flauncher.dev)
mise run run:dev
# Production build
mise run build
# Install production APK
mise run run:prod
# Uninstall development version
mise run clean:dev
# Bump version number
mise run bump- Flutter: 3.38.1
- Dart: >=3.4.3
- Java: Zulu 23.32.11 (for Android builds)
- Kotlin: 1.9.0
- Database: SQLite with Drift ORM
- State Management: Provider pattern
- Localization: flutter_localizations with ARB files
Use Button Mapper to remap your remote's Home button to launch FLauncher. This is the safest method.
Tested on Chromecast with Google TV. Commands may differ on other devices.
# Disable the default launcher
adb shell pm disable-user --user 0 com.google.android.apps.tv.launcherx
# Disable the fallback component that re-enables the default launcher
adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraithAfter running these commands, press the Home button and select FLauncher as your default launcher.
adb shell pm enable com.google.android.apps.tv.launcherx
adb shell pm enable com.google.android.tungsten.setupwraithOn Chromecast with Google TV, the YouTube remote button may stop working after disabling the default launcher. Use Button Mapper to remap it.
The now playing widget appears automatically in the status bar when music or video is playing from apps that support Android MediaSession (Spotify, YouTube Music, Plex, etc.). Click the play/pause button to control playback directly from the launcher.
Android's WallpaperManager is not available on most Android TV devices, so FLauncher implements custom wallpaper management.
Note: To use custom image wallpapers, you need a file explorer app installed on your Android TV device.
Access settings via the settings icon in the top-right corner. Available options:
- Applications: Show/hide apps, manage app visibility
- Launcher Sections: Create and manage app categories (rows/grids)
- Wallpaper: Choose gradient, custom image, or Unsplash photo
- Status Bar: Configure date/time format, network indicator, auto-hide behavior
- Back Button: Set action when pressing back in launcher
- Navigation Sound: Enable/disable D-pad navigation sounds
- AppsService: App discovery, categorization, and database operations
- SettingsService: User preferences and configuration
- WallpaperService: Wallpaper selection and persistence
- NetworkService: Network status monitoring
- MediaService: Media session monitoring and playback controls
- ORM: Drift (SQLite)
- Schema Version: 7 (with migration support)
- Tables: apps, categories, apps_categories, launcher_spacers
Contributions are welcome! Please ensure:
- Code follows Flutter/Dart conventions (runs
flutter analyzewithout errors) - New features include tests where appropriate
- Database changes include migration logic
GNU General Public License v3.0
FLauncher
Copyright (C) 2021 Étienne Fesser
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
See LICENSE for full details.
- Original Author: Étienne Fesser (etienn01)
- Original Repository: https://gitlab.com/flauncher/flauncher
- Fork Maintainer: Geert van Dijk




