Textualize / textual

The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.
https://textual.textualize.io/
MIT License
25.73k stars 792 forks source link

in band resize protocol #5217

Closed willmcgugan closed 1 week ago

willmcgugan commented 2 weeks ago

Fixes https://github.com/Textualize/textual/issues/5205

Having implemented this, it doesn't appear to make any noticeable difference.

I suspect that the for us there is no real benefit in the resize events being in-band. Previously we were handling signals and then posting events, which serialized everything anyway.

The Resize event does report the pixel size of the terminal with this protocol, which may be useful in the future when we add image support.

This also disable line-wrapping on terminals that support it. Currently only Ghostty as far as I can see. The benefit is that resizing the terminal doesn't cause the last line to wrap and scroll up. Further reducing resize jankiness.

https://github.com/user-attachments/assets/d23bd07c-f263-46cc-8c85-af5f5979cf78