Open SourceMIT License

Infinite 2D home screen for Android

Pan. Zoom. Organize apps as a world, not a grid. Canvas Launcher treats your home screen as a continuous coordinate space with no page boundaries.

12Gradle Modules
30+Automated Tests
6Languages
100%Kotlin

Everything you need in a launcher

A fully-featured, production-ready launcher with powerful canvas interactions and intelligent app organization.

Infinite Canvas

One-finger pan, two-finger pinch-to-zoom, world/screen coordinate transforms with viewport culling and minimap overlay.

Drag & Drop Apps

Long-press to drag apps anywhere on the canvas. Positions are persisted in world coordinates for seamless organization.

Smart Search

Full-text search with ranked matches and quick launch. Fallback to web search directly from the launcher.

Edit Mode

Add brush strokes, sticky notes, text objects, and frames. Move, resize, delete with multi-select support.

Smart Layouts

Choose from Spiral, Rectangle, Circle, Oval, Smart Auto, or Icon Color grouping with auto-generated labeled frames.

Semantic Grouping

Auto-categorize apps by type: communication, social, media, games, work, finance, and more.

Customizable Themes

System, light, or dark mode with 4 light and 4 dark palettes. Full Material 3 design language.

Multilingual

Available in English, Russian, Spanish, German, French, and Portuguese. Follows system language by default.

Built with modern Android tech

A clean, modular architecture using the latest Android development best practices.

Kotlin100% Kotlin codebase
CoroutinesAsync programming
FlowReactive streams
Jetpack ComposeModern UI toolkit
Material 3Design system
HiltDependency injection
RoomDatabase persistence
DataStorePreferences storage

Clean Multi-Module Architecture

App Layer
  • Activities & Navigation
  • Settings & i18n
  • Launcher/Default Flow
Feature Layer
  • :feature:launcher
  • :feature:canvas
  • :feature:apps
Core Layer
  • database, packages, settings
  • model, ui, common
  • performance

Feature Roadmap

Canvas Launcher is actively developed with a clear vision for the future.

Implemented

  • Infinite canvas launcher base
  • Smart semantic layout presets
  • Icon-color clustering presets
  • Editable canvas objects (brush/notes/text/frames)
  • Multi-select edit operations
  • App dragging with persisted coordinates
  • Search and quick launch
  • 6 languages + system locale

Planned

  • Widgets on canvas
  • Folders and advanced icon customization
  • Backup/export-import of canvas state
  • Performance benchmark automation
  • Optional cloud sync

Module Overview

:appActivities, launcher flow, settings, i18n
:domainUse cases, contracts, layout strategies
:feature:launcherMain UI state, tools, edit orchestration
:feature:canvasCanvas rendering, gestures, drag interaction
:feature:appsRoom-backed app store implementation
:core:databaseRoom DB, DAO, entities, migrations
:core:packagesPackageManager, icon cache, event bus
:core:performanceTransforms, culling, minimap projection
:core:settingsDataStore preferences and mappers
:core:modelShared domain models
:core:uiTheme and design primitives
:core:commonResult/coroutines primitives

Get started in minutes

Clone the repo, build, and install. Set Canvas Launcher as your default home app.

1. Clone & Build

$ git clone github.com/khnychenkoav/CanvasLauncher
$ ./gradlew :app:assembleDebug

2. Install APK

Install the debug APK on your device or emulator. Requires Android SDK 26+ (Android 8.0).

3. Set as Home

Open Canvas Launcher and follow the onboarding to set it as your default home app.

Ways to Contribute

Canvas interaction polish and gesture UX
Accessibility and localization improvements
Test coverage for edge-case scenarios
Settings UX and discoverability