Nwagyu!Nwagyu!
App installer
  • English
  • Français
GitHub
App installer
  • English
  • Français
GitHub
  • Documentation Index
  • Tutorial
    • Part 1: Project creation
    • Part 2: Cleaning up the template
    • Part 3: Moving the snake
    • Part 4: Handling snake length
    • Part 5: Eating fruits
    • Part 6: Game over
    • Part 7: Map edge handling
    • Part 8: Frame limiter
    • Part 9: Progressive fruits spawning
    • Part 10: Score calculator and saving
    • Part 11: Map support
    • Part 12: App icon
    • Part 13: Increasing speed
    • Part 14: Conclusion
  • External apps
    • Creating your own application
    • Accessing storage
    • On/Off and Home keys
    • Syscalls
  • Firmware
    • Boot process
    • Slots
    • Bootloader
    • Kernel
    • Userland
    • Addresses and structures
  • Others
    • Communication with the computer (DFU)
    • Downloading Epsilon from NumWorks' website
  • Developers tips
    • [Rust] Using a heap allocator when developing apps
  • User documentation

Part 12: App icon

The final touch that we should have done earlier is adding an icon. In a NumWorks app, it's quite easy to do: the icon is just a 55×56 PNG file, located in src/icon.png. You can use any tool you want to create it.

Designing the icon

The most complicated part of the icon is creating it. For the purpose of this tutorial, I will use Inkscape, one of the best SVG editor, which I use for almost everything (I still use GIMP for raster image edition, but not for from scratch creation).

Note that creating or reprocessing the icon on GIMP can sometimes lead to better results if you want to avoid blurry edges on your icon.

NumWorks color palette

If you want to make an Epsilon-style icon (similar to the native apps icons), you will need to use a similar color palette. Here are the main colors used by the icons:

ColorNameUsage
#FFFFFFCornersCreating the corners around the icon
#D9D9D9BorderUsed below the icon as a shadow
#1D1E21Dark borderUsed below the icon as a shadow (dark icons)
#F5F5F5Background fillFill empty spaces inside the icon
#3E3F45PrimaryUsed to draw main shapes, softer then black
#636976SecondaryDraw less important shapes
#FFB81BMain fillFill the most important shape
#FFCD77Secondary fillUsed as a top shadow in some icons

Note that some native apps (e.g. Distributions) invert background and foreground colors, probably to create style variations improving diversity.

Some used colors aren't in this palette, like the Settings icon which use pure white for the sliders, and another kind of gray for the background.

Be careful with reusing NumWorks branding, as they may not be happy with people doing so. Most icons were available in Epsilon 15, which was released under a CC BY-NC-SA 4.0 license, so as long as you tell you reused NumWorks' graphical chart, and don't sell your work, you should be fine. However, I'm not a lawyer, and this license isn't compatible with most FOSS licenses (like GPL), so I'm not responsible for anything you do based on these colors.

Upsilon color palette

Upsilon, an alternative firmware, use a simpler color palette

ColorNameUsage
#FFFFFFCornersCreating the corners around the icon
#E6E6E6BorderUsed around the icon instead of a shadow
#F2F2F2Background fillFill empty spaces inside the icon
#7EA2CEPrimaryUsed to draw main shapes, softer then black
#4A4A4ASecondaryDraw less important shapes

A border around the icon is used in spite of the bottom shadow used by Epsilon, creating another style

NumWorks icons design

Most native icons have a 1 pixel shadow at the bottom, creating depth, as if the icon was above the white background, which can be tricky to replicate, especially on darker icons, but is an important part of the final icon.

Older icons used a 3-step gradient in the background, but newer icons seems to prefer a flat background. You can find this on the Grapher, Sequences and Regression icons.

Templates

I won't do a design tutorial, as I'm terrible at design. If you want, here are templates of Upsilon icons and Epsilon (aka native) icons:

Epsilon

Upsilon

I used a small trick to transform the border around the icon into a shadow on the Epsilon version by adding a gradient.

A small tip in case you are lacking ideas for your icon: use SVG Repo, a website containing open-licensed SVG icons. You don't have to directly reuse icons, but reusing some ideas can be helpful.

Snake icon

Based on what I previously explained and this SVG Repo icon, I created an icon for our app. It's not really perfect, but it will be better than our current icon.

Snake icon

The next step is exporting the icon as PNG. In Inkscape, press File → Export (or Shift+Ctrl+E), which will open the export panel. Ensure size is 55×56px, check the output filename then press Export.

In case you are following this tutorial and don't want to use Inkscape, here's the exported PNG icon link: icon.

Adding it to the app

This is quite easy: just replace the src/icon.png file in your app by the exported icon.

Then, simply running make run will be enough to install the app with your new icon on your calculator.

Renaming the generated NWA file

While we are doing branding, we can also change the filename of our app when building it, instead of the default app.nwa. Of course a simple rename will be enough, but having a clear filename by default can be useful.

To do so, simply replace all references to app.nwa or app.bin by snake.nwa and snake.bin, and we're done.

Don't forget to commit your work!

Next time we will increase difficulty over time and some other minor improvements.

Edit this page
Last Updated: 3/6/26, 10:31 PM
Contributors: Yaya-Cout
Prev
Part 11: Map support
Next
Part 13: Increasing speed