From 37df77d7edef46b11daf9d7f9ff2f4efd0585e3a Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Mon, 15 May 2023 13:14:04 +0200 Subject: [PATCH] Update themed icons docs page --- .../user-guide/customization/themed-icons.md | 48 +++++++++++++++--- docs/static/img/themed-icon-pack.png | Bin 0 -> 16747 bytes 2 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 docs/static/img/themed-icon-pack.png diff --git a/docs/docs/user-guide/customization/themed-icons.md b/docs/docs/user-guide/customization/themed-icons.md index 3dc2df76..57b0796c 100644 --- a/docs/docs/user-guide/customization/themed-icons.md +++ b/docs/docs/user-guide/customization/themed-icons.md @@ -5,20 +5,52 @@ Themed Icons is a feature that adapt app icons to the launcher's color scheme: ![Themed icons off](/img/themed-icons-off.png) ![Themed icons on](/img/themed-icons-on.png) -Themed icons can be enabled in Settings > Appearance > Themed Icons. +Themed icons can be enabled for supported apps in Settings > Grid & icons > Themed Icons. -## Themed icons on pre Android 13 +:::note -It was first introduced by Google on Android 12. Unfortunately, Google did not provide an official API for third party app developers to support themed icons in their apps until Android 13. Instead they hardcoded all the themed icons into the Pixel Launcher. This is the reason why only Google icons could be themed on Android 12 Pixel devices. +If you are an app developer, you can support themed icons by adding a `` drawable to +your app icon. For more information refer to +[the official documentation](https://developer.android.com/develop/ui/views/launch/icon_design_adaptive#add_your_adaptive_icon_to_your_app). -In order to not violate any trademarks, Kvaesitso does not ship any third party icons. However, it can extract these themed icons from the Pixel launcher if it is installed on the device. The issue remains, that only Google icons are supported. Fortunately, the Lawnchair developers started a community effort to bring themed icon support to all apps for their launcher: [Lawnicons](https://github.com/LawnchairLauncher/lawnicons). +::: -Kvaesitso supports themed icons through Lawnicons natively. All you need to do is to install the latest Lawnicons APK and enable Themed icons in the launcher settings (Settings > Appearance > Themed Icons). Kvaesitso will detect that Lawnicons is installed and extract the icons automatically. +While themed icons were originally introduced in Android 13, support has been backported to Android +8.0-12. +Note however, that some apps (especially preinstalled system apps) may not support themed icons on +older Android versions. -## Themed icons on Android 13+ +## Themed icon packs -In Android 13, a [new API](https://developer.android.com/develop/ui/views/launch/icon_design_adaptive#add_your_adaptive_icon_to_your_app) has been added for app developers to support themed icons in their app. It remains to be seen, how well developers adopt this API so you might still want to install Lawnicons (as described [here](#themed-icons-on-pre-android-13)). +Some icon packs, notably [Lawnicons](https://github.com/LawnchairLauncher/lawnicons) +and [Arcticons](https://github.com/Donnnno/Arcticons), have support +for themed icons. This is indicated by a "Dynamic colors" badge in the icon pack selection dialog. +After you have selected an icon pack with support for themed icons, you can enable themed icons for +that pack using the toggle button that appears in the icon pack preference: + +![Themed icon pack](/img/themed-icon-pack.png) + +:::note + +If you are an icon pack developer, you can indicate that your icon pack supports themed icons by +adding +the following intent filter: + +```xml + + + + + +``` + +::: ## Auto generated themed icons -There is also an option to force themed icons to all icons (Settings > Appearance > Force themed icons). This scales the foreground layer of an icon down, adds a monochrome color filter and replaces the background with a solid color. Using this option is generally not recommended because icons may become illegible, but it might work well in combination with certain monochrome icon packs. You can also apply auto generated themed icons on a per-app basis by using the [customize menu](per-item-customization). +There is also an option to force themed icons to all icons (Settings > Grid & icons > Force themed +icons). This scales the foreground layer of an icon down, adds a monochrome color filter and +replaces the background with a solid color. Using this option is generally not recommended because +icons may become illegible, but it might work well in combination with certain monochrome icon +packs. You can also apply auto generated themed icons on a per-app basis by using +the [customize menu](per-item-customization). diff --git a/docs/static/img/themed-icon-pack.png b/docs/static/img/themed-icon-pack.png new file mode 100644 index 0000000000000000000000000000000000000000..91b3aaab548ee41f47841b259f909444a42a43b1 GIT binary patch literal 16747 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 JspQMR{}25fcl7`O literal 0 HcmV?d00001