A minimal Google TV launcher: a flat grid of apps and nothing else.
Built as a lighter alternative to full-featured TV launchers (no
live-TV integration, no content recommendation rows, no search/voice)
for anyone who just wants a fast app grid.
Features:
* Flat app grid, 5, 6, or 7 columns (your choice), showing every
installed launchable app.
* Top bar with a live clock, a Wi-Fi status icon that jumps straight to
system network settings, a system settings shortcut, and the
launcher's own settings shortcut.
* Theme: follow system, light, or dark, with a choice of background
gradient presets.
* Per-app show/hide and reordering, via move-up/move-down controls
rather than drag-and-drop, since drag gestures do not have a sane
D-pad equivalent.
* Press Menu while an app icon has D-pad focus to jump straight to that
app's system "App info" page (permissions, storage, uninstall), the
standard "long-press an icon" destination on touch launchers, reached
here without needing a touch-only gesture.
* Optional online backup and restore of settings via
sync.odiousapps.com (see "Online services" below), with multiple
timestamped backups to pick from when restoring, plus a one-tap reset
to defaults (which works offline).
* Optional "Soundbar wake": before launching an app, call a URL on your
own server to wake a soundbar that has gone into standby (see
"Online services" below).
* A background service detects the device waking from standby and
brings the launcher back to the foreground if something else (such as
the device's own built-in launcher) took over during that time.
MX3 Launcher does not itself favour, require, or bundle any particular
third-party app -- it simply lists whatever is already installed.
Online services (both optional, off until you pair them):
The app grid and all other features work fully offline. Two features
talk to sync.odiousapps.com, a pairing/backup service run by the
developer, and only after you press "Pair" in Settings and approve the
request on another device (by scanning the QR code or entering the
short code at sync.odiousapps.com, where you sign in to your account):
* Online backup: pairing gives the TV a device token. When you back up,
the TV uploads your theme, background gradient, column count, the
list of hidden apps and your custom app order to sync.odiousapps.com,
where it is stored against your account. The hidden-app list and app
order are package names of apps installed on the TV (for example
com.example.app). Restoring downloads a chosen backup back from the
same server. Nothing is uploaded unless you press "Back up settings".
Earlier versions saved backups locally to the Downloads folder
instead, but that didn't work reliably on TVs: Android/Google TV has
no Storage Access Framework file picker, and files saved by another
app (or by a previous install or version of this one) can't be read
back due to Android's file permissions, so backups couldn't be
restored. Online backup replaced it for that reason.
* Soundbar wake: pairing fetches a URL and secret key that you saved
earlier in your sync.odiousapps.com account; these are stored on the
TV. Once enabled in Settings, every time you launch an app the TV
makes a request to that URL (your own server, not
sync.odiousapps.com) with ?key=<your secret>, plus the IR code name
and a "check current" flag, and waits for it to succeed before
launching. No information about which app is being launched is sent.
The server side needs the example script from the source repository
(website_lan/send_ir.php), which relies on the MQTTv5Client PHP class
(https://github.com/evilbunny2008/MQTTv5Client) to talk to the smart
socket and IR blaster over MQTT. Without it, soundbar wake won't work.