我想制作一个Python脚本来控制两个单独的终端窗口中的curses。不是在一个终端中诅咒窗口,而是在我的X窗口管理器中的两个不同的实例,比如urxvt。
这样的事情:
class myprogam():
controlterm1()
controlterm2()
def controlterm1():
Create a new (could be current) urxvt terminal window.
In the urxvt window setup curses with curses.initscr(), etc.
racergame()
def controlterm2():
Create another urxvt terminal window.
Setup curses.initscr, borders, size, etc. in window, leaving the old one alone.
typewriter()
def racecargame():
Racing game in curses
def typwritter()
Boring program for writing
myprogram()
我看到伪终端窗口在我使用命令“tty”时给出了一个名称,这给了我一个对/ dev / pts / somenumber的引用,其中第一个终端仿真器被赋值为零,然后是1, 2,等新终端。我可以使用此标识符作为执行此操作的基础吗?
脚本不必实际加载urxvt的新实例,因为我很高兴它可以控制已经打开的实例。
答案 0 :(得分:3)
原则上,打开多个设备并从一个脚本对它们进行I / O没有问题。但是,我见过的大多数curses软件都假定它对与程序相关的一个终端进行I / O操作。例如,initscr不带参数。它会查看您的环境变量以确定您的终端特征。
鉴于此,将程序拆分为两个可能更容易,一个在每个终端上运行,通过消息传递进行通信。
答案 1 :(得分:3)
ncurses C API具有newterm
功能,可用于初始化屏幕。根据{{1}}手册页:
输出到多个终端的程序应该使用每个终端的newterm例程而不是initscr。
然而,python curses模块没有实现newterm。