This little snippet will display the h x w
in the bottom right-hand corner of the screen.
from asciimatics.screen import Screen
import time
def print_dims(screen):
(h, w) = screen.dimensions
screen.print_at("%3d x %3d" % (h, w), w - 12, h - 1, Screen.COLOUR_BLUE, Screen.A_NORMAL)
def demo(screen):
print_dims(screen)
while True:
if screen.has_resized(): # never triggered
print_dims(screen)
ev = screen.get_key()
if ev in (ord('Q'), ord('q')):
return
time.sleep(0.1)
screen.refresh()
Screen.wrapper(demo)
Situation
The first call to print_dims()
works fine.
When I resize the window, everything on the screen is simply blanked out. The screen.has_resized()
inside the loop is never triggered. But the program is still running because a 'Q' will exit correctly.
Python is running on a Linux VM, and I am using ssh/iTerm2 from MacOS (TERM="xterm-256color"
) to access the Linux VM.
Request for Assistance
At this point, I need a sanity check.
I don't know if something is wrong with my code, with my terminal program, or if curses wasn't compiled with resize signals. iTerm2 on MacOS is probably ok, because when I run vim in another window and resize the iTerm2 window, vim does recognize the resize.
Has anyone gotten their system to detect a screen.has_resize()
within asciimatics? If so, please share your snippet and share your environment so I can narrow down exactly what I'm doing wrong.
Thank you.