diff --git a/kittens/icat/main.py b/kittens/icat/main.py index 2e639c725..a0f6aac82 100755 --- a/kittens/icat/main.py +++ b/kittens/icat/main.py @@ -515,7 +515,12 @@ def main(args: List[str] = sys.argv) -> None: if cli_opts.print_window_size: screen_size_function.cache_clear() with open(os.ctermid()) as tty: - ss = screen_size_function(tty)() + try: + fd = tty.fileno() + except AttributeError: + # use default value for fd if ctermid is not available + fd = None + ss = screen_size_function(fd)() print(f'{ss.width}x{ss.height}', end='') raise SystemExit(0) diff --git a/kitty/utils.py b/kitty/utils.py index 777d59d8f..3b818d8f9 100644 --- a/kitty/utils.py +++ b/kitty/utils.py @@ -178,7 +178,7 @@ class ScreenSizeGetter: return cast(ScreenSize, self.ans) -@lru_cache(maxsize=64) +@lru_cache(maxsize=64, typed=True) def screen_size_function(fd: Optional[int] = None) -> ScreenSizeGetter: return ScreenSizeGetter(fd)