[O] Optimize

This commit is contained in:
2026-04-19 22:19:53 -04:00
parent 1983c5bacc
commit f61fc21d4b
6 changed files with 91 additions and 20 deletions
+18 -3
View File
@@ -1,5 +1,6 @@
import argparse
import asyncio
import os
import telnetlib3
from telnetlib3 import TelnetReaderUnicode, TelnetWriterUnicode
@@ -11,19 +12,33 @@ log = setup_logger()
async def shell(reader: TelnetReaderUnicode, writer: TelnetWriterUnicode):
# Get the size of the terminal
async def get_size() -> tuple[int, int]:
async def get_size() -> tuple[int, int] | None:
writer.write("Detecting terminal size...")
writer.write('\x1b[18t')
await writer.drain()
size = await reader.read(100)
# Parse the size, it's in the format of \x1b[8;{height};{width}t
height, width = size.split(';')[1:3]
sp = size.split(';')[1:3]
if len(sp) != 2:
print("Peer is not a tty")
writer.write("\r\nCannot detect terminal size, please use a better terminal\r\n"
"(like kitty! https://sw.kovidgoyal.net/kitty/)\r\n")
await writer.drain()
return None
height, width = sp
height, width = int(height), int(width[:-1])
return height, width
# Run tngame-rs
h, w = await get_size()
_size = await get_size()
if _size is None:
writer.close()
reader.close()
return
h, w = _size
proc = await asyncio.create_subprocess_exec(
args.bin,
stdin=asyncio.subprocess.PIPE,