Yes, I did write Urwid.

https://i.ytimg.com/vi/d7eViIPOd3Y/sddefault.jpg

You can read the code here.

Though the simulation looks fine, but the way using Urwid is not what I was hoping to see. Urwid is not meant to be used for this kind of purpose, which is to have many floating widgets, not just occasionally popped out dialog or stuff. I thought Overlay widget can allow me adding many balls, it turns out not. One overlay can only top something on one other, but I believe that Overlay can be modified, so it can support multiple top widgets. Nevertheless, writing a whole new widget might be much more easier.

In that code, the ball is a widget, but the floor isn’t. They are just text, I have to manually edit it to match the floor in pymunk. If you run into some errors about trimming, probably your terminal window isn’t big enough. That is caused by Overlay, it has problem when top widget doesn’t overlay bottom widget.

I guess this would stop here.