Improve tmux redraw by toggling terminal size

Toggle width -1 then back to force tmux to fully redraw all panes
This commit is contained in:
GitHub Copilot
2026-01-24 16:32:49 +00:00
parent c01b7c1091
commit 3da68eaaf8
+7 -3
View File
@@ -117,12 +117,16 @@ class TerminalSession(Session):
self._screen.resize(height, width) self._screen.resize(height, width)
async def force_redraw(self) -> None: async def force_redraw(self) -> None:
"""Force a terminal redraw by re-sending the current size. """Force a terminal redraw by toggling the size.
This triggers a SIGWINCH to the child process, causing applications Briefly changes the terminal size then restores it, which forces
like tmux to redraw their display. applications like tmux to fully redraw all panes.
""" """
loop = asyncio.get_running_loop() loop = asyncio.get_running_loop()
# Briefly shrink by 1 column then restore - this forces a full redraw
await loop.run_in_executor(
None, self._set_terminal_size, self._last_width - 1, self._last_height
)
await loop.run_in_executor( await loop.run_in_executor(
None, self._set_terminal_size, self._last_width, self._last_height None, self._set_terminal_size, self._last_width, self._last_height
) )