Universal Launcher New Generation [2.3 and above]

My Lemfo Lem5 Pro doesn´t display the sunrise or sunset information, its allways Null. Can someone help me please?

Thank You.

Hugo do Carmo.

Jan 20, 2018 23:26:26 GMT 1 hugocarmo said:
My Lemfo Lem5 Pro doesn´t display the sunrise or sunset information, its allways Null. Can someone help me please?

Thank You.

Hugo do Carmo.


From the testing that I was able to conduct today, it appears that the lua string.sub() function isn’t working on image layers but IS working properly on text layers.  I confirmed this by adding some text layers to an existing watch face and printing the sunrise and sunset values as text using string.sub().  When trying to use the value returned by string.sub() as an equation on an image layer, I get nothing.

For example, this equation will print the sunset hour as text on a text layer:  string.sub(‘{wss}’,1,2)
but when used on an image layer to calculate the angle of an hour hand, it simply doesn’t work i.e. string.sub(‘{wss}’,1,2)*30

I’m not sure if the problem is with Rick’s launcher or with our watches though.  I think the Lemfo Lem5 Pro and the Finow X5+ are essentially the same watches so the problem could be with our respective watch’s firmware.  I’m curious to know if the AntoineMartinAstronomique watch face that I posted earlier behaves the same on other brands/models of watches.  If the problem also exists on different models then I suspect the problem is with the launcher.  I don’t own any other watches to test my theory though.

Jan 13, 2018 14:13:36 GMT 1 hans65 said:

Jan 11, 2018 18:28:06 GMT 1 hugocarmo said:
I dont know if someone has this issue, using stock launcher in my Lemfo lem5 pro all my touchscreen works without any issues, when using universal launcher latest version, the top of the touchscreen doesnt work, for instance, playstore has the search field on the top of the screen, I press in it to open keyboard and simply doesnt do nothing, exiting universal launcher, and everything gets normal.

Thank You,

Hugo do Carmo.


I’ve the same problem on my Q7 and I’ve already placed this issue here, search for it and see the comment for it. I guess there is no solution for this problem.


Same here on finow x5. Only way to solve is changing watch interface from round to square.

Jan 21, 2018 8:14:45 GMT 1 stevef said:
Jan 20, 2018 23:26:26 GMT 1 hugocarmo said:
My Lemfo Lem5 Pro doesn´t display the sunrise or sunset information, its allways Null. Can someone help me please?

Thank You.

Hugo do Carmo.


From the testing that I was able to conduct today, it appears that the lua string.sub() function isn’t working on image layers but IS working properly on text layers. I confirmed this by adding some text layers to an existing watch face and printing the sunrise and sunset values as text using string.sub(). When trying to use the value returned by string.sub() as an equation on an image layer, I get nothing.

For example, this equation will print the sunset hour as text on a text layer: string.sub(‘{wss}’,1,2)
but when used on an image layer to calculate the angle of an hour hand, it simply doesn’t work i.e. string.sub(‘{wss}’,1,2)*30

I’m not sure if the problem is with Rick’s launcher or with our watches though. I think the Lemfo Lem5 Pro and the Finow X5+ are essentially the same watches so the problem could be with our respective watch’s firmware. I’m curious to know if the AntoineMartinAstronomique watch face that I posted earlier behaves the same on other brands/models of watches. If the problem also exists on different models then I suspect the problem is with the launcher. I don’t own any other watches to test my theory though.


Yes problem is in the launcher probably, handling text to number in lua code is really very hard. Not sure i Can do this without breaking something else…

Thank You all for your answers.
So this is why that watch faces with autodim feature do not change automatically from normal to dim mode?

Jan 21, 2018 14:02:31 GMT 1 hugocarmo said:
Thank You all for your answers. So this is why that watch faces with autodim feature do not change automatically from normal to dim mode?

I'm not sure about the auto-dim feature but it explains why analog watch faces showing sunset and sunrise aren't working.
Jan 21, 2018 9:04:10 GMT 1 ricktop said:
Jan 21, 2018 8:14:45 GMT 1 stevef said:
From the testing that I was able to conduct today, it appears that the lua string.sub() function isn't working on image layers but IS working properly on text layers.  I confirmed this by adding some text layers to an existing watch face and printing the sunrise and sunset values as text using string.sub().  When trying to use the value returned by string.sub() as an equation on an image layer, I get nothing.

