{"id":16914022,"url":"https://github.com/tumb1er/ElPrimero","last_synced_at":"2025-12-22T12:30:15.364Z","repository":{"id":51196702,"uuid":"165007530","full_name":"tumb1er/ElPrimero","owner":"tumb1er","description":"Watch face for Garmin Vivoactive 3","archived":false,"fork":false,"pushed_at":"2021-05-21T10:04:31.000Z","size":13290,"stargazers_count":9,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-03-23T11:31:30.891Z","etag":null,"topics":["connect-iq","monkey-c","watchface"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tumb1er.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-10T06:56:57.000Z","updated_at":"2022-10-19T11:50:04.000Z","dependencies_parsed_at":"2022-08-28T19:51:26.061Z","dependency_job_id":null,"html_url":"https://github.com/tumb1er/ElPrimero","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tumb1er%2FElPrimero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tumb1er%2FElPrimero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tumb1er%2FElPrimero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tumb1er%2FElPrimero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tumb1er","download_url":"https://codeload.github.com/tumb1er/ElPrimero/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219851335,"owners_count":16556249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["connect-iq","monkey-c","watchface"],"created_at":"2024-10-13T19:15:26.938Z","updated_at":"2025-12-22T12:30:15.318Z","avatar_url":"https://github.com/tumb1er.png","language":null,"funding_links":[],"categories":["Watch faces"],"sub_categories":["Older resources"],"readme":"# ElPrimero\nClassic Zenith analog watchface with anti-aliasing, always-on second hand and powersafe mode.\n\n[Connect IQ Store link](https://apps.garmin.com/en-US/apps/225123f0-526b-456c-a885-e6a57f4c9d20)\n\n![Screenshot](https://github.com/tumb1er/ElPrimero/blob/master/store/title.png)\n\n* Nice design\n* Battery level and heart rate display\n* UTC timezone and device state icons\n* Move meter\n* Steps counter\n* Active minutes counter\n* Current date display\n* Auto power safe mode\n\nPhoto | Blue | Black | Powersafe \n-- | -- | -- | --\n![Photo](https://github.com/tumb1er/ElPrimero/blob/master/store/photo.png) | ![Blue](https://github.com/tumb1er/ElPrimero/blob/master/store/blue.png) | ![Black](https://github.com/tumb1er/ElPrimero/blob/master/store/black.png) | ![Powersafe mode](https://github.com/tumb1er/ElPrimero/blob/master/store/powersafe.png)\n\n### FAQ\n\n1. **I have a question or a problem**\n\n   Feel free to \"Contact developer\" or open an issue at \"source code\".\n\n2. **How to uninstall**\n\n   * Select another current watchface in \"watchfaces\"\n   * Uninstall watchface from Garmin Connect mobile app\n\n3. **What about adding more functions**\n\n   90/92Kb of device memory is used to draw smooth anti-aliased clock design, so I don't think\n   there is enough room for any new idea. But feel free to [make a PR](https://github.com/tumb1er/ElPrimero/pull/new/master).\n\n### Powersafe mode\n\nThere are 3 operating modes for this watchface:\n\n* Active mode (10 seconds after \"what's time\" gesture)\n    * Current heart rate is shown\n    * Second hand is updated in 2Hz\n* Background mode\n    * Second hand is updated in 1Hz\n    * All data is updated once a minute, differences are re-drawn to screen buffer\n* Powersafe mode (activated at specific conditions)\n    * Second hand is not shown\n    * Minute hand is drawn once a minute, everything else is drawn to screen buffer\n    * When hour hand moves (once in 12 minutes), all data is updated, differences are\n      re-drawn in screen buffer\n    * Anti-aliased custom-font hour and minute hands are replaced with vector hands\n\nPowersafe mode is activated in a minute after entering background mode, if:\n* Do-not-disturb mode is on (usually it is activated in sleep mode)\n* Move bar is full (if you are too busy to make some steps, you don't look at watch)\n* Heart rate data is missing (watches are not on your hand)\n* Heart rate is less than 1.2x of resting heart rate (you are actually sleeping) \n\n### Technical details\n\n#### Generating tiles for hands\n\n```sh\n./tiler.py --name hour_sides   --tile=24x24 --texture=96x96 elp_hour_sides.png\n./tiler.py --name minute_sides --tile=32x32 --texture=160x160 elp_minute_sides.png \n./tiler.py --name gauge_sides  --tile=32x32  gauge_hand_sides.png \n```\n\n#### Prepare production release\n\n1. version in properties.xml and strings.xml\n2. update version in manifest.xml\n3. build release file \n```sh \n~/opt/ConnectIQ/bin/monkeyc -e -o out/ElPrimero-1.6.0.iq -p ~/opt/ConnectIQ/bin/projectInfo.xml -r -f monkey.jungle -y ~/.ssh/connect_iq.der \n```\n\n### Unsupported devices\n\n* Approach S60 - no HRM\n* D2 family - JSON resources not supported\n* Descent MK1 no byte arrays support\n* Edge family - bike devices\n* Fenix 3 family - JSON resources not supported\n* Fenix 6X Pro - 280x280 screen size is too large for resources initially used with 218x218 devices\n* Fenix Chronos - Not enough screen color depth - image is distorted\n* Forerunner 230/235/630/735/920 - not round displays\n* GPSMAP, Oregin, Rino families - navigator devices\n* Swim 2 - JSON resources not supported\n* Venu - AMOLED display which has limitations on pixel-on duration and second hand periodic updates\n* Vivoactive - Rectanble screen\n* Vivoactive HR - Byte arrays not supported by device\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftumb1er%2FElPrimero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftumb1er%2FElPrimero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftumb1er%2FElPrimero/lists"}