Могу ли я открыть новый xterm с помощью tcl и отправить команды на этот xterm

У меня странное требование. Я хочу открыть новый xterm с помощью tcl и отправить команды на этот xterm. Я гуглил, но ничего не нашел

Пример: у меня есть графический интерфейс с 4 кнопками. Когда я нажимаю кнопку 1, он открывает новый xterm и отправляет команды, связанные с кнопкой 1 на этом xterm.

Точно так же, когда я нажимаю кнопку 2, открывается другое окно xterm, и оно отправляет рекомендации, связанные с кнопкой 2, на новом xterm.

Любая помощь высоко ценится


person Nitesh    schedule 20.05.2016    source источник
comment
Expect не автоматизирует приложения с графическим интерфейсом, даже такие «простые», как xterm.   -  person Donal Fellows    schedule 20.05.2016


Ответы (2)


да, вы можете сделать это, используя опцию -S xterm. У Дона Либеса есть пример под названием multixterm, в котором используется эта функция. Это отправляет символы в/из xterm(s).

Для дополнительного комментария о кнопках, которые должны быть сделаны с помощью кнопок в интерфейсе tcl/tk (получение событий X из xterm будет более сложным).

Дальнейшее чтение:

person Thomas Dickey    schedule 21.05.2016

Что вы можете сделать, так это записать временный скрипт Expect в файл из основного и запустить этот временный скрипт в вашем xterm. Например.,

#! /usr/bin/env expect
package require Tk 8.5
package require fileutil ;# You need to have Tcllib installed for this.

proc action1 {} {
    set temp [::fileutil::tempfile]
    ::fileutil::writeFile $temp {
        # Delete the temporary file as soon as it has been read.
        file delete $argv0

        # Your Expect script for Action 1 follows here.
        puts {Hello from a new Expect process!}
        sleep 3
    }
    exec xterm -e expect -f $temp &
}

# Display the GUI.
grid \
    [::ttk::button .action1 -text {Action 1} -command action1] \
    [::ttk::button .quit -text Quit -command {exit 0}]

vwait forever

В качестве альтернативы у вас может быть предопределенный невременный файл сценария Expect для каждой команды. Вы можете запустить его аналогично с

exec xterm -e expect -f action1.exp &

из Ожидайте или tclsh.

person nwk    schedule 20.05.2016