A series of original watch faces for Wear OS, written in Google's Watch Face Format (WFF v2). Kerteriz is Turkish for taking a bearing, the navigator's fix. The two lines in the series, Azimut and Meridian, are named after the two readings that fix takes.
Target: Galaxy Watch6 Classic 47 mm (SM-R960, 480 × 480). Sakura targets the Galaxy Watch FE (SM-R861, 396 × 396). Wear OS 5+ (API 34), target API 36.
| Face | Layout | Highlights |
|---|---|---|
| Meridian 01 | Classic three hands, digital time and date | Silver two-tone hands. Three user-selectable accent colours (Ice, Sand, Copper) through WFF UserConfigurations. Live weather and battery. |
| Meridian 02 | Asymmetric: analog dial top-left, data on the right | The hands never cross live data. A validator sweeps every hand angle and checks clearance against each text box. |
| Azimut 01 | Regulator: hour on a sub-dial, minute in the centre | Tint follows the time of day (night indigo, dawn/dusk amber, day steel), driven by one white radial PNG plus tintColor. The seconds are a glowing dot that moves around the rim. |
| Azimut Klasik | Three centre hands | The same tint and data layer on a conventional layout. |
| Azimut 03 | 360° bearing bezel, compass-needle seconds | An LCD window with a custom 7-segment bitmap font (WFF BitmapFonts). A separate outline hand set for always-on mode. |
| Azimut Sakura | Digital, for Galaxy Watch FE | Large two-weight time on an AI-generated sakura background. A battery bar fills to the live percentage. |
Every face ships an always-on (ambient) design that drops the colour, seconds and data.
Missing weather data shows — rather than a placeholder value.
- No code, no permissions. Each APK contains only resources: a WFF XML definition, PNGs and fonts. There is no DEX and no runtime permission.
- Generated assets. Hands, indices, bezels, tint layers and the 7-segment glyphs are drawn in Python with Pillow (
faces/*/bin/generate*.py). The same scripts render the design previews. - Validation before build.
bin/validate.pychecks the WFF XML against a copy of the official XSD. The copy is relaxed to XSD 1.0 so that lxml can read it. The script also checks resource links, hand pivots, image sizes, the ambient branch, and that the manifest declares no code or permissions. This is a structural check. It does not replace Google's validator or a test on a real watch. - Minimal toolchain.
bin/build.ps1builds the APK directly withaapt2,zipalignandapksigner. There is no Gradle and no Android Studio project. - Tested on real watches. Most faces were installed over wireless ADB and checked on the watch.
preview/*-saatte-*.pngandsakura-*-live.pngare screenshots taken on the device. The other previews are renders. Each face's README says what has and has not been verified on a device.
vendor/wff-v2/ official WFF v2 XSD (Apache 2.0), shared by all faces
faces/<face>/
src*/ AndroidManifest.xml + res/ (raw/watchface.xml, drawables, fonts)
bin/ generate*.py, validate.py, build.ps1
assets/ source fonts and artwork
preview/ renders and on-device screenshots
pip install pillow lxml
cd faces/azimut
python3 bin/generate_03.py # regenerate assets and previews
python3 bin/validate.py src-03 # structural checkOn Windows with the Android SDK (ANDROID_HOME, build-tools 36.1.0, platform 36):
powershell -ExecutionPolicy Bypass -File bin\build.ps1 -Src src-03 -Name azimut-03
adb install -r build\azimut-03.apkThe build script signs with the local Android debug key. These are personal builds, not Play Store releases.
The per-face READMEs are the original working notes, written in Turkish.
Original code and designs: MIT. Barlow fonts: SIL Open Font License 1.1 (assets/fonts/OFL.txt).
WFF XSD schemas: Apache 2.0 (vendor/WFF-LICENSE.txt).



