Spotlight for macOS. KRunner for KDE. Now, finally, one search bar to rule your whole phone.
Type anything. Open apps, do math, convert units, search the web, find files, message a contact, flip your flashlight — all from one floating panel that appears over any app, on any screen, in under a second.
Download · Features · Screenshots · Setup · FAQ
Your phone has 200 apps on it. Finding the one you want means unlocking, swiping through home screens, or digging through an app drawer. Need to do a quick calculation? Open a calculator app. Convert kilometers to miles? Open a browser, type a query, wait for ads to load. Want to flip on the flashlight? Swipe down, find the tile, tap it.
Every one of these is a tiny task that takes too many steps.
Quick Launch puts a single, fast search bar on top of everything you do. Trigger it from almost anywhere — a floating bubble, a widget, a Quick Settings tile, a voice command, or even the same gesture that opens Google Assistant — type a few characters, and get exactly what you meant:
┌─────────────────────────────────────┐
│ 🔍 Search apps, actions, web… ✕ │
├─────────────────────────────────────┤
│ Apps │
│ 📷 Camera │
│ 🌐 Chrome │
│ │
│ Calculator │
│ = (5 + 3) * 7 56 │
│ │
│ 🌐 Search web for "…" │
└─────────────────────────────────────┘
Type it. Tap it. Gone. Back to what you were doing — now with the thing you needed.
| ⚡ Instant app search | Fuzzy, typo-tolerant matching across every installed app — ranks by what you actually use, remembers your pins |
| 🧮 A real calculator, inline | (5+3)*7, 25% of 80, 10 % 3 — answered as you type, no separate app, no eval() hacks |
| 📐 Offline unit conversion | 10 km to miles, 5kg in lb, 100 c to f — length, mass, temperature, volume, time, storage, speed — zero network calls |
| 🌐 Web search, your engine | Google, Bing, DuckDuckGo, or Brave — opens your actual browser, no in-app tracking |
| 📁 Find files by name | Documents, photos, videos, music, archives, APKs — on-device MediaStore search, nothing leaves your phone |
| 🔦 Flashlight, by typing "torch" | Because sometimes the fastest UI is just words |
| 👤 Contacts, one tap to call or text | Optional and permission-gated — off until you turn it on |
| ⚙️ Jump straight to system settings | settings wifi, settings bluetooth — skip the maze of menus |
| 📋 Smart clipboard suggestions | Offers to copy or search whatever's on your clipboard, read only while the palette is open |
| 🕘 Recents & pins | An empty search bar is never really empty — your last actions and favorite apps are right there |
- Assistant gesture — set Quick Launch as your Android digital assistant and the exact gestures that open Google Assistant (long-press home, swipe from a bottom corner, long-press power) open Quick Launch instead. One-tap system dialog, no digging through menus.
- Floating bubble — an Assistive-Touch-style dot that follows you, snaps to the edge, survives a reboot.
- Home-screen widget — bolt icon for the palette, mic icon for voice search.
- Voice search — speak instead of type, works on any device, zero setup.
- Share sheet — share text or a link from any app straight into Quick Launch.
- Quick Settings tile, persistent notification, launcher long-press shortcuts, and an in-app fallback if you'd rather not grant the overlay permission at all.
This isn't a privacy policy promise. It's a build-level guarantee:
- No
INTERNETpermission in the manifest. The app is structurally incapable of sending your data anywhere. The only "network" action is your device's browser opening a URL you explicitly chose. - No analytics. No ads. No trackers. No SDKs phoning home.
- Clipboard is read only while the palette is open and focused — never in the background, per Android 10+'s own restrictions.
- File search reads names only — file contents are never opened, scanned, or logged.
- Recents and pins live entirely in on-device storage. Uninstall the app, and it's like it was never there.
If you've ever hesitated before granting a random launcher app "storage" and "contacts" and wondered where that data ends up — with Quick Launch, the honest answer is: nowhere. It can't. It doesn't have the permission to try.
| Quick Launch | Default launcher search | Web search apps | |
|---|---|---|---|
| Works over any app, not just the home screen | ✅ | ❌ | ❌ |
| Inline calculator & unit conversion | ✅ | Sometimes | ❌ |
| Offline, no network required for core features | ✅ | ❌ | ❌ |
| No ads, ever | ✅ | Depends | ❌ |
No INTERNET permission |
✅ | ❌ | ❌ |
| Assistant-gesture integration | ✅ | ❌ | ❌ |
| Open source | ✅ | ❌ | ❌ |
Add your own screenshots or a short GIF here — a floating-palette demo sells this app faster than any paragraph can.
docs/
├── screenshot-palette.png
├── screenshot-settings.png
└── demo.gif
- Install and open Quick Launch.
- Accept the one-tap "Set as assistant?" dialog (shown once) — this is the fastest way to get the Google-Assistant-style gesture trigger. Change it anytime in Settings → Triggers.
- Tap Open Quick Launch now and grant Display over other apps so the palette can float above whatever you're doing.
- Trigger it however you like: the assistant gesture, the floating bubble, the widget, voice search, the notification, the Quick Settings tile, or a launcher shortcut.
- (Optional) Grant Photos & files access to unlock on-device file search.
That's it — no account, no sign-up, no onboarding survey.
- Android Studio Koala (2024.1) or newer — or any IDE with JDK 17/21
- JDK 17+ (the Gradle wrapper fetches Gradle 8.10.2 automatically)
- Android SDK platform 35 + build-tools 35
- An Android 7.0+ (API 24) device or emulator
# Clone it
git clone https://github.com/<your-username>/quick-launch.git
cd quick-launch
# Build a debug APK
./gradlew :app:assembleDebug
# → app/build/outputs/apk/debug/app-debug.apk
# Run the test suite (88 tests: ranking, calculator, conversion,
# command parsing, search engine, settings/view-model logic)
./gradlew :app:testDebugUnitTest
# Install straight to a connected device
adb install -r app/build/outputs/apk/debug/app-debug.apkOr in Android Studio: File → Open… → select the project folder → let it sync → Run.
Built the way a modular launcher should be — every feature is a pluggable, independently testable search provider:
com.example.quicklaunch
├── overlay/ WindowManager-based floating panel, Compose UI in a service window
├── search/ SearchEngine — parallel providers, per-keystroke cancellation, ranking
├── providers/ apps · calculator · unit conversion · web · files · contacts ·
│ settings shortcuts · clipboard · flashlight
├── triggers/ 9 independent entry points (bubble, widget, voice, assistant
│ gesture, share target, tile, notification, shortcuts)
├── data/ DataStore-backed settings & recents, corruption-safe by default
└── ui/ Material 3 (system/light/dark), compact mode, animation toggle
Engineering highlights:
- Hand-written recursive-descent expression parser — no
eval(), ever - Deterministic, unit-tested fuzzy-matching ranker
- Every coroutine scope guarded with a
CoroutineExceptionHandler; DataStore reads self-heal from corruption - App icon LRU cache, lazy package index invalidated only by install/uninstall broadcasts
- Every keystroke's search is cancelled before the next begins — stale results can never race ahead of fresh ones
Curious how it all fits together, or want to add your own provider? The codebase is small enough to read in an afternoon and modular enough to extend in an evening.
| Permission | What it's for | If you say no |
|---|---|---|
SYSTEM_ALERT_WINDOW |
Floats the palette over other apps | Palette still works inside the app itself |
POST_NOTIFICATIONS |
The optional persistent "Open Quick Launch" notification | That one trigger is disabled; everything else works |
RECORD_AUDIO |
Required by Android for any app registering as a digital assistant | Assistant-gesture trigger unavailable; every other trigger still works |
READ_CONTACTS |
Powers the optional contacts search/call/text provider | Contacts provider silently stays off |
| Media permissions (13+) / storage (≤12) | On-device file search by name | File search finds nothing beyond the app's own files |
RECEIVE_BOOT_COMPLETED |
Restores the floating bubble after a restart | Bubble comes back next time you open the app |
There is no INTERNET permission to opt out of, because it's never requested in the first place.
Does this replace my launcher? No — Quick Launch layers on top of whatever launcher you already use. It doesn't touch your home screen.
Will it slow my phone down? The palette is a lightweight overlay window that only exists while you're using it. No background service runs when it's closed (aside from an optional bubble/notification you can turn off).
Does it need an internet connection? Only if you tap a web-search result, which opens your browser. Every other feature — calculator, conversions, app search, file search, contacts, settings shortcuts — works fully offline.
Is my data safe? It never leaves your device — there's no permission in the app that would even let it.
Can I contribute? Yes, please. See Contributing below.
Pull requests are welcome — new search providers, ranking improvements, translations, bug fixes. Please open an issue first for anything larger than a small fix, so we can talk through the approach together.
MIT — see LICENSE for the full text. Use it, fork it, ship your own version.
If Quick Launch saves you a few seconds a day, give it a ⭐ — it helps other people find it too.