Skip to content

Latest commit

Β 

History

History
448 lines (324 loc) Β· 27.1 KB

File metadata and controls

448 lines (324 loc) Β· 27.1 KB

ℹ️ Introduction

Feel free to ask for help on the Discord server if anything is unclear

Hi! I see you've decided to contribute. That's great and there are a few ways to do so:

If you know how to make cool icons but don't know how to work with git, GitHub, and other tech stuff, just read Design Guidelines carefully, make some icons and submit them on our Discord in the icon review channel.

If you don't know how to make icons but you are tech-savvy, you can help improve our CI/CD, add missing ComponentInfos, and do other things. Read Contributing for more info.

If you can handle tech and design stuff, then please read this guide completely.

If you don't know any of that but want to try to make icons, we can help with some advice on our Discord. There are many tools, instructions, and guides for them that it’s impossible to describe everything, so the only thing you can do is search for information on the Internet and try it out.

In short, the suggested skills are:

  • Basic knowledge of git and/or GitHub.
  • Some experience with vector editors.
  • A little bit of a design sense.

We'll be happy to see you participate!

πŸ“ Design Guidelines

General Tips

  • Keep it simple: fewer details and small elements, because the end result will only be a small element on the users screens.
  • Your icon doesn't have to be a 1:1 copy of the original; improve and simplify where possible but at the same time try to maintain a recognizable appearance.
  • Avoid outlining, otherwise the icon will stand out from the general style.
  • Make the icon free-form if you can β€” it helps keep Delta a little more diverse.
  • You can search for app logos online (they're often found on official websites; avoid icons with non-free licenses) and adapt them. If the original icon is too complex, you can use another recognizable element (an item, a faction icon, etc.) β€” this applies to any complex icon, not just games.
  • Be sure to double-check that icons are centered and aligned, sized and exported correctly.

Icon Template

Rules

  • Canvas size must be 192x192px. The template from Resources is correctly configured, just download it and you should be good to go.
  • The icon size does not exceed template dimensions. Check out the visual explanation.
  • If the original logo is simple and doesn't fill most of the template as a shape (circle, square, etc.), keep the logo size between 73–80px.
  • The rounded corners of squares and rectangles have a corner radius of 10px.
  • The template must be properly centered on the canvas.

Tips

  • If you're having trouble deciding whether to use geometric or optical centering, you can discuss it on Discord. Mostly it depends on the icon, but optical centering is usually your choice.
  • If you have any doubts about the design of your icon, you can also discuss it on Discord.

Resources

You can also check out the Figma icon template, if you're using Figma.

Colors

Rules

  • Use $\textcolor{#56595B}{\textsf{⬀}}$ #56595B Davy's grey as default black.

  • Use $\textcolor{#FF837D}{\textsf{⬀}}$ #FF837D Coral pink as default red and $\textcolor{#BA6561}{\textsf{⬀}}$ #BA6561 Fuzzy Wuzzy as default dark red. Shades of red are specifically for shading purposes and complex arrangements (if we're honest it's mostly complex anime / game icons overusing pink).

  • Transparencies can be used as an overlay for additional shading. Please keep the use of them to a minimum. Try to get by with basic colors and greys as much as possible. If you do use transparency, it should be an overlay, never a background (the overall shape of the icon should not contain any semi-transparent areas).

  • Gradients are more acceptable than transparencies, but the usage should still be kept to a sensible minimum (as noted above).

Palette

Greys Basic Reds Skintones

$\textcolor{#FFFFFF}{\textsf{⬀}}$ #FFFFFF White

$\textcolor{#ECECEC}{\textsf{⬀}}$ #ECECEC Isabelline

$\textcolor{#D8D8D8}{\textsf{⬀}}$ #D8D8D8 Timberwolf

$\textcolor{#D2D2D2}{\textsf{⬀}}$ #D2D2D2 Light gray

$\textcolor{#CCCCCC}{\textsf{⬀}}$ #CCCCCC Pastel gray

$\textcolor{#B1B5BD}{\textsf{⬀}}$ #B1B5BD Ash grey

$\textcolor{#A0A5AF}{\textsf{⬀}}$ #A0A5AF Dark gray

$\textcolor{#979797}{\textsf{⬀}}$ #979797 Manatee

$\textcolor{#83868C}{\textsf{⬀}}$ #83868C Taupe gray

$\textcolor{#56595B}{\textsf{⬀}}$ #56595B Davy's grey

$\textcolor{#4A4A4A}{\textsf{⬀}}$ #4A4A4A Quartz

$\textcolor{#000000}{\textsf{⬀}}$ #000000 Black

$\textcolor{#FFD6D4}{\textsf{⬀}}$ #FFD6D4 Pastel pink

$\textcolor{#FF837D}{\textsf{⬀}}$ #FF837D Coral pink

$\textcolor{#BA6561}{\textsf{⬀}}$ #BA6561 Fuzzy Wuzzy

$\textcolor{#D3B69A}{\textsf{⬀}}$ #D3B69A Tan

$\textcolor{#8E6F60}{\textsf{⬀}}$ #8E6F60 Shadow

$\textcolor{#FCECDC}{\textsf{⬀}}$ #FCECDC Antique white

$\textcolor{#F8C18C}{\textsf{⬀}}$ #F8C18C Pale gold

$\textcolor{#FDF5D9}{\textsf{⬀}}$ #FDF5D9 Cornsilk

$\textcolor{#F9DE81}{\textsf{⬀}}$ #F9DE81 Jasmine

$\textcolor{#C39A54}{\textsf{⬀}}$ #C39A54 Camel

$\textcolor{#E0F4E0}{\textsf{⬀}}$ #E0F4E0 Platinum

$\textcolor{#98DC9A}{\textsf{⬀}}$ #98DC9A Granny Smith Apple

$\textcolor{#71A372}{\textsf{⬀}}$ #71A372 Asparagus

$\textcolor{#96DFD3}{\textsf{⬀}}$ #96DFD3 Pale robin egg blue

$\textcolor{#73ADA4}{\textsf{⬀}}$ #73ADA4 Cadet blue

$\textcolor{#9ABEFF}{\textsf{⬀}}$ #9ABEFF Baby blue eyes

$\textcolor{#728DBE}{\textsf{⬀}}$ #728DBE Dark pastel blue

$\textcolor{#54688C}{\textsf{⬀}}$ #54688C UCLA Blue

$\textcolor{#ABABFF}{\textsf{⬀}}$ #ABABFF Baby blue eyes

$\textcolor{#BD9AFF}{\textsf{⬀}}$ #BD9AFF Bright lavender

$\textcolor{#8C72BD}{\textsf{⬀}}$ #8C72BD Ube

$\textcolor{#FFB0AC}{\textsf{⬀}}$ #FFB0AC Melon

$\textcolor{#F58F8A}{\textsf{⬀}}$ #F58F8A Light coral

$\textcolor{#F4806D}{\textsf{⬀}}$ #F4806D Coral pink

$\textcolor{#E85E5C}{\textsf{⬀}}$ #E85E5C Terra cotta

$\textcolor{#DC505E}{\textsf{⬀}}$ #DC505E Dark terra cotta

$\textcolor{#B02A3C}{\textsf{⬀}}$ #B02A3C Deep carmine

$\textcolor{#7A1B1C}{\textsf{⬀}}$ #7A1B1C Falu red

$\textcolor{#511119}{\textsf{⬀}}$ #511119 Dark scarlet

$\textcolor{#F1E9E0}{\textsf{⬀}}$ #F1E9E0 Eggshell

$\textcolor{#D6C8BA}{\textsf{⬀}}$ #D6C8BA Pastel gray

$\textcolor{#D4C6B8}{\textsf{⬀}}$ #D4C6B8 Pale silver

$\textcolor{#D7D0B8}{\textsf{⬀}}$ #D7D0B8 Pastel gray

$\textcolor{#E2C9B0}{\textsf{⬀}}$ #E2C9B0 Desert sand

$\textcolor{#D4B79A}{\textsf{⬀}}$ #D4B79A Tan

$\textcolor{#BF9E73}{\textsf{⬀}}$ #BF9E73 Camel

Resources

Vector Palettes

  • Simplified Palette
  • Full Palette

Vector Editors

Font

Tips

  • If the original icon consists of just one or two letters, you may trace that letter instead of using these fonts.
  • Fonts can be a little tricky to align/center in different vector editors, which you can mitigate by either converting them to paths or in the case of Figma: the text box trim.
  • You can use a custom font if it matches the font from the original icon very closely, for the rest use fonts from Resources.

Resources

  • Now β€” main Sans-serif font; Now Alt from the same family can be used for an alternate lowercase 'a' letter.
  • Aleo β€” when Serifs are needed.

πŸ“₯ Contributing

Overview

Key Terms

  • Icon images β€” your exported PNG/SVG icons.

  • ComponentInfo β€” an app identifier (e.g. com.example/com.example.MainActivity) that launchers use to match an installed app to its icon in the icon pack. You can use these tools to get ComponentInfos from your installed apps:

  • Drawable name β€” an internal name of an icon (e.g. app_name). It's used to include an icon image to the icon pack, and in combo with ComponentInfo(s) it links the icon with the target app. The drawable name must be in alphanumeric lowercase with underscores only and icon image names must match the drawable name exactly (e.g. new_icon.png and new_icon.svg).

  • Standalone icon β€” an icon that isn't linked to any app. They can be non-app icons like adobe, or folder icons and be used for web shortcuts, app folders, etc. Users can select them via their launcher if it supports that feature.

  • Alternative icon β€” an alternative version of an app icon. Mainly used when the app rebrands: the old icon becomes an alternative (e.g. app_name_alt_1), and a new icon takes its place. However, you can create alternative icons for any app without linking them to any ComponentInfo, and they will be standalone. Users can select them via their launcher if it supports that feature.

  • Categories β€” categories within app/src/main/assets/drawable.xml to organize icons. Description of categories:

    • New β€” new icons for the current release. If manually adding icons, you must also add the entry to this category.
    • Alts β€” alternative icons.
    • Calendar β€” calendar icons.
    • Folders β€” folder icons.
    • Google β€” Google apps (Chrome, YouTube, etc.).
    • System β€” system icons (Camera, Contacts, Settings, etc.).
    • # β€” icons whose name starts with a number (e.g. _2048). If manually adding icons, drawable names that begin with a number must have a leading underscore and be placed in this category.
    • A–Z β€” everything else, sorted by the first letter of the drawable name.

Rules

  • Keep LF line endings in edited files. Git has a setting for this.

Notes for Contributors

Want to help close user requests? Check contribs/requests.yml β€” it contains all pending icon requests and is updated periodically.

If you wish, you can add yourself to app/src/main/res/xml/contributors.xml to shine in the app's contributors section!

Adding / Managing Icons

Your new app icon will have two important identifiers:

  • icon_name (and derivatives of it) will be used as a drawable name
  • com.example/com.example.MainActivity (and derivatives of it) will be used as a ComponentInfo
Example You have an app called "Delta Icon Delivery". A sensible name for your drawable would be delta_icon_delivery. The component info would be dictated by the app itself and be akin to something like com.delta.delivery/com.delta.delivery.Actvities.MainActivity.

So, you made an icon then exported it as new_icon.png and new_icon.svg. Now you needto select which way to manage icons. Here are two ways:

  • Automatic β€” an automatic and declarative way of managing icons via the file contribs/icons.yml in the repo, processed by scripts and GitHub Actions. This is the recommended approach.
  • Manual β€” this is how icons were managed before Automatic was implemented. Directly editing XMLs and placing icon images into the appropriate directories. More control, but also more prone to errors. Try to avoid it unless Automatic can't handle what you need.

Automatic

This is an automatic and declarative method of managing icons via contribs/icons.yml, driven by scripts and GitHub Actions.

Place your icon images (the new_icon.png and new_icon.svg files both) in the contribs/icons directory and add an entry in the following format to contribs/icons.yml:

new_icon: com.example/com.example.MainActivity

And that's all. This is the easiest and most common method for adding a new icon and linking it to an app. contribs/icons.yml will be processed by scripts and cleared automatically every release.

That entry can be extended with more options, for example:

new_icon:
  action: rewrite
  category: google
  compinfo:
    - com.example/com.example.MainActivity
    - com.example/com.example.SplashActivity

Check Options below to get an explanation of each option and Examples for more examples.

Options

  • action β€” describes what to do with the icon. It can take one of the following values:

    • add β€” add a new icon. This is the default action if the option is not explicitly set.
    • rewrite β€” overwrite icon images of an existing icon with new ones from contribs/icons.
    • rebrand β€” move an existing icon to alt_x (x will be automatically calculated), add a new icon and use it as the main one. If you pass any ComponentInfo, existing ComponentInfos will be attached to alt_x (for backward compatibility with older versions of the app), otherwise alt_x will be a standalone alternative icon.
    • remove β€” remove an existing icon.
    • rename > name β€” rename an existing icon (where name is a new name of the existing icon).
    • move > category β€” move an existing icon to a different category (where category is the category name).
  • category β€” overrides the automatic category assignment, e.g. if you want to assign a Google app icon to the Google category. If not set, the category is assigned based on the following logic:

    • if the drawable name starts with _[0-9] (e.g. _2048), the category will be #
    • if the drawable name ends with _alt_[0-9]+ (e.g. telegram_alt_23), the category will be Alts
    • else the category will be A–Z based on the first letter of the drawable name
  • compinfo β€” a list of ComponentInfos to link to the current icon. It can be a string or a list (see more in Examples).

Examples

# a new icon with a single ComponentInfo
# without adding icon images it will only link a ComponentInfo with new_icon
new_icon: com.example/com.example.MainActivity
# or with multiple ComponentInfos
new_icon:
  - com.example/com.example.MainActivity
  - com.example/com.example.SplashActivity

# new alternative icons
# will be automatically assigned to Alts category
new_icon_alt_1: com.example/com.example.MainActivity
new_icon_alt_2: com.example/com.example.SplashActivity
# or new standalone alternative icons
new_icon_alt_1: {}
new_icon_alt_2: {}
# if you're not sure if there's no alts with these names, you can use this:
#   _alt_x<N> will be automatically resolved to the next available alt number, e.g.:
#     new_icon_alt_x1 > new_icon_alt_4 (if _alt_1, _alt_2, _alt_3 exist)
#   use different numbers after x to add multiple alts in one file
new_icon_alt_x1: com.example/com.example.MainActivity
new_icon_alt_x2: com.example/com.example.SplashActivity
new_icon_alt_x3: {}
new_icon_alt_x4: {}

# a new standalone icon
new_icon: {}

# add a new Google app icon to Google category
google_app:
  category: google

# rewrite the icons of an existing icons without touching XMLs
# existing_icons.png and existing_icon.svg must be in contribs/icons
existing_icon:
  action: rewrite

# rebrand an existing icon and make the previous icon a standalone alternative icon \
# as existing_icon_alt_x (x will be automatically calculated)
existing_icon:
  action: rebrand

# rebrand an existing icon with attaching previous ComponentInfos \
# to a existing_icon_alt_x (x will be automatically calculated)
existing_icon:
  action: rebrand
  compinfos:
    - com.example/com.example.MainActivity

# rename an existing icon
# will be automatically moved to the appropriate category
existing_icon:
  action: rename > new_icon

# move an existing icon to a different category, e.g. google
existing_icon:
  action: move > google

# remove an existing icon from XMLs and image directories
existing_icon:
  action: remove

Manual

This is how icons were managed before Automatic was implemented. Avoid it unless Automatic can't handle what you need.

There are two drawable.xml and two appfilter.xml files to edit (stored in app/src/main/assets and app/src/main/res/xml). It's better to edit the XMLs in app/src/main/assets, then copy them to app/src/main/res/xml to keep all files identical. You can do it however you want (e.g. editing all files at the same time), just keep them identical.

Adding a new icon

  1. Add new_icon.svg to resources/vectors directory.

  2. Add new_icon.png to app/src/main/res/drawable-nodpi directory.

  3. Append the line <item drawable="new_icon" /> to both the New and the appropriate letter category in app/src/main/assets/drawable.xml. Here's how it should look:

    <!-- lines omitted -->
    <category title="New" />
    <!-- lines omitted -->
    <item drawable="latest_entry" />
    <item drawable="new_icon" />
    
    <category title="Alts" />
    <!-- lines omitted -->
    
    <category title="N" />
    <!-- lines omitted -->
    <item drawable="latest_entry" />
    <item drawable="new_icon" />
    
    <category title="O" />
    <!-- lines omitted -->
  4. Append the line <item component="ComponentInfo{com.example/com.example.MainActivity}" drawable="new_icon" /> to app/src/main/assets/appfilter.xml. Here's how it should look:

        <!-- lines omitted -->
        <item component="ComponentInfo{com.google/com.google.MainActivity}" drawable="latest_entry" />
        <item component="ComponentInfo{com.example/com.example.MainActivity}" drawable="new_icon" />
    </resources>
    <!-- end of file -->
  5. Copy edited XMLs from app/src/main/assets to app/src/main/res/xml.

  6. Repeat the process for more icons.

Alternative Icons

If an existing icon has been rebranded, don't overwrite it with a new one β€” do the following:

old_icon will be used as an existing drawable name.
old_icon_alt_1 will be used as an alternative icon name for the existing drawable name.

  1. Determine if alternative icons exist for the target app by checking Alts category in app/src/main/res/xml/drawable.xml. If no alternative icons exist, start numbering from 1 (e.g. old_icon_alt_1), otherwise continue numbering based on the latest alternative icon number (e.g. old_icon_alt_2).

  2. Rename old_icon.svg to old_icon_alt_1.svg in resources/vectors directory (if SVG is not found there, just skip this step).

  3. Rename old_icon.png to old_icon_alt_1.png in app/src/main/res/drawable-nodpi directory.

  4. Add old_icon_alt_1 to Alts category and old_icon to New category in app/src/main/assets/drawable.xml.

  5. If the ComponentInfo also changed after rebranding, replace old_icon with old_icon_alt_1 in app/src/main/assets/appfilter.xml (the alternative icon will be linked with the old ComponentInfos for backward compatibility).

  6. Copy edited XMLs from app/src/main/assets to app/src/main/res/xml.

Other Manipulations

The rest of the things are more or less obvious like moving drawable names between categories, renaming, etc. Just ask for help in Discord if something isn't clear.

πŸ—οΈ Build

GitHub Actions

Everything described here must be done in your fork.

Run Workflow

  1. Go to Actions β†’ Build FOSS
  2. Click on Run workflow, optionally mark preferred checkboxes, then click on Run workflow
  3. Wait for the build, it takes approximately 5-10 minutes. The zipped APK will be attached to the workflow run. Go to Actions, click on the latest workflow run and download it from Artifacts down below

Creating Secrets

This is optional since the workflow contains hardcoded values, but you can do this to use your own keystore. The following values of variables and options match the hardcoded workflow values.

  1. Generate a personal keystore with keytool -genkeypair -alias android -keypass android -keystore android.keystore -storepass android -keyalg RSA -dname "CN=Android,O=Android,C=US" -validity 9999

  2. Encode the keystore with cat android.keystore | base64 | tr -d '\n' > android.keystore.base64 or do it with any online tool.

  3. Go to Settings β†’ Secrets and Variables β†’ Actions and create the following repository secrets (key-value pairs):

    • KEYSTORE_BASE64 (contents of android.keystore.base64)

      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
      
    • KEYSTORE_PASSWORD (the value of -storepass option)

      android
      
    • KEYSTORE_KEY_ALIAS (the value of -alias option)

      android
      
    • KEYSTORE_KEY_PASSWORD (the value of -keypass option)

      android