HMs DIY #1-6

Store Link

Because I want to keep this datafield and the app free for use I would be very grateful about a small donation to PayPal

A detailed description of how to use it can be found here: 

HMs_DIY_GUIDANCE.pdf
HMs_DIY_ANLEITUNG.pdf

Thanks very much to mcinner1 for putting so much time into this documentation!

Designer download

You can contribute on my github page.
You can upload your layout so others can use it as well.
Also any changes to the fonts.txt can be updated there as well.

Garmin_HMsDIY

=======================================================================
RELEASE NOTES
=======================================================================
-----------------------------------------------------------------------
3.6.2
* switched to new SDK 7.2.1
* added devices: Approach S7 42mm, Descent Mk3 43mm /Mk3i 43mm, Descent Mk3i 51mm, Edge 1050, epix Pro Gen2 42mm, epix Pro Gen2 47mm / quatix 7 pro, epix Pro Gen2 51mm / D2 mach 1 pro / tactix 7
Fenix 7 Pro, Fenix 7 Pro Solar, Fenix 7S Pro, Fenix 7X Pro, Fenix 7xPro Solar, Forerunner 165, Forerunner 165M, Venu 3, Venu 3S, Vivoactive 5
-----------------------------------------------------------------------
3.5.1
* switched to new SDK 4.2.4
* added devices: FR265, FR265S, FR965, GPSMAP 67/67i, Marq (Gen 2), Marq (Gen 2) Aviator, EDGE 540, EDGE 840, Instinct 2x Solar
* added two new font types GLANCE, GLANCENR (only available if device supports it!)