For example, this equation will print the sunset hour as text on a text layer:  string.sub(‘{wss}’,1,2)
but when used on an image layer to calculate the angle of an hour hand, it simply doesn’t work i.e. string.sub(‘{wss}’,1,2)*30

I’m not sure if the problem is with Rick’s launcher or with our watches though.  I think the Lemfo Lem5 Pro and the Finow X5+ are essentially the same watches so the problem could be with our respective watch’s firmware.  I’m curious to know if the AntoineMartinAstronomique watch face that I posted earlier behaves the same on other brands/models of watches.  If the problem also exists on different models then I suspect the problem is with the launcher.  I don’t own any other watches to test my theory though.


Yes problem is in the launcher probably, handling text to number in lua code is really very hard. Not sure i Can do this without breaking something else...

You're very talented.  I'm sure you'll soon find a way to support string.sub() on image layers.  Great launcher by the way.  I still think you should charge a fee for it in the Play Store.
Jan 20, 2018 21:43:42 GMT 1 stevef said:
Probé esta cara y las horas de salida y puesta del sol son precisas. También probé otras caras digitales y todas muestran el preciso atardecer y el amanecer. Solo tengo problemas con las caras que muestran esos tiempos como análogos.

buenos días, ¿sería tan amable de indicarme como instala caras con extension de archivo .watch?. Yo tengo un smartwatch chino sin android wear, concretamente un Lemfo Lem5 Pro y solamente puedo instalarlas a través de la copia de la carpeta con sus archivos en la carpeta ClockSkin...

Gracias por su ayuda y su tiempo

Jan 22, 2018 7:53:54 GMT 1 eag285 said:
Jan 20, 2018 21:43:42 GMT 1 stevef said:
Probé esta cara y las horas de salida y puesta del sol son precisas. También probé otras caras digitales y todas muestran el preciso atardecer y el amanecer. Solo tengo problemas con las caras que muestran esos tiempos como análogos.

buenos días, ¿sería tan amable de indicarme como instala caras con extension de archivo .watch?. Yo tengo un smartwatch chino sin android wear, concretamente un Lemfo Lem5 Pro y solamente puedo instalarlas a través de la copia de la carpeta con sus archivos en la carpeta ClockSkin...

Gracias por su ayuda y su tiempo


Copy the .watch file to the ClockSkin folder on the watch.  That is all that is needed to install a new watch face.  Then double tap the screen to change the face.

1 Like
Jan 22, 2018 1:43:27 GMT 1 stevef said:
Jan 21, 2018 9:04:10 GMT 1 ricktop said:
Yes problem is in the launcher probably, handling text to number in lua code is really very hard. Not sure i Can do this without breaking something else...

You're very talented.  I'm sure you'll soon find a way to support string.sub() on image layers.  Great launcher by the way.  I still think you should charge a fee for it in the Play Store.

2.5.1 published : should solve this problem. 

About Play Store, making a payed app is more difficult, needs to create a company, declare income against US and France, declare as a work to my current company… Lot of worries, but thanks for your support…

Jan 22, 2018 8:10:20 GMT 1 stevef said:
Jan 22, 2018 7:53:54 GMT 1 eag285 said:
buenos días, ¿es tan amable de indicarme como instalar caras con extensión de archivo .watch ? Yo tengo un smartwatch chino sin android wear, concretamente un Lemfo Lem5 Pro y solamente puedo instalarlas a través de la copia de la carpeta con sus archivos en la carpeta ClockSkin ...

Gracias por su ayuda y su tiempo


Copie el archivo .watch a la carpeta ClockSkin en el reloj. Eso es todo lo que se necesita para instalar una nueva esfera del reloj. Luego toque dos veces la pantalla para cambiar la cara.

ok, gracias. Probaré a ver que tal

Jan 23, 2018 9:57:09 GMT 1 ricktop said:
Jan 22, 2018 1:43:27 GMT 1 stevef said:
You're very talented.  I'm sure you'll soon find a way to support string.sub() on image layers.  Great launcher by the way.  I still think you should charge a fee for it in the Play Store.

2.5.1 published : should solve this problem. 

About Play Store, making a payed app is more difficult, needs to create a company, declare income against US and France, declare as a work to my current company… Lot of worries, but thanks for your support…


That's outstanding!  It's working fine now.  Donation on the way!

I found another minor discrepancy with the way string.sub() works on WatchMaker versus the Universal Launcher.
When calculating the angle of the hour hand on WatchMaker I have to use this: string.sub(’{wsr}’,1,1)*30
The above doesn’t work on the Universal Launcher until I modify it to this:

string.sub(’{wsr}’,1,2)*30

Not a big deal since I can open the face in Desktop Watchmaker and make two versions of the watch face, one for my Huawei watch running WatchMaker and another version for my Finow X5+

It might cause others working on new faces to do some head scratching though. I actually think your implementation is correct based on my limited knowledge of LUA.

I’ve found another bug. This one is related to {ddw0}. In WatchMaker, {ddw0} returns a 0 for Sunday, a 1 for Monday, and so on all the way to Saturday which is day 6. In the Universal Launcher, the attached watch face is always one day ahead of the correct weekday.  So it appears that {ddw0) starts counting at 1 in the Universal Launcher.

EDIT:  After further checking and comparing the face on WatchMaker vs Universal Launcher, it appears that the bug is actually in text_ring, not in {ddw0}.  

Here’s a download link to the watch face in question:  Dark Hero Legend II

Jan 23, 2018 23:30:23 GMT 1 stevef said:
I found another minor discrepancy with the way string.sub() works on WatchMaker versus the Universal Launcher. When calculating the angle of the hour hand on WatchMaker I have to use this: string.sub('{wsr}',1,1)*30 The above doesn't work on the Universal Launcher until I modify it to this:

string.sub(‘{wsr}’,1,2)*30

Not a big deal since I can open the face in Desktop Watchmaker and make two versions of the watch face, one for my Huawei watch running WatchMaker and another version for my Finow X5+

It might cause others working on new faces to do some head scratching though. I actually think your implementation is correct based on my limited knowledge of LUA.


I expect to have a 24h format for those tags, like 06h30 and 19h45. So i understand that it’s not what watchmaker is doing. Can you give me what watchmaker does for those two cases ? Thanks

Jan 24, 2018 7:44:23 GMT 1 ricktop said:
Jan 23, 2018 23:30:23 GMT 1 stevef said:
I found another minor discrepancy with the way string.sub() works on WatchMaker versus the Universal Launcher. When calculating the angle of the hour hand on WatchMaker I have to use this: string.sub('{wsr}',1,1)*30 The above doesn't work on the Universal Launcher until I modify it to this:

string.sub(‘{wsr}’,1,2)*30

Not a big deal since I can open the face in Desktop Watchmaker and make two versions of the watch face, one for my Huawei watch running WatchMaker and another version for my Finow X5+

It might cause others working on new faces to do some head scratching though. I actually think your implementation is correct based on my limited knowledge of LUA.


I expect to have a 24h format for those tags, like 06h30 and 19h45. So i understand that it’s not what watchmaker is doing. Can you give me what watchmaker does for those two cases ? Thanks

Under WatchMaker using the following code for a sunrise clock, the hour hand stays at 12 no matter what the correct sunrise hour happens to be:  string.sub(‘{wsr}’,1,2)*30
It displays the correct hour if I use:  string.sub(‘{wsr}’,1,1)*30

For the Universal Launcher, the following shows the correct hour:  string.sub(‘{wsr}’,1,2)*30 
With string.sub(‘{wsr}’,1,1)*30, the hour hand stays stuck on 12.

The minute hand shows correctly on both WatchMaker and the Universal Launcher using this:  string.sub(‘{wsr}’,-2)*6

I hope that helps.  Let me know if you need more info.  I’m a noob at editing watch faces with Desktop Watchmaker so my debugging skills are very poor.

Here’s a link to the WatchMaker version of the face I’m testing:  AntoineMartinAstronomique  It is using string.sub(‘{wsr}’,1,1)*30 and displays the hour correctly under WatchMaker.

