Inspiration

Having a baby inspired me to create CheatCode Launcher.

These days, there's an app for everything. My wife and I have apps for logging feeds and sleep, monitoring the baby webcam, controlling the AC, adjusting the nursery lights, and even for controlling the crib. I found myself having to access all of these multiple times a day, all in a row. I suddenly had a lot more apps that I needed quick access to, but my minimal launcher at the time had limited space. I had seen some launchers that let you assign a few gestures to an icon, but it still felt limiting and I wondered if a whole launcher could be built around this idea.

CheatCode Launcher started out as a quick experiment, but the more I used it, the faster it got.

What it does

CheatCode Launcher replaces traditional icon-based home screens with a single gesture entry area that accepts combinations of swipes and taps to form "cheat codes". Up to 4 gestures can be combined for a code, allowing over 700 combinations.

Users can assign a code to apps, shortcuts, system actions, Tasker tasks, collections, media controls, timers, and more.

After Shortcuts can surface useful follow-up actions after closing a specific app and returning to the home screen. This feature was actually inspired by the bedtime routine for my baby. For example, when I close the app that controls my motion crib, shortcuts pop up to go to my feed logging app, baby camera, and Hue to control the lights.

Collections let users assign a single code to open a group of related apps or actions.

Context-aware themes can automatically change the launcher's appearance and behavior based on things like time, day, charging state, battery level, media playback, notifications or other device conditions.

Users can also customize fonts, colors, layouts, opacity, labels, and other parts of the experience, then save, import, and share their themes.

There is still a searchable app drawer when you need it, but the idea is that the apps and actions you use most gradually stop requiring search at all.

How I built it

CheatCode Launcher is a native Android application built with Kotlin and Jetpack Compose.

Building an actual Android home-screen replacement meant working with parts of Android that normal applications rarely have to deal with: launcher intents, app and shortcut discovery, widgets, system actions, accessibility features, notifications, usage data, device configuration changes, and the differences between phones, tablets, foldables, and different Android manufacturers.

The gesture system recognizes sequences of directional swipes and taps and resolves them against the user's configured codes while providing a live preview of the action being entered.

A large part of the architecture also revolves around making configuration portable. Themes can contain much more than colors, so the launcher needs to save and restore layouts, typography, gesture presentation, contextual rules, and other settings while safely handling device-specific information.

RevenueCat handles the lifetime Pro unlock, allowing me to keep the free version genuinely useful while putting expanded customization and power-user features behind a simple one-time purchase.

Challenges I ran into

A big challenge I ran into was figuring out how to tie everything together around the idea of using cheat codes to do everything. I wanted it to feel good to use while being fast and powerful. Everything is built around this idea.

Another huge challenge is the many different Android devices available and their varied form factors. Things that worked well on a Pixel might not work at all on a Samsung device, for example. Even something as simple as trying to set the system wallpaper can be a huge pain point.

Accomplishments that I'm proud of

I'm most proud that the original idea I had actually works. I've been using CheatCode Launcher daily for a while now and I have close to 40 codes memorized and 0 icons on my home screen.

I don't have many users yet, but I have some who are very enthusiastic about the idea, which makes me very proud.

What I learned

I've learned a ton about how Android works and how to do things that I'd never done before.

I've also learned that minimal interfaces can require surprisingly complex systems underneath them. Making the home screen look simple is easy; making it simple while still supporting customization, different screen sizes, system integrations, accessibility features, widgets, shortcuts, and automation is much harder.

Most importantly, I've learned a lot from putting the app in front of actual users. Features that seemed obvious to me weren't always discoverable, while things I initially considered minor turned out to matter a lot to other people.

What's next for CheatCode Launcher

Next up is just to keep expanding the idea and exploring what else can be done using only cheat codes.

I've recently added widget support and accessibility-driven gestures, along with customization that changes for tablets and foldables.

I plan on implementing weather, along with more context-based rules around it for automatic theme switching.

Built With

Share this project:

Updates

posted an update —

Added a few new features today:

• Rename apps from long-press. Set a launcher-only name; search still finds the system name. • More labels — 15 on the home screen, 8 on the gesture box. • Auto-switch themes in low light or a well-lit space using the light sensor.

Log in or sign up for Devpost to join the conversation.

posted an update —

Added the following in 1.6:

• App icons — apply an installed icon pack, or change one app from its long-press sheet. The pack saves with themes; per-app overrides stay on this device. • Tasker values on labels — Tasker or MacroDroid can push text onto gesture-box and home-screen labels. Slot values stay on this device. • Apply a theme from Tasker — apply a saved look from Tasker or MacroDroid. Auto-switch pauses until you resume it.

Log in or sign up for Devpost to join the conversation.

Submission history