-
-
Notifications
You must be signed in to change notification settings - Fork 955
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fuzzy watchface #660
base: main
Are you sure you want to change the base?
Fuzzy watchface #660
Conversation
I love it. I just started to work on exactly this watchface, but I didn't get very far yet. |
Oooh ok, didn't know that! This makes sense, and might make things easier for internationalisaion later on. I guess it doesn't really matter whether you round up or down but, is this what's happening?
Also what about hours? It sticks to 12H format right? Do 00:00 and 12:00 turn into "midnight" and "midday" respectively? |
I was typing this message when yours appeared on github, so I'm quoting it. I love it! I would rather prefer a centered position, but I can get used to bottom left as well.
Regarding 00h and 12h, I would see more normal to say "twelve o'clock" rather than "midnight" or "midday", that kind of imprecision would be even more fuzzy (00:01h-11:59 → morning, 12:00h → midday/afternoon, 12:01-17h → afternoon, 17:01-20h → evening, 20:01-23:59 → night, 00h → midnight) and I wouldn't include those terms on a wristwatch. (KDE Plasma's fuzzy clock has those levels - and even more - of fuzziness, but on a wristwatch, I would see more logical to have an imprecise fuzzy watch to say the time on 0 and 5 minutes, like your example but with my suggestion. As sidenote, pebble fuzzy watchface was able to show the exact digital time during a few seconds by shaking the wrist, so if you need for some reason know the exact time, you were able to do it |
I always implemented it with +-2 minutes. |
Cool, thanks for the detailed feedback. I'll update the main post with some sort of todo list. Also, this is what I also had in mind for an alternative design: I'm still not completely happy, as I would like the text to "scroll" when the time changes. If you guys like the concept I will dive into the topic of animations in LVGL. Also note that the two designs are not mutually exclusive. If you make colors customisable (like for the pinetime style) one could always set the bg text to black and forget it even exists. Finally I have another request (I'm making assumptions about the languages you speak :D ): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The 42px font we currently have can fit 9.5 characters on a line. If it were 40px it would fit 10 and 36px can fit 11. Would it make sense to have just a 40px font for everything, at least for now?
Also, this is what I also had in mind for an alternative design:
I prefer the original design on first glance.
I'm still not completely happy, as I would like the text to "scroll" when the time changes.
In theory it might look good, but the screen refresh is actually quite slow. Scrolling large text probably ends up looking too choppy. The reason screen scrolling looks fine is because it uses hardware scrolling. Also it would be rare that we actually get to see this.
So now that the clock will be fuzzy, the longest string we deal with is "five past" which is 9 chars and should perfectly fit with the 42px font and leave some space on the borders as well. Still the 42px font only contains digits atm so we need to add lowercase letters anyway. Thanks for the info about animations! |
I like more those colors than on the first mockup, and because the text is more centerd, but I'd rather prefer a black background: it is more discrete and perhaps more battery saving (no idea about that).
I have my PT screen force to sleep after 5s, so I think I'd see an animation from time to time, but can be cool, sure.
Castillian is the name of the spanish language. Even every single person who has spanish as mother language knows its "real" name is castillian, but the name "spanish" has been popularized in the lasts decades. Besides, even they learn castillian at the school, most latam folks call at the language spanish. Now even in Spain many people call it "spanish" instead of castillian. So, summarizing, you can safely say people from Spain speaks Castillian and people from LATAM speaks Spanish, yet all of us really know the proper name is Castillian. Well, anyway, where do you want me to write down how do we say the time, right here? |
SpanishName of the numbers: Examples CatalanName of the numbers: Examples (traditional bell system, this is quite more simple than formal bell system as we don't need to sum or subtract anything, besides, traditional bell system is in its own a "fuzzy" system, as it refers directly to when the bell tower's bell chimed (in the villages and little towns in Catalonia they chime each 15 minutes), so if they just chimed (2 or 4 minutes ago) then is "tocat", if they chimed between 5 and 7 minutes is "ben tocat" (ie: chimed a while ago . On the other hand, quarters can be halved to fine tune a bit the time, so 07-08 minutes is said as "mig quart" ("half quarter"), minutes 22 and 23 is expressed as "quart i mig" (quarter and a half), minutes 37-38 would be "dos quarts i mig" (two quarters and a half), and minutes 52-53 as "tres quarts i mig" (three quarters and a half). Lastly, as bells only chime on quarters and not in half quarter, we cannot say "tocat" (just chime) but we use "passat" (just pass) so instead "tocat" and "ben tocat", we use "passat" and "ben passat" ), leaving all this fuss as follows: |
Thanks for the very thorought explaination @adocampo I'll get to work! |
Sorry for the delay, I was traveling and wasn't keen on writing this on the phone. The numbers:
Additional words:
Examples:
Special cases:
I realize the umlauts are going to be a problem. The problem about such characters is known and I know it is being worked on, so for starters I think I would use the general replacements when the character is not available:
This can be changed later, when the characters are available. Final note: I'm sure some of my countrymen are going to interject, saying "no, X is said differently here". How the time is said casually differs by dialect and region in Germany and other German speaking countries. Implementing all dialects would most probably not fit into the memory space of the PineTime, so I think it is best to stay with standard German. |
Can this be put into v1.5.0? |
Doubtful that it is ready by then. |
I have been testing what could be considered a "complete first version" of the watchface. I'll push this asap. Still missing:
|
I like this watchface a lot - I think I preferred the blue/white colours to the grey/white but that can easily be changed or user selected. The larger font looked better IMO. It could also be interesting to show icons (ble, battery etc) on long press or similar. |
The color has always been grey/white (poor quality picture look blueish). I opened an issue to solve the problem of personal preferences regarding colors (#684).
Definitely agree with you on everything. For fonts I guess we will have freedom when we will have access to the flash memory. |
I think there already is. |
Sure but afaik fonts are still embedded in the firmware right? At least that is what I'm doing here with the whole process of generating fonts and such. I think most of the restriction we have with fonts will go away when we will have access to fonts stored in there. Will go back to the 42px font for now. As @Riksu9000 said before it is enough for 9.5 chars and everything should fit in there for now (in english). |
I forgot to go through the process of generating Jetbrains Mono 42 again 🙄 Going to do it tomorrow |
9d67fd2
to
b8595c4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking really good!
Maybe you should update the font readme with instruction on generating the font as well. https://github.com/JF002/InfiniTime/blob/develop/src/displayapp/fonts/README.md
Thanks. What are you suggesting for the font README? Is something like
enough? |
Currently there are no instructions on generating the 42px font, so to generate the font we have to guess the settings or figure them out from the source. I think it would be best to create separate sections for the 20px and 42px font which would have mostly the same format explaining each setting that we need to enter in the font converter. Also the JetBrainsMono-Regular.ttf file should probably be added to the repo like the bold font used for the 20px font, so we don't need to go hunting for that separately as well. This would also make sure the version matches, because for example when you updated the font, numbers 2 and 3 changed as well, probably due to a newer version. |
I updated the README for the font generation, and reworked it a bit. Let me know what you think. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few minor things I noticed. Other than that everything looks good to me.
Btw, my personal preference would be to hide icons by default and only show the Bluetooth icon when the watch is disconnected and the battery icon when the battery level is low. |
Also rework the docs a bit.
This is done by setting a screen wide black background as the parent object.
d1868cf
to
a1386e7
Compare
Too bad my PineTime isn't charging anymore :'( ... I had to buy a Pebble Time Steel on eBay to enjoy a fuzzy watch face. |
@calhix pinetime-mcuboot-app-dfu-1.10.0.zip Update the visual bugs are due to the fact that you need to load additional font/image files into the flash memory. AFAICT this is done with @adocampo @JF002 Btw this also generalizes a bit the code introduced by the Infineat PR to make the watchface settings multipage. |
@dyamon the implementation of the fuzzy watchface is buggy, it randomly switches from fuzzy to digital... Hope you can fix this since this is only a test build and not official... :'( |
That isn't a bug, that is the feature that when you shake the watch it switches back to the digital watch face. I personally don't like the feature, but it is intended behaviour. |
About this, what you probably want to do is to perform a shake calibration (settings (3rd page) > Shake Calib.) I think this is set to the minimum as a default, which leads to this "random" activation of the digital preview. |
Thanks for the update of the fuzzy watchface @FintasticMan @dyamon... Though I only notice it happen with that watchface and not the others. I will recalibrate as suggested, but is there a way to just turn that feature off? In any case, thanks again guys! Appreciate your time and efforts into this... |
The feature is indeed baked into this watchface. Temporary solution: if you are not using the shaking feature for anything else (e.g., shake to wake or similar) you could crank up the shake threshold so you won't ever trigger the digital clock. |
That's what I ended up doing so I never see the digital face anymore, I do think a better solution would be to tap/double-tap the screen to temporarily show the steps and date on the fuzzy watchface itself. |
Personally I occasionally want to know the exact time, but maybe that's just me? I guess we can find a solution/compromise. |
I'm wiht you. It's interesting sometimes to know the exact time (i.e. when cooking, counting something, etc) |
Just wanted to say you did a great job on this. Would be great if we could have this ported to 1.11 resources (like with digistyle in #1116) so that it could possibly be included in the next update. |
Optimally to fit the style of this watch face would be to shake or do some gesture to have the exact time written out as well (like "seven after eleven" instead of "five after eleven." Would be a lot of work though. |
I was thinking maybe it's even possible to store all language specific resources that way, making it possible to add additional language (with language specific fonts for characters now missing) without changing the watchface itself. |
Thanks, I have been updating the PR every now and then when I update my PineTime.
Incidentally, this was the initial behavior (see first screenshot) when I didn't really get what a fuzzy watch was :D
I'd definitely go in that direction but wait to see if there is any work on internationalization at a more general level, otherwise we duplicate work for every app that wants to support multiple languages. |
@dyamon Do you know what failed in the checks? Seems like with a small tweak this could be merged. |
Hey @Zandengoff, I haven't being following the project lately but this is basically a rebase on the new changes. Oh and the tests are failing for some formatting issues. That should be easily handled as well. |
I'd love to see this merged, I haven't looked at the rebased version yet but I will. Does it have the fonts stored externally? Edit: wow I made so many typos |
So the font is still the internal 40px with additional ranges. You could use save some internal flash space and make it look nicer by putting the 42px font on ext flash. As far as the shake/digital switch, I'm not a big fan, but maybe an easy option would be to bind long press to display the digital time temporarily? |
Would love for this to be an option in the main distribution (I thought it was when I bought a PineTime lol) |
I hacked together an adaptation of this suited for the current state of the code that adds the fuzzy language as an option to the digital watchface instead of making a whole new watchface (which I couldn't get to fit on the device lol) -- might serve as a basis for someone else to hack on since previous implementations are based on code that's changed substantially. I wasn't able to change the font color inline in the latest codebase, apparently https://github.com/InfiniTimeOrg/InfiniTime/compare/main...zyphlar:InfiniTime:wb/fuzzy-norm?expand=1 cc #653 |
This is a first attempt at creating a fuzzy watchface similar to the one present on the Pebble and requested in #653 .
Feedback on the code is highly appreciated since I'm more of a C person and I'm not familiar with the C++ coding style. The code needs at least to be cleaned from some personal notes.
Also feedback on the design itself is appreciated since I don't own a Pebble and I partially based the design on some videos online.
At the moment this is the result:
I kinda like the bottom left alignment but we can change this quite easily. Also the font has been resized after the shots to better accommodate longer text.
Finally I have a slightly different design in mind, but I want to upload a mockup before going back to coding.
Next steps are:
Closes #653