Welcome to the Lawnicons contributing guide!
In case of unclear wording, ask us in our Discord. If you find errors or want to suggest improvements in the guide itself, create an issue.
Code-related contributions are welcome. Significant changes to the UI should be discussed in our Discord. Generally, we want to keep things clean and simple.
Visit the Lawnicons developer wiki for developer information regarding Lawnicons.
You can contribute icons, fulfill icon requests, add missing app IDs, refine existing icons, clean up dead apps, and remove duplicates.
- Create an icon (*.svg) following the design guidelines. #
- Find the app ID to link with your icon. #
- On the Lawnicons repo page, click
Fork, then clone it locally with GitHub Desktop. - Add the icon and the app ID to your local copy and push the changes. #
- Create a pull request and wait for review. #
Create icons in a vector graphics editor and save them as SVG. We recommend Figma because it has easier quality control. You can use Advanced SVG Export to save optimized SVGs in Figma.
Design guidelines • Figma • Advanced SVG Export
Every app has a unique app ID, which consists of a package and an activity separated by /. App IDs allow you to link icons and apps.
App ID: app.lawnchair.lawnicons/app.lawnchair.lawnicons.MainActivity
Package: app.lawnchair.lawnicons
Activity: app.lawnchair.lawnicons.MainActivity
Install and open Lawnicons → Tap ⋮ → Tap Request icons → Select icons → Tap Copy App IDs in the split button's menu and save it wherever it's convenient.
- Connect your Android device or emulator to your laptop/desktop PC that has
adbinstalled. - Open the app whose details you want to inspect (e.g. Telegram).
- Open a new Command Prompt or Terminal window and input
adb devices. - Finally, type the below-given command to get the information about the currently open app.
Mac or Linux
adb shell dumpsys window | grep 'mCurrentFocus'Windows
adb shell dumpsys window | findstr "mCurrentFocus"Icon: lawnicons.svg
App name: Lawnicons
App ID: app.lawnchair.lawnicons/app.lawnchair.lawnicons.MainActivity
Let's imagine that you have an icon in SVG format, an app name and an app ID.
- Fork the Lawnicons repository.
- Clone the fork via GitHub Desktop.
- Open it with a file explorer.
- Сopy
lawnicons.svgto thesvgs/folder. - Open
app/assets/appfilter.xmland add a new line using the same template as the existing lines. - Save changes and push it to your fork via GitHub Desktop.
- Open your fork in a web browser and create a PR:
Contribute → Open pull request. - Make sure that the build went without errors and common issues are fixed, then await review.
GitHub Desktop • How to find app IDs
- The review bot gives feedback on most of the common issues. The contributor is expected to fix them.
- Once the bot has nothing left to flag, a maintainer reviews the remaining issues (5 icons at a time) or fixes minor things directly.
- Icons get added to Lawnicons when all issues are resolved.
PRs with long-ignored issues are closed automatically.
Reviews keep icon quality high and filter out rushed attempts. This saves time for everyone involved. To review icons, you should be able to create at least 20 random icons flawlessly in one go. That demonstrates solid knowledge of the design guidelines.
Please keep your repository up to date if you plan to create more than one PR, otherwise you may drag the commit history through all your PRs. There are two main ways to do this:
- Open
Terminalon the local copy of your repository via GitHub Desktop. Rungit reset --hard upstream/develop. Overwrite your repository with your local copy via GitHub Desktop:Force push origin. - Or delete your repository and start the contribution process from scratch.
If you plan to contribute icons regularly, it's worth learning icontool.py.