From f498d855ba4333b27a862b663c02aee3761ea9f4 Mon Sep 17 00:00:00 2001 From: Yoland Yan <4950057+yoland68@users.noreply.github.com> Date: Tue, 19 Nov 2024 00:34:20 -0800 Subject: [PATCH] Add terminal size fallback (#5623) --- api_server/services/terminal_service.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/api_server/services/terminal_service.py b/api_server/services/terminal_service.py index 284afab5..ed788d9a 100644 --- a/api_server/services/terminal_service.py +++ b/api_server/services/terminal_service.py @@ -1,5 +1,6 @@ from app.logger import on_flush import os +import shutil class TerminalService: @@ -10,15 +11,27 @@ class TerminalService: self.subscriptions = set() on_flush(self.send_messages) + def get_terminal_size(self): + try: + size = os.get_terminal_size() + return (size.columns, size.lines) + except OSError: + try: + size = shutil.get_terminal_size() + return (size.columns, size.lines) + except OSError: + return (80, 24) # fallback to 80x24 + def update_size(self): - sz = os.get_terminal_size() + columns, lines = self.get_terminal_size() changed = False - if sz.columns != self.cols: - self.cols = sz.columns + + if columns != self.cols: + self.cols = columns changed = True - if sz.lines != self.rows: - self.rows = sz.lines + if lines != self.rows: + self.rows = lines changed = True if changed: