Scrolling Text Across Watchface


Does anyone know how I can have scrolling text on a face that doesn’t just go across the watchface once. What I would like to achieve is the weather for example scroll right to left and reset with a continuous scroll each time it has gone off the edge of the screen. I have this working in Watchmaker so wondered if its possible with Facer!? thanks

Yes, it is.

In order to math the heck out of it I need to know 3 things:
-how long is the text (in Facer’s units of length)
-when do you want it to start appearing
-how long is 1 cycle supposed to be

1 Like

doing a similar motion on my current design.
Length, 100px
When, immediately from about 25px in to the 100px
Duration, 3 seconds.

My current design is a single pass using:
Takes about 10 seconds to scroll by. But it’s only once now.

You just need to loop the original time:
This will give you a cycle of 10 seconds.

Thanks both for your work, would one of you be able to help me a little further and put a full string together for me? I don’t seem to get anything working at the moment?

thanks for your help!!


Use @Mellin’s expression for the X axis. Just update the last “10” to where you want the text to start over. My text was approximately 125px, so I updated it to: > (((#DWE#/10)-(floor(#DWE#/10)))*195)
The #DWE# tag will start your x axis at 0.

Now I just need to figure out how to make it go from right to left.

This seems to work:


for the right to left movement.

1 Like

The overall display is 320. Left is 0 right is 320. A trip across the screen from left to right uses any of the concepts and formulas that you guys mentioned. To travel from right to left, just subtract the whole formula from 320 (or something further off-stage like 350 or 400). @benkidds if you give us the text string you’re trying to pass, we can throw a sandbox face together in inspector mode so you can get started.

the data Mellin asks for is precisely what’s needed. Looping the time cycle means the cycles have to fit cleanly in a 60 second period.
2 seconds - 30 times a minute
3 seconds - 20 times a minute
4 seconds - 15 times a minute
5 seconds - 12 times a minute
6 seconds - 10 times a minute
10 seconds - 6 times a minute
12 seconds - 5 times a minute
15 seconds - 4 times a minute
20 seconds - 3 times a minute
30 seconds - 2 times a minute
Without some additional math work, the formulas above work fine if your text pass fits into one of these cycle periods. So a text pass that crosses in 13 seconds is no good. Either make the text shorter or change the pass speed (faster or slower)


That’s brilliant thanks so much!!

Thanks John I will take a look and get something for you to look at.

This seems to work coming in from the right but stops mid screen.


Do I need to set the -195 to -320?


Without knowing the text string length its difficult to say. I wanted the right most part of my text to start on the far right wall. Hence the calculation of my text string length (125px) minus 320 (far right wall). Knowing that #DWE# starts at 0 the text would only move within the 195-0 x axis. See the new face I just created. Watch the date text.

1 Like

Note I don’t have mine move fully off screen, it restarts when it touches the left border.

This is what I was hoping to achieve and it seems to work well so far with the support from all above, thanks
Any recommended improvements welcome, I have the X axis using:


1 Like

Looks good @benkidds. Hard to test yes? I would wear it for a while and check other weather conditions. “Partly Cloudy” is much longer than “Rain”

thanks yes longer ones just about stay on the screen as it starts again so may increase the value to compensate for that.
Just working on steps to miles conversion now but want to restrict number of decimal values so miles looks like 1.15 rather than something like 1.15434326598 and so on !!

WOW! Excellent design @benkidds.

I’d hate to be in LA when it’s 84C outside. Death Valley had the world’s highest recorded temperature of 56.7C — LOL!


How would I do this if I have a very short string (i.e. current time) and want to have a copy following it? Can I set a delay to the copy?

Example: Scrolling text element 1 is moving on a 3 second repeat. Scrolling element two follows behind element 1 with a 1.5 second delay.

My example is using the Y axis: (68+((((#DWE#/3)-(floor(#DWE#/3)))*120)))

I have the clock falling into the donut and disappearing. I included a Size change using this: (44+((((#DWE#/3)-(floor(#DWE#/3)))*-30)))

That way it looks like it get smaller as it falls in. The reason I need the copy is as the text gets smaller, it gets harder to read.

1 Like

My current alternative is creating a copy that fades in. Kinda looks cool:

I may try adding in an interaccel to delay the fade in.

1 Like

You can, at least in this case.

Change “#DWE#” (both of them) for something like “(#DWE#-0.5)”, while not changing any other parts of the script.
This will make that script think that it’s earlier than in reality.

Brilliant that’s great thanks for your help! much appreciated