for full releasenotes see: releasenotes.txt
=======================================================================

 

  • Layout, as XML:

    <?xml version="1.0" encoding="UTF-8"?>
    <DIYLayout>
        <Device name="fenix 6X Pro / 6X Sapphire / 6X Pro Solar"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="22" x2="280" y2="22" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="62" x2="280" y2="62" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="99" x2="280" y2="99" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="151" x2="280" y2="151" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="210" x2="280" y2="210" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="139" y="0" x2="139" y2="280" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="40" y="0" x2="40" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="240" y="0" x2="240" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="8" fixedtext="true" daynight="false" eletype="FX" text="00" font="XTINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="35" fixedtext="true" daynight="false" eletype="FX" text="00" font="TINY" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="35" fixedtext="true" daynight="false" eletype="FX" text="00" font="TINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="35" fixedtext="true" daynight="false" eletype="FX" text="00" font="TINY" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="62" fixedtext="true" daynight="false" eletype="FX" text="00" font="SMALL" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="62" fixedtext="true" daynight="false" eletype="FX" text="00" font="SMALL" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="62" fixedtext="true" daynight="false" eletype="FX" text="00" font="SMALL" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="99" fixedtext="true" daynight="false" eletype="FX" text="00" font="MEDIUM" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="99" fixedtext="true" daynight="false" eletype="FX" text="00" font="MEDIUM" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="99" fixedtext="true" daynight="false" eletype="FX" text="00" font="MEDIUM" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="151" fixedtext="true" daynight="false" eletype="FX" text="00" font="LARGE" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="151" fixedtext="true" daynight="false" eletype="FX" text="8" font="LARGE" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="151" fixedtext="true" daynight="false" eletype="FX" text="00" font="LARGE" halignment="0" precision="0" nr_values="1" sampletext=""/>
    </DIYLayout>
    
    fonts.txt.zip

  • Hi

    After a quick look: You have to load the layout in the designer, copy the config string to your watch and from there adapt the preview in the designer so it matches your watch! Not the other way around! The fonts in the watch are fixed, you have to adapt the preview in the designer.

    I will try it in the simulator and post the fonts.txt here.

    regards

    Erich

  • you have to adapt the preview in the designer.

    YESS!

    I did for you a new fonts.txt (attached as zip) and 3 layouts.
    Please upload the 3 layouts to your watch using the downloaded fonts-file and make a foto (better a screenshot) of each layout - how it looks on the watch.

    fontsNEW.zip

    Code for the first picture:

    <?xml version="1.0" encoding="UTF-8"?>
    <DIYLayout>
        <Device name="fenix 6X Pro / 6X Sapphire / 6X Pro Solar"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="22" x2="280" y2="22" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="62" x2="280" y2="62" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="99" x2="280" y2="99" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="151" x2="280" y2="151" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="210" x2="280" y2="210" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="139" y="0" x2="139" y2="280" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="96" y="1" x2="96" y2="28" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="183" y="1" x2="183" y2="28" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="40" y="0" x2="40" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="240" y="0" x2="240" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="FFFFFF" x="104" y="8" fixedtext="true" daynight="false" eletype="FX" text="00" font="XTINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="8" fixedtext="true" daynight="false" eletype="FX" text="00" font="XTINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="176" y="8" fixedtext="true" daynight="false" eletype="FX" text="00" font="XTINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="35" fixedtext="true" daynight="false" eletype="FX" text="00" font="TINY" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="35" fixedtext="true" daynight="false" eletype="FX" text="00" font="TINY" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="35" fixedtext="true" daynight="false" eletype="FX" text="00" font="TINY" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="72" fixedtext="true" daynight="false" eletype="FX" text="00" font="SMALL" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="72" fixedtext="true" daynight="false" eletype="FX" text="00" font="SMALL" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="72" fixedtext="true" daynight="false" eletype="FX" text="00" font="SMALL" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="116" fixedtext="true" daynight="false" eletype="FX" text="00" font="MEDIUM" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="116" fixedtext="true" daynight="false" eletype="FX" text="00" font="MEDIUM" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="116" fixedtext="true" daynight="false" eletype="FX" text="00" font="MEDIUM" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="173" fixedtext="true" daynight="false" eletype="FX" text="00" font="LARGE" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="173" fixedtext="true" daynight="false" eletype="FX" text="8" font="LARGE" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="173" fixedtext="true" daynight="false" eletype="FX" text="00" font="LARGE" halignment="0" precision="0" nr_values="1" sampletext=""/>
    </DIYLayout>
    

    Code for the middle picture:

    <?xml version="1.0" encoding="UTF-8"?>
    <DIYLayout>
        <Device name="fenix 6X Pro / 6X Sapphire / 6X Pro Solar"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="22" x2="280" y2="22" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="62" x2="280" y2="62" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="99" x2="280" y2="99" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="151" x2="280" y2="151" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="210" x2="280" y2="210" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="139" y="0" x2="139" y2="280" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="96" y="1" x2="96" y2="28" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="183" y="1" x2="183" y2="28" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="40" y="0" x2="40" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="240" y="0" x2="240" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="FFFFFF" x="39" y="50" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_MILD" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="50" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_MILD" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="240" y="50" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_MILD" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="40" y="91" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_MEDIUM" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="91" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_MEDIUM" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="241" y="91" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_MEDIUM" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="38" y="132" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_HOT" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="132" fixedtext="true" daynight="false" eletype="FX" text="8" font="NR_HOT" halignment="1" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="242" y="132" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_HOT" halignment="0" precision="0" nr_values="1" sampletext=""/>
    </DIYLayout>
    

    Code for the right picture:

    <?xml version="1.0" encoding="UTF-8"?>
    <DIYLayout>
        <Device name="fenix 6X Pro / 6X Sapphire / 6X Pro Solar"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="22" x2="280" y2="22" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="62" x2="280" y2="62" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="99" x2="280" y2="99" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="151" x2="280" y2="151" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="230" x2="280" y2="230" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="139" y="0" x2="139" y2="280" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="96" y="1" x2="96" y2="28" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="183" y="1" x2="183" y2="28" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="40" y="0" x2="40" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="240" y="0" x2="240" y2="240" eletype="LN" valuetype="FX" daynight="false" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="FFFFFF" x="38" y="9" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_THAI_HOT" halignment="2" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="243" y="61" fixedtext="true" daynight="false" eletype="FX" text="00" font="NR_THAI_HOT" halignment="0" precision="0" nr_values="1" sampletext=""/>
        <LayoutElement type="0" color="FFFFFF" x="139" y="140" fixedtext="true" daynight="false" eletype="FX" text="8" font="NR_THAI_HOT" halignment="1" precision="0" nr_values="1" sampletext=""/>
    </DIYLayout>
    

    After uploading to your watch and make a screenshot you have to adapt the layout in the designer to match the look at the watch - even if the positions are not right. But you have to do it by editing the fonts.txt offsets - not by changing the x/y coordinates in the designer!

    Or you submit the screenshots and I'll do!  Wink

  • I have just checked the original fonts.txt which is delivered by HM when downloading the Designer.

    For Fenix 6X the font mapping was already done - and now I don't know if my fine tuning for the "normal fonts" is even better?

    For the NR_Fonts I did no change in the fonts.txt!

  • Hi

    I already did the mapping for the F6XPro. The bigger fonts do not look exactly like on the device, because the font used there is not available and I did not find a better fitting one. So, the preview for the bigger fonts is as close as it gets for now.

    Sorry for that, but the original garmin fonts are just not available.

  • feature request:


    There must be a way to capture peak Power and HR values for a given interval during a ride, there are several apps allowing it (eg Powerfield, Link, source code is available)


    So eg. if you choose 1 min, I know you can get the average HR or Power with "nr of values", but what about the max 1 min value for the ride?
    Thanks!

  • Hi! it's possible to show the value of w/kg ??? only put a formula to divide watts and your weight. thanks a lot!!!

  • Hi

    On which power value should the value be based on? Normalized or the standard bike power?

  • if is possibe, in the two options, and anyone chose standrd or normlized. thank you so much

  • Got a few value requests for ya.

    • Time until sunset / Time until sunrise (without optional offset)
    • Steps for current activity (as opposed to daily steps)
    • Steps until daily step goal
    • Weather related fields (assuming phone & data connection)

    Also, how are you able to add symbols, like the heart or battery icons?