-
-
Notifications
You must be signed in to change notification settings - Fork 538
Glossary
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.xmlis inapp/assets/, and a processed version is placed inapp/src/runtime/res/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_diff.xml- An XML file generated by the
svg-processormodule. 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.
- An XML file generated by the
-
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).
- 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
-
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.
- A function in Jetpack Compose, annotated with
-
@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.
- A Metro annotation that automatically generates a binding from an implementation class to its interface within a given scope (for example,
-
@ContributesIntoMap- A Metro annotation that contributes an entry into a multi-bound map. Used together with
@ViewModelKeyon ViewModel classes so thatMetroViewModelFactorycan look them up byKClass.
- A Metro annotation that contributes an entry into a multi-bound map. Used together with
-
@ContributesTo- A Metro annotation applied to module interfaces, indicating that their
@Providesfunctions should be installed in the specified@DependencyGraphscope (for example,@ContributesTo(LawniconsScope::class)onGithubApiModule).
- A Metro annotation applied to module interfaces, indicating that their
-
Data Layer
- The architectural layer in Lawnicons responsible for providing and managing data. It includes Repositories and data models, found under the
data/package.
- The architectural layer in Lawnicons responsible for providing and managing data. It includes Repositories and data models, found under the
-
@DependencyGraph- A Metro annotation that declares the root dependency graph. In Lawnicons,
LawniconsGraphis annotated with@DependencyGraph(LawniconsScope::class)and serves as the entry point for all DI wiring.
- A Metro annotation that declares the root dependency graph. In Lawnicons,
-
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_foregroundoremailfor the adaptive icon wrapper).
- The resource name of an icon within the Lawnicons pack as it exists in the
-
ICON_PICKER_INTENT_ACTION (
com.novalauncher.THEME)- A specific Android Intent action that Lawnicons'
MainActivityresponds 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.
- A specific Android Intent action that Lawnicons'
-
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).
- A type from Kotlin Coroutines used for handling asynchronous streams of data. Repositories in Lawnicons often expose data to ViewModels using
-
LawniconsGraph- The application-wide Metro dependency graph, annotated with
@DependencyGraph(LawniconsScope::class). It is created inLawniconsApplicationviacreateGraphFactory<LawniconsGraph.Factory>()and provides theMetroViewModelFactoryused to create ViewModels.
- The application-wide Metro dependency graph, annotated with
-
LawniconsScope- An abstract class used as the scope marker for Metro DI in Lawnicons. All
@SingleIn,@ContributesBinding,@ContributesTo, and@ContributesIntoMapannotations reference this scope.
- An abstract class used as the scope marker for Metro DI in Lawnicons. All
-
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@SingleInto wire dependencies. See the Metro documentation.
- A compile-time dependency injection framework by Zac Sweers, used in Lawnicons. It uses annotations like
-
MetroViewModelFactory- The factory class that creates ViewModels using maps populated by Metro's
@ContributesIntoMap.MetroViewModelFactoryImplis provided viaLawniconsGraphand distributed through theLocalMetroViewModelFactorycomposition local.
- The factory class that creates ViewModels using maps populated by Metro's
-
Module (Gradle Module)
- A discrete unit of buildable code within a Gradle project. Lawnicons has two main modules:
app(the Android application) andsvg-processor(a build-time utility).
- A discrete unit of buildable code within a Gradle project. Lawnicons has two main modules:
-
Navigation3
- The navigation framework used in Lawnicons (
androidx.navigation3). It uses typedNavKeyroute objects,NavBackStack,NavDisplay, andentryProviderto manage screen transitions. Lawnicons wraps this in a customNavigationState+Navigatorpattern.
- The navigation framework used in Lawnicons (
-
NavKey- A typed route object in Navigation3. Lawnicons defines route objects such as
Home,About,NewIcons,IconRequest,Contributors,Acknowledgements, andDebugMenuthat implementNavKey.
- A typed route object in Navigation3. Lawnicons defines route objects such as
-
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.
- A Metro scoping annotation.
-
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-processorconverts SVGs into this format.
- An XML-based vector graphic format used in Android. Unlike raster images (like PNGs), vector drawables can scale without loss of quality. The
-
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>/.
- 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
-
@ViewModelKey- A Metro annotation used together with
@ContributesIntoMapon ViewModel classes. It registers the ViewModel in the multi-bound map so thatMetroViewModelFactorycan look it up by itsKClass.
- A Metro annotation used together with
Found an issue or have a suggestion for this wiki? Please let us know!
- Home
- Getting started
- Architecture
- Key Feature Explanations
- Troubleshooting for Developers
- Project Glossary