Improve Lawnchair documentation (#4370)

This commit is contained in:
JovannMC
2024-05-25 07:37:55 +03:00
committed by GitHub
parent 3ffaf14844
commit 9c1bd7bb0f
14 changed files with 238 additions and 64 deletions

99
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,99 @@
# Lawnchair Contributing Guidelines
<picture>
<!-- Avoid image being clickable with slight workaround --->
<source media="(prefers-color-scheme: dark)" srcset="docs/lawnchair-round.webp" width="100">
<img alt="" src="docs/lawnchair-round.webp" width="100">
</picture>
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 projects 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 Lawnchairs 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),
Lawnchairs version code is separated by four parts:
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/version-dark.svg" width="98%">
<img alt="" src="docs/version-light.svg" width="98%">
<!-- Direct the accessibility reader to read the point below --->
</picture>
</p>
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 |

View File

@@ -6,42 +6,34 @@
[![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)
<img src="https://lawnchair.app/images/lawnchair.webp" width="100" style="border-radius: 50%">
<picture>
<!-- Avoid image being clickable with slight workaround --->
<!-- ❤️ Credit to Raine on the Lawnchair Discord --->
<source media="(prefers-color-scheme: dark)" srcset="docs/device-frame.png" width="250px">
<img alt="Google Pixel running Lawnchair Launcher with green wallpaper" src="docs/device-frame.png" width="250px">
</picture>
Lawnchair is a free, open-source home app for Android. Taking Launcher3 — Androids 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 youve fixed a bug or introduced a new feature, we welcome pull requests! (If youd like to make a larger change and check with us first, you can do so via [Lawnchairs 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 Lawnchairs 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 isnt 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
@@ -50,4 +42,4 @@ You can help translate Lawnchair 14 [on Crowdin](https://lawnchair.crowdin.com/l
- [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).

View File

@@ -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: |
| 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.

View File

@@ -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}\""

View File

@@ -1 +1,14 @@
# Lawnchair Quickstep Compat Lib
# 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 |

BIN
docs/device-frame.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

BIN
docs/lawnchair-round.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

25
docs/version-dark.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 70 KiB

25
docs/version-light.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -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`

View File

@@ -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
| WindowManager-Shell.jar | ./soong/.intermediates/frameworks/base/libs/WindowManager/Shell/WindowManager-Shell/android_common/javac/WindowManager-Shell.jar |
<!-- What about SystemUI Core? -->
<!--
core.jar, core-all.jar, libGoogleFeed.jar, seeder.jar, wmshell-aidls.jar, WindowsManager-Shell.jar
I suspect that these are legacy JARS because I couldn't find usage of it.
-->

View File

@@ -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.

View File

@@ -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)