# lawnchairlauncher/lawnchair architecture

> Architecture diagram of the GitHub repository lawnchairlauncher/lawnchair, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lawnchairlauncher/lawnchair
- Repository: https://github.com/lawnchairlauncher/lawnchair

## Overview

Lawnchair is an Android home app built on Launcher3, combining a home-screen launcher with Pixel-inspired features and customization. The principal workflow begins with a user interacting with the launcher and ends in home-screen content or an invoked action. Global search, widget picking, theming, icon/font customization, At a Glance, and Recents integration are distinct product branches. The tree and README identify these capabilities, but most implementation excerpts were not supplied; links between their modules are therefore limited to the documented workflow rather than asserted internal calls.

Main entry points: [`lawnchair/src/app/lawnchair/LawnchairLauncher.kt`](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/LawnchairLauncher.kt) (Launcher Activity), [`lawnchair/src/app/lawnchair/search/LawnchairSearchUiDelegate.kt`](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/LawnchairSearchUiDelegate.kt) (Home Search UI), [`lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt`](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt) (User Preferences), [`lawnchair/src/app/lawnchair/LawnchairLayoutFactory.kt`](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/LawnchairLayoutFactory.kt) (Workspace & Layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launcher["Home Experience"]
  node_launcher_activity["Launcher Activity"]
  node_workspace["Workspace &amp; Layout"]
  node_gestures["Gesture Actions"]
  node_widget_picker["Widget Picker"]
  node_launcher_db[("Launcher Data<br/>[AppDatabase.kt]")]
end

subgraph group_search["Search"]
  node_search_ui["Home Search UI"]
  node_search_algorithms["Search Algorithms"]
  node_search_providers["Search Providers"]
  node_qsb_providers["Web Search Choices"]
  node_search_results["Search Results"]
end

subgraph group_custom["Customization"]
  node_icon_theme["Icon Themes"]
  node_icon_packs["Icon Packs<br/>[IconPack.kt]"]
  node_fonts["Font Management<br/>[FontManager.kt]"]
  node_preferences["User Preferences"]
end

subgraph group_integrations["Platform Features"]
  node_smartspace["At a Glance"]
  node_recents["QuickSwitch &amp; Recents"]
  node_compat["Android Compatibility"]
end

node_user(("Android User"))

node_user -->|"opens and interacts"| node_launcher_activity
node_launcher_activity -->|"shows home screen"| node_workspace
node_launcher_activity -->|"offers global search"| node_search_ui
node_search_ui -->|"queries"| node_search_algorithms
node_search_algorithms -->|"searches contacts"| node_search_providers
node_search_ui -->|"selects web search"| node_qsb_providers
node_search_ui -->|"presents results"| node_search_results
node_launcher_activity -->|"offers widget selection"| node_widget_picker
node_launcher_activity -->|"handles gestures"| node_gestures
node_launcher_activity -->|"exposes customization"| node_preferences
node_preferences -->|"configures appearance"| node_icon_theme
node_preferences -->|"configures icons"| node_icon_packs
node_preferences -->|"configures fonts"| node_fonts
node_launcher_activity -->|"hosts At a Glance"| node_smartspace
node_launcher_activity -->|"integrates Recents"| node_recents
node_recents -->|"uses platform compatibility"| node_compat
node_workspace -->|"persists launcher data"| node_launcher_db

click node_launcher_activity "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/LawnchairLauncher.kt"
click node_workspace "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/LawnchairLayoutFactory.kt"
click node_gestures "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/gestures/GestureController.kt"
click node_widget_picker "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/compose/features/com/android/launcher3/widgetpicker/WidgetPickerComposeWrapperImpl.kt"
click node_search_ui "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/LawnchairSearchUiDelegate.kt"
click node_search_algorithms "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt"
click node_search_providers "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/algorithms/engine/provider/ContactsSearchProvider.kt"
click node_qsb_providers "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt"
click node_search_results "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt"
click node_icon_theme "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/icons/LawnchairThemeManager.kt"
click node_icon_packs "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/icons/iconpack/IconPack.kt"
click node_fonts "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/font/FontManager.kt"
click node_preferences "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt"
click node_smartspace "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/nexuslauncher/SmartSpaceHostView.kt"
click node_recents "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/overview/TaskOverlayFactoryImpl.kt"
click node_compat "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/compatLib/src/main/java/app/lawnchair/compatlib/QuickstepCompatFactory.java"
click node_launcher_db "https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/data/AppDatabase.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_launcher_activity,node_workspace,node_gestures,node_widget_picker,node_launcher_db,node_user toneBlue
class node_search_ui,node_search_algorithms,node_search_providers,node_qsb_providers,node_search_results toneAmber
class node_icon_theme,node_icon_packs,node_fonts,node_preferences toneMint
class node_smartspace,node_recents,node_compat toneRose
```

## Components

### Home Experience

- [Launcher Activity](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/LawnchairLauncher.kt): `lawnchair/src/app/lawnchair/LawnchairLauncher.kt`
- [Workspace & Layout](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/LawnchairLayoutFactory.kt): `lawnchair/src/app/lawnchair/LawnchairLayoutFactory.kt`
- [Gesture Actions](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/gestures/GestureController.kt): `lawnchair/src/app/lawnchair/gestures/GestureController.kt`
- [Widget Picker](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/compose/features/com/android/launcher3/widgetpicker/WidgetPickerComposeWrapperImpl.kt): `compose/features/com/android/launcher3/widgetpicker/WidgetPickerComposeWrapperImpl.kt`
- [Launcher Data](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/data/AppDatabase.kt): `lawnchair/src/app/lawnchair/data/AppDatabase.kt`

### Search

- [Home Search UI](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/LawnchairSearchUiDelegate.kt): `lawnchair/src/app/lawnchair/search/LawnchairSearchUiDelegate.kt`
- [Search Algorithms](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt): `lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt`
- [Search Providers](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/search/algorithms/engine/provider/ContactsSearchProvider.kt): `lawnchair/src/app/lawnchair/search/algorithms/engine/provider/ContactsSearchProvider.kt`
- [Web Search Choices](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt): `lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt`
- [Search Results](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt): `lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt`

### Customization

- [Icon Themes](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/icons/LawnchairThemeManager.kt): `lawnchair/src/app/lawnchair/icons/LawnchairThemeManager.kt`
- [Icon Packs](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/icons/iconpack/IconPack.kt): `lawnchair/src/app/lawnchair/icons/iconpack/IconPack.kt`
- [Font Management](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/font/FontManager.kt): `lawnchair/src/app/lawnchair/font/FontManager.kt`
- [User Preferences](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt): `lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt`

### Platform Features

- [At a Glance](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/nexuslauncher/SmartSpaceHostView.kt): `lawnchair/src/app/lawnchair/nexuslauncher/SmartSpaceHostView.kt`
- [QuickSwitch & Recents](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/lawnchair/src/app/lawnchair/overview/TaskOverlayFactoryImpl.kt): `lawnchair/src/app/lawnchair/overview/TaskOverlayFactoryImpl.kt`
- [Android Compatibility](https://github.com/lawnchairlauncher/lawnchair/blob/16-dev/compatLib/src/main/java/app/lawnchair/compatlib/QuickstepCompatFactory.java): `compatLib/src/main/java/app/lawnchair/compatlib/QuickstepCompatFactory.java`

### Other components

- **Android User**

## Connections

- Android User → Launcher Activity: opens and interacts
- Launcher Activity → Workspace & Layout: shows home screen
- Launcher Activity → Home Search UI: offers global search
- Home Search UI → Search Algorithms: queries
- Search Algorithms → Search Providers: searches contacts
- Home Search UI → Web Search Choices: selects web search
- Home Search UI → Search Results: presents results
- Launcher Activity → Widget Picker: offers widget selection
- Launcher Activity → Gesture Actions: handles gestures
- Launcher Activity → User Preferences: exposes customization
- User Preferences → Icon Themes: configures appearance
- User Preferences → Icon Packs: configures icons
- User Preferences → Font Management: configures fonts
- Launcher Activity → At a Glance: hosts At a Glance
- Launcher Activity → QuickSwitch & Recents: integrates Recents
- QuickSwitch & Recents → Android Compatibility: uses platform compatibility
- Workspace & Layout → Launcher Data: persists launcher data
