1

我想制作一个 Python 脚本来控制两个单独的终端窗口中的诅咒。不是在单个终端中诅咒窗口,而是在我的 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 的新实例,因为如果它可以控制一个已经打开的实例,我很高兴。

4

2 回答 2

3

ncurses C API 具有newterm可用于初始化屏幕的功能。根据newterm手册页:

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

但是,python curses 模块没有实现 newterm。

于 2012-04-20T01:52:55.933 回答
3

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

鉴于此,将您的程序分成两部分可能会更容易,一个在每个终端上运行,它们通过消息传递进行通信。

于 2012-04-19T01:43:39.597 回答