diff --git a/.github/PULL_REQUEST_TEMPLATE/icon_addition.md b/.github/PULL_REQUEST_TEMPLATE/icon_addition.md index 96e084139..e81dab26e 100644 --- a/.github/PULL_REQUEST_TEMPLATE/icon_addition.md +++ b/.github/PULL_REQUEST_TEMPLATE/icon_addition.md @@ -17,7 +17,3 @@ App Name (`com.package.app` → `drawable.svg`) App Name (`com.package.app`) App Name (`com.package.app`) - -## Contributor's checklist -- [ ] I followed [the Lawnicons guidelines](https://github.com/LawnchairLauncher/lawnicons/blob/develop/CONTRIBUTING.md) and will make changes if someone suggests. I will also make sure that Lawnicons builds correctly. - diff --git a/.github/icon_checklist.md b/.github/icon_checklist.md index 2162f28c1..420645be5 100644 --- a/.github/icon_checklist.md +++ b/.github/icon_checklist.md @@ -1,6 +1,8 @@ Thanks for your contribution! -While waiting for a review from our team, you can do a self-review to ensure that your icons are suitable for Lawnicons. We try to do the review within 7 days. +We hope that you followed [the Lawnicons guidelines](https://github.com/LawnchairLauncher/lawnicons/blob/develop/CONTRIBUTING.md) and made sure that Lawnicons is built correctly. + +While waiting for a brief review from our team, you can do a self-review to ensure that your icons are suitable for Lawnicons. ### Canvas and sizes 1. Canvas: `192×192px`. diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 000000000..83c6d1220 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,17 @@ +changelog: + categories: + - title: 📱 New Icons & Links + labels: + - icons + - title: 🧹 Code + labels: + - code + exclude: + labels: + - dependencies + - title: 🧑‍💻 Dependencies + labels: + - dependencies + - title: 💬 Localization + labels: + - locale diff --git a/.github/workflows/build_debug_apk.yml b/.github/workflows/build_debug_apk.yml index 23f185694..611c982ff 100644 --- a/.github/workflows/build_debug_apk.yml +++ b/.github/workflows/build_debug_apk.yml @@ -5,7 +5,27 @@ on: push: branches: - develop + paths-ignore: + - '**.md' + - 'LICENSE' + - '.idea/**' + - 'docs/**' + - '.github/ISSUE_TEMPLATE/**' + - '.gitignore' + - '.gitattributes' + - '.github/labeler.yml' + - '.github/release.yml' pull_request: + paths-ignore: + - '**.md' + - 'LICENSE' + - '.idea/**' + - 'docs/**' + - '.github/ISSUE_TEMPLATE/**' + - '.gitignore' + - '.gitattributes' + - '.github/labeler.yml' + - '.github/release.yml' jobs: build-debug-apk: @@ -85,3 +105,27 @@ jobs: ARTIFACT_DIRECTORY: artifacts/debug-apk GITHUB_REF: ${{ github.ref }} DISCORD_CI_BOT_TOKEN: ${{ secrets.DISCORD_CI_BOT_TOKEN}} + + nightly-release: + runs-on: ubuntu-latest + if: github.repository_owner == 'LawnchairLauncher' && github.event_name == 'push' + needs: build-debug-apk + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: Debug APK + path: artifacts/debug-apk + - name: Export APK_NAME for later use + run: echo "APK_NAME=Lawnicons.Debug.${{ github.ref_name }}.Nightly-CI_${{ github.run_number }}-$(echo ${{ github.sha }} | cut -c1-7).apk" >> $GITHUB_ENV + - name: Rename .apk file + run: | + mv artifacts/debug-apk/*.apk $APK_NAME + - name: Delete release if exist then create release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release view "nightly" && gh release delete "nightly" -y --cleanup-tag + gh release create "nightly" "$APK_NAME" -p -t "Lawnicons Nightly" --generate-notes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 82dceff8b..baf8ac3ee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -178,7 +178,7 @@ Please check [the icon tool guide](/docs/icontool_guide.md) for more information **For Windows**: ```console - adb shell dumpsys window | find "mCurrentFocus" + adb shell dumpsys window | findstr "mCurrentFocus" ``` ![](docs/images/contributing-image-3.png) diff --git a/README.md b/README.md index 5942602f4..1e845234b 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,54 @@ # Lawnicons -[![Build debug APK](https://github.com/LawnchairLauncher/lawnicons/actions/workflows/build_debug_apk.yml/badge.svg)](https://github.com/LawnchairLauncher/lawnicons/actions/workflows/build_debug_apk.yml) -[![Build release APK](https://github.com/LawnchairLauncher/lawnicons/actions/workflows/build_release_apk.yml/badge.svg)](https://github.com/LawnchairLauncher/lawnicons/actions/workflows/build_release_apk.yml) -[![Discord](https://img.shields.io/discord/803299970169700402?label=server&logo=discord)](https://discord.gg/lawnchair-803299970169700402) -[![License is Apache 2](https://img.shields.io/github/license/LawnchairLauncher/lawnicons)](LICENSE) +
+ + GitHub License + + + GitHub Actions Workflow Status + + + GitHub Actions Workflow Status + + + Discord + -**Lawnicons** is an icon pack developed by the Lawnchair team and supported by our community. -Originally an addon for Lawnchair 12 Alpha 5 and above to implement themed icons, it can now be used on many launchers. +
-Lawnicons is best used [on Lawnchair 12.1 or Lawnchair 14 Beta 2](https://github.com/LawnchairLauncher/lawnchair/releases). You can enable themed icons on Lawnchair by going to `Home Settings → General → Icon Style → Themed Icons → "Home screen" or "Home screen and App Drawer"`. +
+ +Lawnicons is an icon pack developed by the Lawnchair team and supported by our community. Originally an addon for Lawnchair 12 Alpha 5 and above to implement themed icons, it can now be used on many launchers. + +Lawnicons is best used [on the latest version of Lawnchair](https://github.com/LawnchairLauncher/lawnchair/releases). You can enable themed icons on Lawnchair by going to `Home Settings → General → Icon Style` and choosing the desired option. ## Download -See [the Releases section](https://github.com/LawnchairLauncher/lawnicons/releases) for the latest stable build. For development builds with new icons, go to [nightly.link](https://nightly.link/LawnchairLauncher/lawnicons/workflows/build_debug_apk/develop/Debug%20APK). + +

+ + Get it on Google Play + + + Get it on IzzyOnDroid + + + Get it on Obtainium + + + Get it on GitHub + +

+ +Due to different package names, Lawnicons on the Play Store will install as a different app from other sources. + +**Development builds:** [nightly.link](https://nightly.link/LawnchairLauncher/lawnicons/workflows/build_debug_apk/develop/Debug%20APK) • [Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22app.lawnchair.lawnicons%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FLawnchairLauncher%2Flawnicons%22%2C%22author%22%3A%22LawnchairLauncher%22%2C%22name%22%3A%22Lawnicons%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Atrue%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22Lawnicons%20Nightly%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Afalse%2C%5C%22releaseDateAsVersion%5C%22%3Atrue%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22Lawnicons%20Nightly%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D) • [GitHub](https://github.com/LawnchairLauncher/lawnicons/releases/tag/nightly) ## Contributing Please see [the Lawnicons guidelines](CONTRIBUTING.md) for information on contributing icons or code, it will save you time. -Android developers can find tasks [in our issues](https://github.com/LawnchairLauncher/lawnicons/issues). -Anyone who is interested in making icons can fulfill [the popular icon requests](https://docs.google.com/spreadsheets/d/1AXc9EDXA6udZeGROtB5nuABjM33VluGY_V24tIzHaKc/edit?resourcekey#gid=651079103). - -Need help? [Join us on Discord](https://discord.gg/3x8qNWxgGZ). +**Contribute:** [Popular icon requests](https://docs.google.com/spreadsheets/d/1AXc9EDXA6udZeGROtB5nuABjM33VluGY_V24tIzHaKc/edit?resourcekey#gid=651079103) • [Development tasks](https://github.com/LawnchairLauncher/lawnicons/issues) ## Requesting icons -Please use **Lawnicons 2.10+**: `Open Lawnicons → Tap "Request icons" → Submit the response`. +`Open Lawnicons 2.10+ → Tap "Request icons" → Submit the response` You can also use [the icon request form](https://forms.gle/xt7sJhgWEasuo9TR9). If a previously added icon has a design change, create [an issue](https://github.com/LawnchairLauncher/lawnicons/issues/new?assignees=&labels=icon+update&projects=&template=icon_rebrand.yml). - - - diff --git a/app/assets/appfilter.xml b/app/assets/appfilter.xml index 632add8d0..2c2832230 100644 --- a/app/assets/appfilter.xml +++ b/app/assets/appfilter.xml @@ -50,6 +50,7 @@ + @@ -338,6 +339,7 @@ + @@ -823,6 +825,7 @@ + @@ -912,6 +915,7 @@ + @@ -1352,6 +1356,7 @@ + @@ -1376,6 +1381,7 @@ + @@ -1468,6 +1474,7 @@ + @@ -1914,6 +1921,7 @@ + @@ -2028,6 +2036,7 @@ + @@ -2358,6 +2367,7 @@ + @@ -2696,6 +2706,7 @@ + @@ -3037,6 +3048,7 @@ + @@ -3095,6 +3107,7 @@ + @@ -3676,6 +3689,7 @@ + @@ -3878,6 +3892,7 @@ + @@ -3934,6 +3949,7 @@ + @@ -3982,7 +3998,8 @@ - + + @@ -4175,7 +4192,8 @@ - + + @@ -4193,6 +4211,7 @@ + @@ -4271,6 +4290,7 @@ + @@ -4465,6 +4485,7 @@ + @@ -4524,6 +4545,7 @@ + @@ -4909,6 +4931,7 @@ + @@ -5539,6 +5562,7 @@ + @@ -5854,6 +5878,7 @@ + @@ -5971,6 +5996,7 @@ + @@ -7202,6 +7228,7 @@ + @@ -7444,6 +7471,8 @@ + + @@ -7859,6 +7888,7 @@ + @@ -8083,6 +8113,7 @@ + @@ -8202,6 +8233,7 @@ + @@ -9205,6 +9237,7 @@ + @@ -9820,6 +9853,7 @@ + @@ -10225,6 +10259,7 @@ + @@ -10353,6 +10388,7 @@ + @@ -10464,12 +10500,12 @@ - + @@ -11270,6 +11306,7 @@ + @@ -12610,6 +12647,7 @@ + @@ -12632,6 +12670,7 @@ + @@ -12648,9 +12687,11 @@ + + @@ -12846,6 +12887,7 @@ + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4485db657..9160a0a1a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,6 @@ import app.cash.licensee.LicenseeTask import com.android.build.gradle.internal.api.ApkVariantOutputImpl import com.android.build.gradle.tasks.MergeResources -import java.io.FileInputStream import java.util.Locale import java.util.Properties @@ -42,24 +41,23 @@ android { vectorDrawables.useSupportLibrary = true } - val keystorePropertiesFile = rootProject.file("keystore.properties") - val releaseSigning = if (keystorePropertiesFile.exists()) { + androidResources { + generateLocaleConfig = true + } + + val releaseSigning = try { val keystoreProperties = Properties() - keystoreProperties.load(FileInputStream(keystorePropertiesFile)) + keystoreProperties.load(rootProject.file("keystore.properties").inputStream()) signingConfigs.create("release") { keyAlias = keystoreProperties["keyAlias"].toString() keyPassword = keystoreProperties["keyPassword"].toString() storeFile = rootProject.file(keystoreProperties["storeFile"].toString()) storePassword = keystoreProperties["storePassword"].toString() } - } else { + } catch (ignored: Exception) { signingConfigs["debug"] } - androidResources { - generateLocaleConfig = true - } - buildTypes { all { signingConfig = releaseSigning @@ -145,7 +143,7 @@ dependencies { implementation("androidx.core:core-ktx:1.13.1") implementation("androidx.core:core-splashscreen:1.0.1") implementation("androidx.activity:activity-compose:1.9.2") - implementation(platform("androidx.compose:compose-bom:2024.09.01")) + implementation(platform("androidx.compose:compose-bom:2024.09.02")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.ui:ui-util") @@ -154,10 +152,10 @@ dependencies { implementation("androidx.compose.material:material-icons-core-android") implementation("androidx.compose.material3:material3") implementation("androidx.compose.material3:material3-window-size-class") - implementation("androidx.navigation:navigation-compose:2.8.0") - implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.5") + implementation("androidx.navigation:navigation-compose:2.8.1") + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.6") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") val hiltVersion = "2.52" implementation("com.google.dagger:hilt-android:$hiltVersion") diff --git a/build.gradle.kts b/build.gradle.kts index 6522fc065..d7c3c2bb4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,7 @@ import com.diffplug.gradle.spotless.SpotlessExtension import com.diffplug.spotless.extra.wtp.EclipseWtpFormatterStep plugins { - id("com.android.application") version "8.6.0" apply false + id("com.android.application") version "8.6.1" apply false id("org.jetbrains.kotlin.android") version "2.0.20" apply false id("org.jetbrains.kotlin.plugin.compose") version "2.0.20" id("org.jetbrains.kotlin.plugin.serialization") version "2.0.20" apply false diff --git a/docs/images/badge-github.png b/docs/images/badge-github.png new file mode 100644 index 000000000..5129ff38b Binary files /dev/null and b/docs/images/badge-github.png differ diff --git a/docs/images/badge-google-play.png b/docs/images/badge-google-play.png new file mode 100644 index 000000000..1d17b6aa5 Binary files /dev/null and b/docs/images/badge-google-play.png differ diff --git a/docs/images/badge-izzyondroid.png b/docs/images/badge-izzyondroid.png new file mode 100644 index 000000000..c97854de0 Binary files /dev/null and b/docs/images/badge-izzyondroid.png differ diff --git a/docs/images/badge-obtainium.png b/docs/images/badge-obtainium.png new file mode 100644 index 000000000..c5cee26fc Binary files /dev/null and b/docs/images/badge-obtainium.png differ diff --git a/svg-processor/build.gradle.kts b/svg-processor/build.gradle.kts index 83eaaf8b7..1778d5ae5 100644 --- a/svg-processor/build.gradle.kts +++ b/svg-processor/build.gradle.kts @@ -8,7 +8,7 @@ application { } dependencies { - implementation("com.android.tools:sdk-common:31.6.0") + implementation("com.android.tools:sdk-common:31.6.1") implementation("org.dom4j:dom4j:2.1.4") - implementation("commons-io:commons-io:2.16.1") + implementation("commons-io:commons-io:2.17.0") } diff --git a/svgs/_150x_duplicate_file_remover_pro.svg b/svgs/_150x_duplicate_file_remover_pro.svg new file mode 100644 index 000000000..0b1255b86 --- /dev/null +++ b/svgs/_150x_duplicate_file_remover_pro.svg @@ -0,0 +1,3 @@ + + + diff --git a/svgs/al_dawaa.svg b/svgs/al_dawaa.svg new file mode 100644 index 000000000..5f59848e5 --- /dev/null +++ b/svgs/al_dawaa.svg @@ -0,0 +1 @@ + diff --git a/svgs/al_romansiah.svg b/svgs/al_romansiah.svg new file mode 100644 index 000000000..ac2615944 --- /dev/null +++ b/svgs/al_romansiah.svg @@ -0,0 +1,3 @@ + + + diff --git a/svgs/alinmapay.svg b/svgs/alinmapay.svg new file mode 100644 index 000000000..0307feb30 --- /dev/null +++ b/svgs/alinmapay.svg @@ -0,0 +1 @@ + diff --git a/svgs/almanea.svg b/svgs/almanea.svg index a7a497599..87e2ef729 100644 --- a/svgs/almanea.svg +++ b/svgs/almanea.svg @@ -1,2207 +1,3 @@ - - - - + + + diff --git a/svgs/barq.svg b/svgs/barq.svg new file mode 100644 index 000000000..3d1251360 --- /dev/null +++ b/svgs/barq.svg @@ -0,0 +1,3 @@ + + + diff --git a/svgs/bcare.svg b/svgs/bcare.svg new file mode 100644 index 000000000..453c87756 --- /dev/null +++ b/svgs/bcare.svg @@ -0,0 +1 @@ + diff --git a/svgs/core.svg b/svgs/core.svg new file mode 100644 index 000000000..1519a26d2 --- /dev/null +++ b/svgs/core.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/svgs/easter_eggs.svg b/svgs/easter_eggs.svg index e35eddd50..968bcd0d4 100644 --- a/svgs/easter_eggs.svg +++ b/svgs/easter_eggs.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/svgs/entrust_identity.svg b/svgs/entrust_identity.svg new file mode 100644 index 000000000..2d7d0593f --- /dev/null +++ b/svgs/entrust_identity.svg @@ -0,0 +1 @@ + diff --git a/svgs/geogebra_3d_calculator.svg b/svgs/geogebra_3d_calculator.svg new file mode 100644 index 000000000..355f5776d --- /dev/null +++ b/svgs/geogebra_3d_calculator.svg @@ -0,0 +1 @@ + diff --git a/svgs/godot.svg b/svgs/godot_editor_4.svg similarity index 100% rename from svgs/godot.svg rename to svgs/godot_editor_4.svg diff --git a/svgs/govbr.svg b/svgs/gov_br.svg similarity index 100% rename from svgs/govbr.svg rename to svgs/gov_br.svg diff --git a/svgs/hungerbox_cafe.svg b/svgs/hungerbox_cafe.svg new file mode 100644 index 000000000..34af88a0b --- /dev/null +++ b/svgs/hungerbox_cafe.svg @@ -0,0 +1 @@ + diff --git a/svgs/hungerstation.svg b/svgs/hungerstation.svg index 35e95367b..b7ee39ea1 100644 --- a/svgs/hungerstation.svg +++ b/svgs/hungerstation.svg @@ -1,2208 +1,3 @@ - - - - + + + diff --git a/svgs/mada_pay.svg b/svgs/mada_pay.svg index 6c4ca6285..5d02437bc 100644 --- a/svgs/mada_pay.svg +++ b/svgs/mada_pay.svg @@ -1,2207 +1,4 @@ - - - - + + + + diff --git a/svgs/obtainium.svg b/svgs/obtainium.svg index 2f1a47bfb..9adf14b1a 100644 --- a/svgs/obtainium.svg +++ b/svgs/obtainium.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/svgs/one_zero.svg b/svgs/one_zero.svg new file mode 100644 index 000000000..dca1ae1ea --- /dev/null +++ b/svgs/one_zero.svg @@ -0,0 +1 @@ + diff --git a/svgs/t2.svg b/svgs/t2.svg new file mode 100644 index 000000000..ae7dfd3e2 --- /dev/null +++ b/svgs/t2.svg @@ -0,0 +1 @@ + \ No newline at end of file