Python Curses:使用一个脚本控制两个终端(Linux)

时间:2012-04-18 17:25:58

标签: python curses tty terminal

我想制作一个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的新实例,因为我很高兴它可以控制已经打开的实例。

2 个答案:

答案 0 :(得分:3)

原则上,打开多个设备并从一个脚本对它们进行I / O没有问题。但是,我见过的大多数curses软件都假定它对与程序相关的一个终端进行I / O操作。例如,initscr不带参数。它会查看您的环境变量以确定您的终端特征。

鉴于此,将程序拆分为两个可能更容易,一个在每个终端上运行,通过消息传递进行通信。

答案 1 :(得分:3)

ncurses C API具有newterm功能,可用于初始化屏幕。根据{{​​1}}手册页:

  

输出到多个终端的程序应该使用每个终端的newterm例程而不是initscr。

然而,python curses模块没有实现newterm。