Watch Face: Lumeo

Lumeo hero image

Connect IQ Store pagehttps://apps.garmin.com/apps/1330c898-8d68-4744-8886-41c13ae55151
FAQhttps://pixelpathos.co.uk/lumeo/faq

Hi everyone, it's Vince from Pixel Pathos.

Here's Lumeo, my new watch face. I know you love features and customisation, so here's what Lumeo has to offer right now (with more to come soon):

  • 6 bright colour themes, across 4 different layouts (from data-rich to clean-and-simple), each layout supporting a full always-on display;
  • Lots of ways to display complications, up to: 3 dials, 2 side meters, several icons, a graph showing current and historical data, and a move bar;
  • A deep settings menu on the watch where you can change all of this, including a lovely spinny complication selector;
  • Long press a complication on the watch face to launch its widget.

I'd love to hear your feedback, and to see how you've customised Lumeo - please post photos!.

Thanks for your support.

  • This is really cool.  Nice follow-up to Crystal.  Consider posting it here on Reddit, too: www.reddit.com/.../

  • Thanks so much, and great idea - I'll be sure to post there soon!

  • I love the on-device settings. Can you make a tutorial on how to make something like that? I'd love to implement a color picker for my watch face. Currently I have to write my own HEX codes from the Connect IQ app.

  • See https://forums.garmin.com/developer/connect-iq/f/discussion/349473/simple-example-wf-that-shows-a-bunch-of-things

    It only has one on-device setting, but shows the concept. It's all based on getSettingsView()

  • Yeah. I've got on-device settings working since before, but I'd love my settings to be more inuative like Lumeo. The complication selector and the HEX selector is brilliant...

    using Toybox.Application;
    using Toybox.System;
    using Toybox.Lang;
    using Toybox.WatchUi;
    
    class WatchSettingsMenu extends WatchUi.Menu2 {
    
        function initialize() {
            Menu2.initialize({:title => "Settings"});
    
            // Theme toggle
            Menu2.addItem(new WatchUi.MenuItem(WatchUi.loadResource(Rez.Strings.Theme), 
                getThemeName(_settings["Theme"]), "item_theme", {}));
            
            // Progress Bar toggle
            Menu2.addItem(new WatchUi.ToggleMenuItem(WatchUi.loadResource(Rez.Strings.ShowProgressBars), null,
                "item_show_progress_bars", _theme["ShowProgressBars"], null));
    
            // Debug toggle
            Menu2.addItem(new WatchUi.ToggleMenuItem(WatchUi.loadResource(Rez.Strings.Debug), null,
                "item_debug", _settings["Debug"], null));
        }
    
    }
    
    class WatchSettingsDelegate extends WatchUi.Menu2InputDelegate {
    
        function initialize() {
            Menu2InputDelegate.initialize();
        }
    
      	function onSelect(item) {
            var id = item.getId();
            var numberOfThemes = 5;
    
            // Toggling theme
            if (id.equals("item_theme")) {
                var newTheme = ((_settings["Theme"] + 1) % numberOfThemes);
                item.setSubLabel(getThemeName(newTheme));
                setTheme(newTheme);
            }
    
            // Toggling progress bars
            if (id.equals("item_show_progress_bars")) {
                _theme["ShowProgressBars"] = !getSetting("ShowProgressBars");
                setSetting("ShowProgressBars", _theme["ShowProgressBars"]);
            }
    
            // Toggling debug state
            if (id.equals("item_debug")) {
                _settings["Debug"] = !getSetting("Debug");
                setSetting("Debug", _settings["Debug"]);
            }
            
            _initializeWatchFace = false;
      	}
    
    }
    
  • I'm considering putting together a tutorial for the complication selector and/or colour picker, as I've had a few requests for that now. The basic idea is that normally, in Menu2InputDelegate.onSelect, you'll just be changing a setting, as in both your and Jim's examples. But you can also call pushView(view, delegate). Again, this is normally a view/delegate pair for a sub-menu, but the view can be a regular WatchUi.View that either uses the layout system, or that you draw yourself. Unlike the main watch face view, you can then handle all user input like taps, drags, swipes and key presses.

  • Ah, thanks. Your selectors are brilliant. I go as far as to say they should be official standards on Garmin watch faces.

    Default settings lack. On the app, Connect IQ and the Watch itself. Currently I can only manually add HEX colors in text fields.

    I will try with a view and see what I can do.