Automating background generation for all Garmin screen sizes
Building watch faces like my Chinese and Cyberpunk designs is a lot of fun, but also very tedious. One of the biggest challenges is Garmin’s many screen sizes and resolutions.
Garmin doesn’t have a single screen size. There are at least a dozen different resolutions, from 240x240 on older devices to 454x454 on the newest Amoled ones. Some are square, some are round. If you want your watch face to look good on all of them, you have to manually resize all your background assets.
I built a Python-based Garmin Asset Generator to solve this.
DEVICES.md file to record which devices have which screen size and shapeBy using this tool, I can focus more on the design and logic of my watch faces and less on the repetitive task of exporting dozens of images.
The tool is a Python script that can execute a few commands for generating images. It reads a configuration file listing the target Garmin devices and their resolutions.
The gradient backgrounds are very useful. Rather than opening Photoshop or Figma for every new device, I pass in two hex colors and the script interpolates between them based on a pattern — either radial or linear — and saves a correctly-sized PNG for each resolution. Changing the color scheme of a watch face is now a one-line config change. I intend on adding more background patterns like this as well.
Before this tool, adding support for a new Garmin device meant:
Now it’s one command. The folder is populated automatically.