AsteroidOS / asteroid-launcher

AsteroidOS launcher and Wayland compositor based on Qt5, QML and QtWayland via Lipstick.
Other
45 stars 34 forks source link

[Feature request] Allow applications to temporarily override the watchface #93

Open dodoradio opened 2 years ago

dodoradio commented 2 years ago

There are certain usecases (such as a sports tracker) where the user will want to see something other than the watchface as the first thing when turning on their watch. There are several proposed solutions to this:

eLtMosen commented 2 years ago

First of all, i find the 3rd option to be the most logical option for the specified use case. However, i must say that i can not find other usecases than a sports tracker. Where the user consciously decides to set the watch into a special mode with inherently different requirements to the presentation of the homescreen/watchface. To justify altering the user choosen watchface, clearly understand the benefit, cope with slight inconsitencies and find/know an obvious way how to end this mode. In best case, the user never really has the feeling to leave the sports mode after starting a recording. But perceives the temporary swap of the watchface as a feature of that mode/app. So that app bound watchface should have a clear dedicated temporary character. Meaning, it should absolutely only be active while the sport is recorded, after the recording is started within the app. Ending the recoding by means of that swapped in watchface (ie a rather prominent stop button) should bring the user back to the sports app for consistency reasons. Since that is the place the UI path started. One inconstancy left with this approach might be: The user perceives the swapped watchface as part of the app like we want to suggest after coming from displayAmbient waking the watch. And tries to operate it like an app but ends up in quicksettings or notifications. This is quick to discover, learn and remember when bound to the mode however.

Thinking now, this should really be called a mode instead of app bound behaviour due to the UI implications? As a mode, i could more easily understand that it involves an app and influencing the watchfacehomescreen.

dodoradio commented 2 years ago

looks like this was given the go ahead. I'm proposing that we expose a secondary value (currently key: "/desktop/asteroid/watchface" is exposed for the watchface file location) through nemo.configuration that would be checked by the loader, probably somewhat like this:

    Component { id: centerPanel; Loader             { source: temporaryWatchFaceSource.value == "" ? temporaryWatchFaceSource.value : watchFaceSource.value } }

The issue I see is that the app providing the temporary watchface may crash (for whatever reason). A reboot/UI restart should fix this (the value should be cleared when asteroid-launcher is started) but I'm not sure if there should be another mechanism to check whether the temporary watchface should still be being displayed.