mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 07:16:54 +00:00
Improve Lawnchair documentation (#4370)
This commit is contained in:
@@ -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
|
||||
|
||||
99
CONTRIBUTING.md
Normal file
99
CONTRIBUTING.md
Normal 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 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:
|
||||
|
||||
<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 |
|
||||
58
README.md
58
README.md
@@ -6,48 +6,40 @@
|
||||
[](https://t.me/lccommunity)
|
||||
[](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 — 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).
|
||||
|
||||
32
SECURITY.md
32
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.
|
||||
|
||||
@@ -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}\""
|
||||
|
||||
@@ -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
BIN
docs/device-frame.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 257 KiB |
BIN
docs/lawnchair-round.webp
Normal file
BIN
docs/lawnchair-round.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
25
docs/version-dark.svg
Normal file
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
25
docs/version-light.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 70 KiB |
@@ -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`
|
||||
|
||||
@@ -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 |
|
||||
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user