From 146663b5dc3fb7012ba690ac2d08a2a023b68454 Mon Sep 17 00:00:00 2001 From: patrizzzz Date: Fri, 13 Mar 2026 20:03:31 +0800 Subject: [PATCH] feat: Implement a command-line cellular automaton simulator with rich rendering, customizable rules, and various display options and make it crossplatform for both linux,macOs and window. --- src/cautom/cli.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cautom/cli.py b/src/cautom/cli.py index 17c8f60..a6ed092 100644 --- a/src/cautom/cli.py +++ b/src/cautom/cli.py @@ -1,7 +1,13 @@ import random import time import sys -import termios +import platform +try: + import termios # POSIX-only + _HAS_TERMIOS = True +except ImportError: + termios = None + _HAS_TERMIOS = False from rich.live import Live from rich.text import Text from rich.panel import Panel @@ -25,17 +31,21 @@ def save_terminal_settings(): global _saved_settings + if not _HAS_TERMIOS: + return None fd = sys.stdin.fileno() _saved_settings = termios.tcgetattr(fd) return _saved_settings def restore_terminal_settings(): global _saved_settings - if _saved_settings: + if _HAS_TERMIOS and _saved_settings: fd = sys.stdin.fileno() termios.tcsetattr(fd, termios.TCSADRAIN, _saved_settings) def disable_echo(): + if not _HAS_TERMIOS: + return fd = sys.stdin.fileno() new_attr = termios.tcgetattr(fd) new_attr[3] = new_attr[3] & ~termios.ECHO