diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 76222fbadb..1d4a064a32 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an +standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..cc6d1dddb7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,99 @@ +# Lawnchair Contributing Guidelines + + + + + + + +First and foremost, welcome to the **Lawnchair** Contributing Guidelines! + +### đŸ’« Bug reports & feature requests + +For bug reports, please describe the bug in detail to the best of your ability +and steps on how to reproduce it. If applicable, attach log files. + +For feature requests, please describe the feature you'd like to see added to Lawnchair. +If applicable, attach log files. + +Please make sure to be civil during discussion of your contribution (refer to the [Code of Conduct](CODE_OF_CONDUCT.md)) + +### 🌐 Translation + +For translation, visit [Lawnchair on Crowdin](https://lawnchair.crowdin.com) and follow these tips: + +- When using quotation marks, insert the symbols specific to the target language, as listed in this [this summary table](https://en.wikipedia.org/wiki/Quotation_mark#Summary_table); +- Lawnchair uses title case for some English UI text while other languages do not use title case; opt for sentence case instead; +- Some English terminology may have not have commonly-used equivalents in other languages. In such cases, use short descriptive phrases—for example, the equivalent of _bottom row_ for _dock_; +- Some languages (e.g. French) have variations of words depending if it's masculine or feminine (gender-specific); we recommend opting for gender-neutral words instead. + +### đŸ§‘â€đŸ’» Code + +> [!NOTE] +> For Lawnchair 9 to 13, see the branches with the `9-` to `13-` prefixes respectively. + +For code, it's highly recommended that you use [Android Studio](https://developer.android.com/studio), +know [Java](https://www.java.com) or preferably [Kotlin](https://kotlinlang.org/), and [Git](https://git-scm.com/). + +> [!IMPORTANT] +> You can use Git to clone the repository; ensure that you include the project’s submodules using the `recursive` flag: +> +> ``` +> git clone --recursive https://github.com/LawnchairLauncher/lawnchair.git +> ``` + +To build **Lawnchair**, select the `lawnWithQuickstepGithubDebug` build type. +Should you face errors relating to the `iconloaderlib` and `searchuilib` projects, +run `git submodule update --init --recursive`. + +Here are some contribution tips to help you get started: + +- Always make sure that you're up-to-date with **Lawnchair** by setting your base branch to `14-dev`. +- Make sure your code is logical and well-formatted. If using Kotlin, see [“Coding conventions” in the Kotlin documentation](https://kotlinlang.org/docs/coding-conventions.html); +- [The `lawnchair` package](https://github.com/LawnchairLauncher/lawnchair/tree/14-dev/lawnchair) houses Lawnchair’s own code, whereas [the `src` package](https://github.com/LawnchairLauncher/lawnchair/tree/14-dev/src) includes a clone of the Launcher3 codebase with modifications. Generally, place new files in the former, keeping changes to the latter to a minimum. + +#### Additional documentation + +- Lawnchair Quickstep Compat Lib ([README.md](compatLib/README.md)) +- Lawnchair Preferences Components ([README.md](lawnchair/src/app/lawnchair/ui/preferences/components/README.md)) +- SystemUI ViewCapture ([README.md](systemUIViewCapture/README.md)) +- SystemUI Common ([README.md](systemUICommon/README.md)) +- Prebuilt Library ([README.md](prebuilts/libs/README.md)) + +#### Versioning scheme + +As of [#4361](https://github.com/LawnchairLauncher/lawnchair/pull/4361), +Lawnchair’s version code is separated by four parts: + +

+ + + + + +

