Docs: add icon pack docs
This commit is contained in:
parent
6f313face7
commit
b4d7aa16af
@ -1,2 +1,2 @@
|
||||
label: External APIs
|
||||
position: 2
|
||||
position: 2
|
||||
5
docs/docs/developer-guide/integrations/_category_.yml
Normal file
5
docs/docs/developer-guide/integrations/_category_.yml
Normal file
@ -0,0 +1,5 @@
|
||||
label: Integrations
|
||||
link:
|
||||
type: generated-index
|
||||
title: Integrations
|
||||
description: In this chapter you will learn how external apps can integrate with Kvaesitso.
|
||||
142
docs/docs/developer-guide/integrations/icon-packs.md
Normal file
142
docs/docs/developer-guide/integrations/icon-packs.md
Normal file
@ -0,0 +1,142 @@
|
||||
# Icon Packs
|
||||
|
||||
Kvaesitso has built-in support for the ADW launcher icon pack format (the format that is nowadays
|
||||
used by virtually all icon packs and supported by all major custom launchers).
|
||||
|
||||
## Get started
|
||||
|
||||
### Android Manifest
|
||||
|
||||
In order to be recognized as an icon pack, your app must declare an activity with at least one of
|
||||
the following intent filters in your `AndroidManifest.xml`:
|
||||
|
||||
```xml
|
||||
|
||||
<activity android:name="[...]">
|
||||
<intent-filter>
|
||||
<action android:name="org.adw.ActivityStarter.THEMES" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="com.novalauncher.THEME" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<!-- Themed icons; only add this if your icon pack supports themed icons -->
|
||||
<action android:name="app.lawnchair.icons.THEMED_ICON" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
```
|
||||
|
||||
### Appfilter
|
||||
|
||||
Icons are mapped to apps using a file called `appfilter.xml`. This file must be located in one of
|
||||
these locations:
|
||||
|
||||
- `res/xml/appfilter.xml` (recommended)
|
||||
- `res/raw/appfilter.xml`
|
||||
- `assets/appfilter.xml`
|
||||
|
||||
The file has the following structure:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- icons are added here -->
|
||||
</resources>
|
||||
```
|
||||
|
||||
## Add icons
|
||||
|
||||
Icons are added to the `appfilter.xml` file using the `<item>` tag:
|
||||
|
||||
```xml
|
||||
<item component="ComponentInfo{com.android.deskclock/com.android.deskclock.DeskClockTabActivity}"
|
||||
drawable="clock" />
|
||||
```
|
||||
|
||||
- `component` is the component name of the target activity. The short form is also supported if the
|
||||
class' package name starts with the app's package
|
||||
name: `ComponentInfo{com.android.deskclock/.DeskClockTabActivity}`
|
||||
- `drawable` is the name of the icon drawable which must be located in the `res/drawable/` folder
|
||||
(or any of its variants, e.g. `res/drawable-hdpi/`)
|
||||
|
||||
### Autogenerated icons
|
||||
|
||||
The launcher can generate fallback icons for apps that don't have an icon in the icon pack.
|
||||
Fallback icons consist of four parts:
|
||||
|
||||
```xml
|
||||
<resources>
|
||||
<scale factor="1.0" />
|
||||
<iconback img="iconback" />
|
||||
<iconupon img="iconupon" />
|
||||
<iconmask img="iconmask" />
|
||||
</resources>
|
||||
```
|
||||
|
||||
- `scale`: the original icon is scaled by this `factor`
|
||||
- `iconback`: this is drawn behind the original icon
|
||||
- `iconupon`: this is drawn on top of the original icon
|
||||
- `iconmask`: this is used to mask the original icon
|
||||
|
||||
You can provide multiple variants of each part by adding a number to the `img` attribute:
|
||||
|
||||
```xml
|
||||
<iconback img1="iconback" img2="iconback2" />
|
||||
```
|
||||
|
||||
The launcher will then randomly pick one of the variants for each icon.
|
||||
|
||||
|
||||
### Dynamic icons
|
||||
|
||||
|
||||
#### Calendar icons
|
||||
|
||||
Kvaesitso supports Nova
|
||||
launcher's [dynamic calendar icon standard](https://github.com/teslacoil/Example_NovaTheme/blob/master/DynamicCalendarIconAPI.md):
|
||||
|
||||
To your `appfilter.xml` file, add the following:
|
||||
|
||||
```xml
|
||||
<calendar component="ComponentInfo{com.google.android.calendar/com.android.calendar.LaunchActivity}"
|
||||
prefix="calendar_" />
|
||||
```
|
||||
|
||||
`prefix` is the prefix of the icon drawables. You need to provide one drawable for each day of the
|
||||
month (`calendar_1`, `calendar_2`, etc. up to `calendar_31`).
|
||||
|
||||
:::note
|
||||
Single digit days must not be zero-padded (e.g. `calendar_1` is correct but `calendar_01` is not).
|
||||
Make sure all 31 drawables are present, or the launcher will reject the icon.
|
||||
:::
|
||||
|
||||
#### Clock icons
|
||||
|
||||
Dynamic clock icons are not supported yet.
|
||||
|
||||
### Themed icons
|
||||
|
||||
Themed icons are monochrome icons that are tinted to match the theme color of the launcher.
|
||||
|
||||
To declare that your icon pack supports themed icons, add the following intent filter to your
|
||||
`AndroidManifest.xml`:
|
||||
|
||||
```xml
|
||||
<intent-filter>
|
||||
<action android:name="app.lawnchair.icons.THEMED_ICON" />
|
||||
</intent-filter>
|
||||
```
|
||||
|
||||
The launcher will then show a toggle in the icon pack picker which allows the user to enable themed
|
||||
icons.
|
||||
|
||||
Themed icons can be provided in any of the following ways:
|
||||
|
||||
- If the icon is an adaptive icon, the device runs at least Android 13 and the drawable has
|
||||
a `<monochrome>` layer, this icon will be used as the themed icon.
|
||||
- If the icon is an adaptive icon, and it does not have a `<monochrome>` layer or the device runs on
|
||||
Android 12 or lower, the foreground layer will be used.
|
||||
- If the icon is not an adaptive icon, the entire icon will be used.
|
||||
|
||||
In any case, the icon will be tinted using the theme color and the background will be set to a solid
|
||||
color.
|
||||
Loading…
x
Reference in New Issue
Block a user