Very nice latest versions, I’ve tried most of features and all seems to work fine

The launcher works with stoch watch faces too, wonderful

Jan 24, 2018 8:14:53 GMT 1 stevef said:
Jan 24, 2018 7:44:23 GMT 1 ricktop said:
I expect to have a 24h format for those tags, like 06h30 and 19h45. So i understand that it's not what watchmaker is doing. Can you give me what watchmaker does for those two cases ? Thanks

Under WatchMaker using the following code for a sunrise clock, the hour hand stays at 12 no matter what the correct sunrise hour happens to be:  string.sub('{wsr}',1,2)*30 It displays the correct hour if I use:  string.sub('{wsr}',1,1)*30

For the Universal Launcher, the following shows the correct hour:  string.sub(‘{wsr}’,1,2)*30 
With string.sub(‘{wsr}’,1,1)*30, the hour hand stays stuck on 12.

The minute hand shows correctly on both WatchMaker and the Universal Launcher using this:  string.sub(‘{wsr}’,-2)*6

I hope that helps.  Let me know if you need more info.  I’m a noob at editing watch faces with Desktop Watchmaker so my debugging skills are very poor.

Here’s a link to the WatchMaker version of the face I’m testing:  AntoineMartinAstronomique  It is using string.sub(‘{wsr}’,1,1)*30 and displays the hour correctly under WatchMaker.


Ok, that’s weird. The wiki said that the time should be with a leading zero, and in fact watchmake does not put this leading zero, so instead of 06:45, you’ll get 6:45. 
So, the substring has a zero in my launcher and a 6 in watchmaker, that explains it all. What’s strange is that if the time is 11h45, then the substring will be 1, so this code is not working in this case.
I can easily remove the leading zero, but it’s strange that watchmaker does that…

Jan 24, 2018 9:59:29 GMT 1 ricktop said:
Jan 24, 2018 8:14:53 GMT 1 stevef said:
Under WatchMaker using the following code for a sunrise clock, the hour hand stays at 12 no matter what the correct sunrise hour happens to be:  string.sub('{wsr}',1,2)*30 It displays the correct hour if I use:  string.sub('{wsr}',1,1)*30

For the Universal Launcher, the following shows the correct hour:  string.sub(‘{wsr}’,1,2)*30 
With string.sub(‘{wsr}’,1,1)*30, the hour hand stays stuck on 12.

The minute hand shows correctly on both WatchMaker and the Universal Launcher using this:  string.sub(‘{wsr}’,-2)*6

I hope that helps.  Let me know if you need more info.  I’m a noob at editing watch faces with Desktop Watchmaker so my debugging skills are very poor.

Here’s a link to the WatchMaker version of the face I’m testing:  AntoineMartinAstronomique  It is using string.sub(‘{wsr}’,1,1)*30 and displays the hour correctly under WatchMaker.


Ok, that’s weird. The wiki said that the time should be with a leading zero, and in fact watchmake does not put this leading zero, so instead of 06:45, you’ll get 6:45. 
So, the substring has a zero in my launcher and a 6 in watchmaker, that explains it all. What’s strange is that if the time is 11h45, then the substring will be 1, so this code is not working in this case.
I can easily remove the leading zero, but it’s strange that watchmaker does that…

Yes, that’s why I believe that your implementation of string.sub() is correct.  I think the true bug is with WatchMaker.

Jan 24, 2018 10:16:41 GMT 1 stevef said:
Jan 24, 2018 9:59:29 GMT 1 ricktop said:
Ok, that's weird. The wiki said that the time should be with a leading zero, and in fact watchmake does not put this leading zero, so instead of 06:45, you'll get 6:45.  So, the substring has a zero in my launcher and a 6 in watchmaker, that explains it all. What's strange is that if the time is 11h45, then the substring will be 1, so this code is not working in this case. I can easily remove the leading zero, but it's strange that watchmaker does that...

Yes, that's why I believe that your implementation of string.sub() is correct.  I think the true bug is with WatchMaker.

Change your code with this one and everyone will be happy : 

string.gsub(‘{wsr}’,“:.+”, “”)*30