Как подключить tkcon к tcl / tk GUI через ssh

#ssh #tcl #tk

#ssh #tcl #tk

Вопрос:

У меня есть полноэкранное приложение Tk GUI, запущенное на виртуальной машине.

Я знаю, что могу "Attach to ... Interpreter" перейти из Tkcon в графический интерфейс внутри виртуальной машины.

К сожалению, поскольку приложение всегда работает в полноэкранном режиме, диалоговое окно tkcon скрыто за ним.

Я понимаю, я могу использовать ALT - TAB для переключения между tkcon и полноэкранным графическим интерфейсом. Это работает до тех пор, пока вы в порядке с регулярным переключением туда и обратно.

Вопрос:

Только мне было интересно, можно ли запустить tkcon на 2-м мониторе (например, на хосте Windows или Linux) и подключиться по ssh к графическому интерфейсу, работающему на виртуальной машине. Я вижу, что у tkcon есть "Attach to ... socket" опция.

Что я пробовал:

Я думал, что смогу,

  1. запустите Putty.
  2. Подключитесь к виртуальной машине через ssh с включенной X-переадресацией.
  3. Запустите tkcon в виртуальной машине с терминала Putty.
  4. И подключитесь к графическому интерфейсу, запущенному на виртуальной машине.— за исключением того, что этот последний шаг не работает. Я не вижу список «обнаруженных» интерпретаторов в tkcon ниже Attach to ... Interpreters .

Что также заставляет меня задуматься, как tkcon «обнаруживает» интерпретаторы на виртуальной машине.

Спасибо за ваше время и помощь.

Комментарии:

1. Просто небольшое продолжение (я не был уверен, стоит ли мне редактировать свой пост или добавлять комментарий здесь), на случай, если однажды я снова вернусь к этому вопросу. Сегодня я попробовал кое-что, о чем не знаю, почему, я раньше не думал. Вместо того, чтобы запускать полноэкранное приложение с графическим интерфейсом внутри виртуальной машины, я запустил его с терминала хоста, откуда я вошел в виртуальную машину по ssh. Я удивлен, что приложение работало без ошибок. Полноэкранный интерпретатор GUI-приложений теперь виден как для tkcon виртуальной машины, запущенной через ssh, так и для tkcon на хосте. Я могу подключиться с любого из них к графическому интерфейсу.

2. Я даже могу перевести виртуальную машину в безголовый режим и полностью работать на хосте. :) Но в любом случае было приятно узнать о tkconclient из ответа Донала Феллоу.

Ответ №1:

У Tkcon есть два реальных варианта подключения к другому интерпретатору:

  1. Встроенная send команда Tk, которая работает через свойства Xserver и немного сложна для включения функций. Это может напрямую взаимодействовать с любым другим Tk на том же Xserver. Использование SSH для обеспечения безопасности будет заключаться в использовании обычных туннелей удаленного доступа X11.
  2. tkconclient Пакет (исходный код см. На этой вики-странице), который вы запускаете в интерпретаторе, которым хотите управлять. Затем вы подключаетесь к нему с помощью tkcon (хотя вам нужно знать, к какому порту подключаться). Для этого вам нужно настроить обычный SSH-туннель; по умолчанию он разрешает только локальные подключения (и это хорошо).

Обратите внимание, что в клиентском коде должен выполняться цикл событий. Это не проблема для любого приложения с графическим интерфейсом, для всего, что отвечает на другие сокеты сервера, или, на самом деле, обычно для всего, что выполняет много управления потоками. Который охватывает наиболее интересные приложения.

Комментарии:

1. Спасибо за ответ, Донал Феллоуз. Я пробую ваши предложения, а затем возвращаюсь сюда. Еще раз спасибо. Очень признателен.

2. Извините за поздний отзыв. Праздники ¯_(ツ)_/¯ ! Я только что протестировал и выбрал ваше второе решение. По крайней мере, я частично успешно. Действительно, tkcon на хосте может подключаться к интерпретатору на хосте. Мне просто нужно выяснить, где лучше всего разместить этот скрипт tkconclient в виртуальной машине.

3. может подключаться к интерпретатору на хосте. —> Я имею в виду не гостя . Опечатка.