A minimalist, elegant, nerdy, typography-focused Garmin Connect IQ watch face that displays the current time as Swatch time.
Available for installation from Garmin Connect IQ Developer portal or through the Connect IQ mobile app.
Note
Swatch Time is part of a collection of unconventional Garmin watch faces. It has been developed for fun, as a proof of concept, and as a learning experience. It is shared as is as an open source project, with no commitment to long term maintenance and further feature development.Please use issues to provide bug reports or feature requests.
Please use discussions for any other comments.All feedback is wholeheartedly welcome.
In Swatch Time (also known as Swatch internet time), "the mean solar day is divided into 1,000 equal parts called .beats, meaning each .beat lasts 86.4 seconds (1.440 minutes) in standard time, and an hour lasts for approximately 42 .beats. The time of day always references the amount of time that has passed since midnight (standard time) in Biel, Switzerland."
The Garmin Swatch Time watch face displays the time as beats, three-digit numbers from 000 to 999.
Optionally, standard time and beatseconds (one beatsecond is defined here to be 1/000 of a beat) may be enabled.
The user may also choose between two symbols for the Swatch Time: The commonly used @ (at) or the arguably better looking . (dot)
Note
The time is specific to the fixed location of Biel, Switerland. Thus the value.500means noon Biel time, not local time at the current device location.
The Swatch Time watch face supports the following features:
The Swatch Time watch face uses custom fonts:
- Ubuntu for the Swatch time symbol (bols), beats (bold), beatseconds (regular), and standard time (regular).
The development of Garmin watch faces motivated the implementation of two useful tools:
- A TTF to FNT+PNG converter (
ttf2bmp).
Garmin watches use non-scalable fixed-size bitmap fonts, and cannot handle variable size True Type fonts directly.- An font scaler automation tool (
garmin-font-scaler).
Garmin watches come in a variety of shapes and resolutions, and bitmap fonts need to be scaled for each device proportionally to its resolution.
Note
To not appear disproportionately big, the At (@) symbol is drawn in a slightly smaller font than the Swatch time itself.
The font development proceeded as follows:
- The fonts were downloaded from Google Fonts as True Type (
.ttf) fonts. - The fonts were converted to bitmaps as
.fntand.pngpairs using the open source command-linettf2bmpconverter. - The font sizes were established to match the Garmin Fenix 7X Solar watch 280x280 pixel screen resolution.
- The fonts were then scaled proportionally to match other screen sizes available on Garmin watches using the
garmin-font-scalertool.
The table below lists all font sizes provided for the supported screen resolutions.
| Resolution | Shape | Element | Font | Size |
|---|---|---|---|---|
| 148 x 205 | rectangle | At | Ubuntu bold | 32 |
| 148 x 205 | rectangle | Beats | Ubuntu bold | 42 |
| 148 x 205 | rectangle | Beatseconds | Ubuntu regular | 32 |
| 148 x 205 | rectangle | Standard time | Ubuntu regular | 16 |
| 176 x 176 | semi-octagon | At | Ubuntu bold | 38 |
| 176 x 176 | semi-octagon | Beats | Ubuntu bold | 50 |
| 176 x 176 | semi-octagon | Beatseconds | Ubuntu regular | 38 |
| 176 x 176 | semi-octagon | Standard time | Ubuntu regular | 19 |
| 215 x 180 | semi-round | At | Ubuntu bold | 39 |
| 215 x 180 | semi-round | Beats | Ubuntu bold | 51 |
| 215 x 180 | semi-round | Beatseconds | Ubuntu regular | 39 |
| 215 x 180 | semi-round | Standard time | Ubuntu regular | 19 |
| 218 x 218 | round | At | Ubuntu bold | 47 |
| 218 x 218 | round | Beats | Ubuntu bold | 62 |
| 218 x 218 | round | Beatseconds | Ubuntu regular | 47 |
| 218 x 218 | round | Standard time | Ubuntu regular | 23 |
| 240 x 240 | round | At | Ubuntu bold | 51 |
| 240 x 240 | rectangle | At | Ubuntu bold | 51 |
| 240 x 240 | round | Beats | Ubuntu bold | 69 |
| 240 x 240 | rectangle | Beats | Ubuntu bold | 69 |
| 240 x 240 | round | Beatseconds | Ubuntu regular | 51 |
| 240 x 240 | rectangle | Beatseconds | Ubuntu regular | 51 |
| 240 x 240 | round | Standard time | Ubuntu regular | 26 |
| 240 x 240 | rectangle | Standard time | Ubuntu regular | 26 |
| 260 x 260 | round | At | Ubuntu bold | 56 |
| 260 x 260 | round | Beats | Ubuntu bold | 74 |
| 260 x 260 | round | Beatseconds | Ubuntu regular | 56 |
| 260 x 260 | round | Standard time | Ubuntu regular | 28 |
| 280 x 280 | round | At | Ubuntu bold | 60 |
| 280 x 280 | round | Beats | Ubuntu bold | 80 |
| 280 x 280 | round | Beatseconds | Ubuntu regular | 60 |
| 280 x 280 | round | Standard time | Ubuntu regular | 30 |
| 320 x 360 | rectangle | At | Ubuntu bold | 69 |
| 320 x 360 | rectangle | Beats | Ubuntu bold | 91 |
| 320 x 360 | rectangle | Beatseconds | Ubuntu regular | 69 |
| 320 x 360 | rectangle | Standard time | Ubuntu regular | 34 |
| 360 x 360 | round | At | Ubuntu bold | 77 |
| 360 x 360 | round | Beats | Ubuntu bold | 103 |
| 360 x 360 | round | Beatseconds | Ubuntu regular | 77 |
| 360 x 360 | round | Standard time | Ubuntu regular | 39 |
| 390 x 390 | round | At | Ubuntu bold | 84 |
| 390 x 390 | round | Beats | Ubuntu bold | 111 |
| 390 x 390 | round | Beatseconds | Ubuntu regular | 84 |
| 390 x 390 | round | Standard time | Ubuntu regular | 42 |
| 416 x 416 | round | At | Ubuntu bold | 89 |
| 416 x 416 | round | Beats | Ubuntu bold | 119 |
| 416 x 416 | round | Beatseconds | Ubuntu regular | 89 |
| 416 x 416 | round | Standard time | Ubuntu regular | 45 |
| 454 x 454 | round | At | Ubuntu bold | 97 |
| 454 x 454 | round | Beats | Ubuntu bold | 130 |
| 454 x 454 | round | Beatseconds | Ubuntu regular | 97 |
| 454 x 454 | round | Standard time | Ubuntu regular | 49 |
To modify and build the sources, you need to have installed:
Consult Monkey C Visual Studio Code Extension for how to execute commands such as build and test to the Monkey C runtime.
You can use the included Makefile to conveniently trigger some of the actions from the command line.
# build binaries from sources
make build
# run unit tests -- note: requires the simulator to be running
make test
# run the simulation
make run
# clean up the project directory
make cleanTo sideload your application to your Garmin watch, see developer.garmin.com/connect-iq/connect-iq-basics/your-first-app.




