Skip to content
SuperDragonXD edited this page Apr 2, 2026 · 2 revisions

This glossary defines common terms and concepts you'll encounter while working with the Lawnicons project.

  • Adaptive Icon
    • An Android icon format introduced in Android 8.0 (Oreo) that allows launchers to display icons in various shapes (like circles, squircles, or squares) consistently. Adaptive icons consist of a foreground and a background layer. Lawnicons generates these.
  • Appfilter (appfilter.xml)
    • An XML file standard in icon packs. It maps specific Android application components (like an app's main activity) to icon drawable resources within the icon pack. This tells launchers which icon to use for which app. The master appfilter.xml is in app/assets/, and a processed version is placed in app/src/runtime/res/xml/.
  • appfilter_diff.xml
    • An XML file generated by the svg-processor module. It contains only the icon entries that are new in the current build compared to the previous tagged release. This file powers the "New Icons" screen in the app.
  • Component Name
    • A unique identifier for an Android application component (Activity, Service, BroadcastReceiver, ContentProvider). For icons, it usually refers to an app's main launchable Activity, formatted as package.name/package.name.ActivityName (for example, com.android.settings/.Settings).
  • Composable
    • A function in Jetpack Compose, annotated with @Composable, that describes a piece of UI. Composables are the building blocks of the UI in Lawnicons.
  • @ContributesBinding
    • A Metro annotation that automatically generates a binding from an implementation class to its interface within a given scope (for example, @ContributesBinding(LawniconsScope::class)). Used on repository implementations to wire them to their interface without a separate module.
  • @ContributesIntoMap
    • A Metro annotation that contributes an entry into a multi-bound map. Used together with @ViewModelKey on ViewModel classes so that MetroViewModelFactory can look them up by KClass.
  • @ContributesTo
    • A Metro annotation applied to module interfaces, indicating that their @Provides functions should be installed in the specified @DependencyGraph scope (for example, @ContributesTo(LawniconsScope::class) on GithubApiModule).
  • Data Layer
    • The architectural layer in Lawnicons responsible for providing and managing data. It includes Repositories and data models, found under the data/ package.
  • @DependencyGraph
    • A Metro annotation that declares the root dependency graph. In Lawnicons, LawniconsGraph is annotated with @DependencyGraph(LawniconsScope::class) and serves as the entry point for all DI wiring.
  • Dependency Injection (DI)
    • A design pattern where an object's dependencies are provided to it externally rather than the object creating them itself. Lawnicons uses Metro for DI.
  • Drawable Name
    • The resource name of an icon within the Lawnicons pack as it exists in the res/drawable/ directory (for example, email_foreground or email for the adaptive icon wrapper).
  • ICON_PICKER_INTENT_ACTION (com.novalauncher.THEME)
    • A specific Android Intent action that Lawnicons' MainActivity responds to. It allows other apps (typically launchers) to open Lawnicons as an icon picker, so users can select a Lawnicons icon for a specific app.
  • Jetpack Compose
    • Android's modern toolkit for building native UIs using a declarative Kotlin-based approach. Lawnicons' UI is built entirely with Compose.
  • Kotlin Flow
    • A type from Kotlin Coroutines used for handling asynchronous streams of data. Repositories in Lawnicons often expose data to ViewModels using StateFlow (a type of Flow).
  • LawniconsGraph
    • The application-wide Metro dependency graph, annotated with @DependencyGraph(LawniconsScope::class). It is created in LawniconsApplication via createGraphFactory<LawniconsGraph.Factory>() and provides the MetroViewModelFactory used to create ViewModels.
  • LawniconsScope
    • An abstract class used as the scope marker for Metro DI in Lawnicons. All @SingleIn, @ContributesBinding, @ContributesTo, and @ContributesIntoMap annotations reference this scope.
  • Material You
    • Google's latest design language, introduced with Android 12. It emphasizes dynamic color theming based on the user's wallpaper. Lawnicons aims to provide icons that align with this aesthetic.
  • MAD (Modern Android Development)
    • Google's recommended set of tools, libraries (like Jetpack Compose, Metro, Kotlin), and architectural practices for building high-quality Android apps.
  • Metro
    • A compile-time dependency injection framework by Zac Sweers, used in Lawnicons. It uses annotations like @DependencyGraph, @ContributesBinding, @ContributesTo, @ContributesIntoMap, @Provides, and @SingleIn to wire dependencies. See the Metro documentation.
  • MetroViewModelFactory
    • The factory class that creates ViewModels using maps populated by Metro's @ContributesIntoMap. MetroViewModelFactoryImpl is provided via LawniconsGraph and distributed through the LocalMetroViewModelFactory composition local.
  • Module (Gradle Module)
    • A discrete unit of buildable code within a Gradle project. Lawnicons has two main modules: app (the Android application) and svg-processor (a build-time utility).
  • Navigation3
    • The navigation framework used in Lawnicons (androidx.navigation3). It uses typed NavKey route objects, NavBackStack, NavDisplay, and entryProvider to manage screen transitions. Lawnicons wraps this in a custom NavigationState + Navigator pattern.
  • NavKey
    • A typed route object in Navigation3. Lawnicons defines route objects such as Home, About, NewIcons, IconRequest, Contributors, Acknowledgements, and DebugMenu that implement NavKey.
  • Repository Pattern
    • An architectural pattern that abstracts data sources. Repositories provide a clean API for ViewModels to access data without knowing its origin.
  • Retrofit
    • A type-safe HTTP client for Android and Java, used in Lawnicons for making network requests to APIs (like GitHub and the Lawnchair website).
  • @SingleIn
    • A Metro scoping annotation. @SingleIn(LawniconsScope::class) ensures a dependency is created once and shared across the application for the lifetime of the graph.
  • SVG (Scalable Vector Graphics)
    • An XML-based vector image format. Source icons for Lawnicons are provided as SVGs and are then processed into Android Vector Drawables.
  • svg-processor
    • A Gradle module in the Lawnicons project responsible for converting source SVG files into Android Vector Drawables and generating necessary XML configuration files for the icon pack.
  • Themed Icon
    • An icon that adapts its appearance (primarily its colors) based on the system's current theme, especially Material You dynamic colors. Lawnicons specializes in providing these.
  • UI Layer
    • The architectural layer responsible for presenting information to the user and handling user input. In Lawnicons, this is built with Jetpack Compose.
  • Vector Drawable (Android)
    • An XML-based vector graphic format used in Android. Unlike raster images (like PNGs), vector drawables can scale without loss of quality. The svg-processor converts SVGs into this format.
  • ViewModel Layer
    • The architectural layer that manages UI-related state and handles business logic. It acts as a bridge between the UI and Data layers. ViewModels are co-located with their screens under ui/destination/<feature>/.
  • @ViewModelKey
    • A Metro annotation used together with @ContributesIntoMap on ViewModel classes. It registers the ViewModel in the multi-bound map so that MetroViewModelFactory can look it up by its KClass.

Clone this wiki locally