+ +1. Android's major version +2. Android's minor version +3. Lawnchair's development status +4. Lawnchair's development version + +##### Android's major & minor versions + +These make up the first two parts of the version code. +For example: Android 11 will be `11_00_XX_XX` while Android 12.1 will be `12_01_XX_XX`. + +##### Development status & version + +The third part of the version code indicates Lawnchair's stability status, while the fourth part indicates the version number. + +For example, Alpha 4's version code will be `XX_XX_01_04`. + +See the table below detailing the release type: + +| Status | Stage | +| ----------------- | ----- | +| Alpha | 01 | +| Beta | 02 | +| Release Candidate | 03 | +| Release | 04 | diff --git a/README.md b/README.md index f5ca983368..168f831756 100644 --- a/README.md +++ b/README.md @@ -6,48 +6,40 @@ [![Telegram](https://img.shields.io/endpoint?url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Flccommunity)](https://t.me/lccommunity) [![Discord](https://img.shields.io/discord/803299970169700402?label=server&logo=discord)](https://discord.gg/3x8qNWxgGZ) - + + + + + Google Pixel running Lawnchair Launcher with green wallpaper + + Lawnchair is a free, open-source home app for Android. Taking Launcher3 — Android’s default home app — as a starting point, it ports Pixel Launcher features and introduces rich options for customization. -This branch houses the codebase of Lawnchair 14, currently in development and based on Launcher3 from Android 14. For Lawnchair 9 to 13, see the branches with the `9-` to `13-` prefixes, respectively. +This branch houses the codebase of Lawnchair 14, which is currently in beta and is based on Launcher3 from Android 14. For Lawnchair 9 to 13, see the branches with the `9-` to `13-` prefixes, respectively. -## Contribute code +## Features -Whether you’ve fixed a bug or introduced a new feature, we welcome pull requests! (If you’d like to make a larger change and check with us first, you can do so via [Lawnchair’s Telegram group chat](https://t.me/lawnchairci).) To help translate Lawnchair 14 instead, please see “[Translate](#translate).” +- Pixel Launcher-like UI with Material You design +- At a Glance widget with Smartspacer support +- QuickSwitch support +- Global Search support +- Icons, fonts, and colors customization +- And more! -You can use Git to clone this repository: +## Download -``` -git clone --recursive https://github.com/LawnchairLauncher/lawnchair.git -``` +See the [Releases](https://github.com/LawnchairLauncher/lawnchair/releases) section for the latest +beta build. For development builds with new icons, use the nightly builds. -To build the app, select the `lawnWithQuickstepDebug` build type. Should you face errors relating to the `iconloaderlib` and `searchuilib` projects, run `git submodule update --init --recursive`. +## Contributing -Here are a few contribution tips: - -- [The `lawnchair` package](https://github.com/LawnchairLauncher/lawnchair/tree/14-dev/lawnchair) houses Lawnchair’s own code, whereas [the `src` package](https://github.com/LawnchairLauncher/lawnchair/tree/14-dev/src) includes a clone of the Launcher3 codebase with modifications. Generally, place new files in the former, keeping changes to the latter to a minimum. - -- You can use either Java or, preferably, Kotlin. - -- Make sure your code is logical and well formatted. If using Kotlin, see [“Coding conventions” in the Kotlin documentation](https://kotlinlang.org/docs/coding-conventions.html). - -- Set `14-dev` as the base branch for pull requests. - -## Translate - -You can help translate Lawnchair 14 [on Crowdin](https://lawnchair.crowdin.com/lawnchair). Here are a few tips: - -- When using quotation marks, insert the symbols specific to the target language, as listed in [this table](https://en.wikipedia.org/wiki/Quotation_mark#Summary_table). - -- Lawnchair uses title case for some English UI text. Title case isn’t used in other languages; opt for sentence case instead. - -- Some English terminology may have no commonly used equivalents in other languages. In such cases, use short descriptive phrases—for example, the equivalent of _bottom row_ for _dock_. +Please visit the [Lawnchair Contributing Guidelines](CONTRIBUTING.md) for information and tips on contributing to Lawnchair. ## Quick links -- [News](https://t.me/lawnchairci) -- [Lawnchair on Twitter](https://twitter.com/lawnchairapp) -- [Website](https://lawnchair.app) -- [_XDA_ thread](https://forum.xda-developers.com/t/lawnchair-customizable-pixel-launcher.3627137/) +- [News](https://t.me/lawnchairci) +- [Lawnchair on Twitter](https://twitter.com/lawnchairapp) +- [Website](https://lawnchair.app) +- [_XDA_ thread](https://forum.xda-developers.com/t/lawnchair-customizable-pixel-launcher.3627137/) -You can view all our links [in the Lawnchair Wiki](https://github.com/LawnchairLauncher/lawnchair/wiki). +You can view all our links in the [Lawnchair Wiki](https://github.com/LawnchairLauncher/lawnchair/wiki). diff --git a/SECURITY.md b/SECURITY.md index 7d8f728d1d..73bfef146a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,23 +1,29 @@ # Security Policy ## Supported Versions -> [!NOTE] -> Lawnchair v2 (Play Store version) is **unsupported**. Use the newer alphas instead. See [this FAQ page](https://lawnchair.app/faq#do-you-still-support-the-play-store-version) for additional information. + +> [!WARNING] +> Lawnchair v2 (Play Store version) is **unsupported**. Use the newer alphas instead. +> See [this FAQ page](https://lawnchair.app/faq#do-you-still-support-the-play-store-version) for additional information. The latest version of Lawnchair is the only supported version. -| Version | Supported | -| ------- | ------------------ | -| 14 | :white_check_mark: | -| 13 | :x: | -| 12.1 | :x: | -| 12 | :x: | -| 11 | :x: | -| v2 | :x: | -| v1 | :x: | + +| Version | Supported | +| -------------- | ------------------ | +| 14 | :white_check_mark: | +| 13 | :x: | +| 12.1 | :x: | +| 12 | :x: | +| 11 | :x: | +| Older (legacy) | :x: | ## Reporting Security issues -We appreciate your efforts to responsibly disclose your findings and will make every effort to acknowledge your contributions. -To report an issue, please contact a developer (can be found in the about page of the app) in Telegram or Discord and state your security vulnerability starting with the words "SECURITY". +We appreciate your efforts to responsibly disclose your findings and will make every effort to +acknowledge your contributions. + +To report an issue, please file a [security advisory](https://github.com/LawnchairLauncher/lawnchair/security/advisories/new) +or contact a developer (can be found in the about page of the app) in Telegram or Discord and +state your security vulnerability starting with the words "**SECURITY**". We'll endeavour to respond quickly, and will keep you updated throughout the process. diff --git a/build.gradle b/build.gradle index 4b208faaf5..3b55c24b19 100644 --- a/build.gradle +++ b/build.gradle @@ -136,7 +136,7 @@ android { namespace "com.android.launcher3" defaultConfig { // Lawnchair Launcher 14.0 Beta 2 - // Android 14, Minor 0, Lawnchair Stage 2 (Beta), Update No 2 + // See CONTRIBUTING.md#versioning-scheme versionCode 14_00_02_02 versionName "${versionDisplayName}" buildConfigField "String", "VERSION_DISPLAY_NAME", "\"${versionDisplayName}\"" diff --git a/compatLib/README.md b/compatLib/README.md index d282b8c088..d7e55b3a3b 100644 --- a/compatLib/README.md +++ b/compatLib/README.md @@ -1 +1,14 @@ -# Lawnchair Quickstep Compat Lib \ No newline at end of file +# Lawnchair Quickstep Compat Library + +The `compatLib` library helps integrate Lawnchair with QuickSwitch while ensuring backward-compatibility with older Android versions. + +Each subdirectory of the `compatLib`, denoted by a letter (e.g., `compatLibVQ` for Android 10), +refers to the compatibility code for that specific Android version. + +| Library | Android version | +|-------------|-----------------| +| compatLibVQ | 10 | +| compatLibVR | 11 | +| compatLibVS | 12 | +| compatLibVT | 13 | +| compatLibVU | 14 | diff --git a/docs/device-frame.png b/docs/device-frame.png new file mode 100644 index 0000000000..4324eb6865 Binary files /dev/null and b/docs/device-frame.png differ diff --git a/docs/lawnchair-round.webp b/docs/lawnchair-round.webp new file mode 100644 index 0000000000..2257bb22b4 Binary files /dev/null and b/docs/lawnchair-round.webp differ diff --git a/docs/version-dark.svg b/docs/version-dark.svg new file mode 100644 index 0000000000..caa99a1f06 --- /dev/null +++ b/docs/version-dark.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/version-light.svg b/docs/version-light.svg new file mode 100644 index 0000000000..04fe9aa948 --- /dev/null +++ b/docs/version-light.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/README.md b/lawnchair/src/app/lawnchair/ui/preferences/components/README.md index 503c339373..96ff6d52e4 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/components/README.md +++ b/lawnchair/src/app/lawnchair/ui/preferences/components/README.md @@ -1,4 +1,5 @@ -# About the `components` directory +# About + The `components` directory should be organized into the following: * For components for a specific UI that require many files, add it in a subdirectory. Example: `colorpreference` diff --git a/prebuilts/libs/README.md b/prebuilts/libs/README.md index 4a33203515..c521dd04ee 100644 --- a/prebuilts/libs/README.md +++ b/prebuilts/libs/README.md @@ -1,10 +1,19 @@ -# Lawnchair prebuilt JARs +# Lawnchair Prebuilt JARs -Launcher3 has some dependencies on internal AOSP modules. To build Lawnchair, you have to build AOSP and obtain these JARs. +Launcher3 has some dependencies on internal AOSP modules. +To build Lawnchair, you have to build AOSP and obtain these JARs. -| File | Path | -|------|------| -| framework-14.jar | ./soong/.intermediates/frameworks/base/framework/android_common/turbine-combined/framework.jar | -| framework-statsd.jar | ./soong/.intermediates/packages/modules/StatsD/framework/framework-statsd/android_common_apex30/javac/framework-statsd.jar | -| SystemUI-statsd.jar | ./soong/.intermediates/frameworks/base/packages/SystemUI/shared/SystemUI-statsd/android_common/javac/SystemUI-statsd.jar | -| WindowManager-Shell.jar | ./soong/.intermediates/frameworks/base/libs/WindowManager/Shell/WindowManager-Shell/android_common/javac/WindowManager-Shell.jar +| File | Path | +|-------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| framework-14.jar | ./soong/.intermediates/frameworks/base/framework/android_common/turbine-combined/framework.jar | +| framework-statsd.jar | ./soong/.intermediates/packages/modules/StatsD/framework/framework-statsd/android_common_apex30/javac/framework-statsd.jar | +| SystemUI-statsd.jar | ./soong/.intermediates/frameworks/base/packages/SystemUI/shared/SystemUI-statsd/android_common/javac/SystemUI-statsd.jar | +| WindowManager-Shell.jar | ./soong/.intermediates/frameworks/base/libs/WindowManager/Shell/WindowManager-Shell/android_common/javac/WindowManager-Shell.jar | + + + + diff --git a/systemUICommon/README.md b/systemUICommon/README.md index 1cc5277aa8..e825ce7bf1 100644 --- a/systemUICommon/README.md +++ b/systemUICommon/README.md @@ -1,5 +1,9 @@ # SystemUICommon -`SystemUICommon` is a module within SystemUI that hosts standalone helper libraries. It is intended to be used by other modules, and therefore should not have other SystemUI dependencies to avoid circular dependencies. +`SystemUICommon` is a module within SystemUI that hosts standalone helper libraries. +It is intended to be used by other modules, and therefore should not have other SystemUI dependencies +to avoid circular dependencies. -To maintain the structure of this module, please refrain from adding components at the top level. Instead, add them to specific sub-packages, such as `systemui/common/buffer/`. This will help to keep the module organized and easy to navigate. +To maintain the structure of this module, please refrain from adding components at the top level. +Instead, add them to specific sub-packages, such as `systemui/common/buffer/`. +This will help to keep the module organized and easy to navigate. diff --git a/systemUIViewCapture/README.md b/systemUIViewCapture/README.md index 4a6993f30d..e2834cb22b 100644 --- a/systemUIViewCapture/README.md +++ b/systemUIViewCapture/README.md @@ -1,11 +1,11 @@ -###ViewCapture Library Readme +# ViewCapture Library -ViewCapture.java is extremely performance sensitive. Any changes should be carried out with great caution not to hurt performance. +> [!CAUTION] +> `ViewCapture.java` is **extremely performance sensitive**. +> **Any changes should be carried out with great caution** not to hurt performance. The following measurements should serve as a performance baseline (as of 02.10.2022): - The onDraw() function invocation time in WindowListener within ViewCapture is measured with System.nanoTime(). The following scenario was measured: 1. Capturing the notification shade window root view on a freshly rebooted bluejay device (2 notifications present) -> avg. time = 204237ns (0.2ms) -