X2Go и использование командной строки?
Я начал пробовать X2Go вместо VNC для управления моими компьютерами с Ubuntu - и, хотя в целом это работает, я не могу понять, как делать вещи, перечисленные ниже.
Но сначала я использую Ubuntu 20.04 с рабочим столом MATE на обоих ПК и использую
sudo add-apt-repository ppa:x2go/stable
(
http://ppa.launchpad.net/x2go/stable/ubuntu
). На управляемом компьютере (сервере) я установил:
sudo apt install x2goserver x2goserver-xsession
sudo apt install x2godesktopsharing
sudo usermod -a -G x2godesktopsharing myuser
На компьютере, который управляет (клиент), я установил:
sudo apt install x2goclient
- На сервере я фактически получаю настольный «апплет», где я могу включать или отключать сервер, что мне очень нравится:
Однако предположим, что я захожу на сервер через ssh, а сервер x2go деактивировал совместное использование рабочего стола. Тогда мой вопрос:
- Как активировать (и деактивировать) общий доступ к рабочему столу на сервере x2go из командной строки (через ssh)?
Далее меня интересует размер клиента и экрана — позвольте мне проиллюстрировать это на примере с VNC:
Если у меня есть сервер VNC на моей серверной машине (скажем, 192.168.0.100) на порту 5900, я могу подключиться к нему из командной строки, например:
ssvncviewer 192.168.0.100
Если у моего сервера есть рабочий стол с большим разрешением (размер пикселя, скажем, 1920 x 1200), а у моего клиента рабочий стол с меньшим разрешением (размер пикселя, скажем, 800 x 600), то приведенная выше команда показывает "вырез" рабочий стол сервера без масштабирования:
Затем, если я нажму F9, чтобы передать «Полный экран» в SSVNC, этот «вырез» займет весь экран — и, поскольку нет масштабирования, текст на рабочем столе сервера читается, но я все еще могу перемещаться, помещая указатель мыши по краям экрана (сверху, снизу, слева, справа) - и далее выполняется автопрокрутка (или автопанорамирование) по
ssvncviewer
.
С другой стороны, если я выдаю
ssvncviewer -scale auto 192.168.0.100
... затем я получаю полный (большой) рабочий стол сервера, масштабированный до окна, которое может поместиться на клиенте, поэтому я могу наблюдать за рабочим столом сервера целиком; однако из-за масштабирования текст на самом деле не читается (обратите внимание, артефакты внизу скриншота связаны с кэшированием VNC-сервера):
Что ж, мне очень нравится иметь возможность переключаться между этими двумя режимами просмотра (вырез без масштаба и масштабированный)... однако:
- Я не могу найти параметры масштабированного и немасштабированного представления в графическом интерфейсе клиента X2Go, кроме этих (Сеанс/Управление сеансом.../(выберите сеанс)/Настройки сеанса/Ввод/Вывод):
Итак, если я подключаюсь через X2GoClient с размером «Пользовательский», я получаю вырез, но по центру:
... и я не могу найти способ панорамирования; если я затем нажму CTRL+ALT+SHIFT+F, я перейду в полноэкранный режим, но он масштабируется (нечитаемый текст); если я снова нажму CTRL+ALT+SHIFT+F, я выйду из полноэкранного режима, но тогда в окне больше не будет отображаться вырез, а вместо этого будет масштабированный вид:
И, конечно же, если я запускаю полноэкранный режим, я всегда получаю масштабированный вид.
Итак, мои вопросы здесь:
- Есть ли способ запустить клиентское соединение X2Go из командной строки (например, я могу запустить клиентское соединение VNC, скажем,
ssvncviewer 192.168.0.100
)? - Есть ли в клиенте X2Go «вырезанный» (то есть немасштабированный) режим с какой-либо формой интерактивного панорамирования, и если есть, то как его активировать (либо через графический интерфейс, либо через командную строку)?
1 ответ
В конце концов я нашел этот пост в списке рассылки Альтернативы командной строки для x2goclient-cli , по-видимому, с 2011 года:
Если я правильно интерпретировал недавний почтовый трафик (и дорожную карту в вики), x2goclient-cli устарел и больше не будет активно развиваться. Насколько я вижу, в настоящее время существует две альтернативы использованию x2goclient-cli:
- x2goclient (клиент QT) с параметрами командной строки.
- пихоча-кли.
Я попытался изучить параметры командной строки
x2goclient
, и я не могу понять, как начать сеанс, используя это...
С другой стороны, я обнаружил, что в репозиториях Ubuntu:
... и я нашел документ по его использованию:
Итак, я установил его с помощью:
sudo apt install pyhoca-cli
... и следуя инструкциям, я попробовал это (так как я уже сделал подключения из x2goclient gui, я сбрасываю
--add-to-known-hosts
из примеров на странице); сначала нужно «перечислить рабочие столы», то есть перечислить сеансы рабочего стола (поэтому вам нужно будет хотя бы один раз установить соединение из графического интерфейса клиента X2Go)
$ pyhoca-cli --server 192.168.0.100 --list-desktops --user myuser
pyhoca-cli[139077] NOTICE: preparing requested X2Go session
...
Password:
pyhoca-cli[139077] (x2gocontrolsession-pylib) NOTICE: connecting to [192.168.0.100]:22
pyhoca-cli[139077] (PyHocaCLI) NOTICE: authentication has been successful
X2Go desktops available for sharing
===================================
Host: 192.168.0.100 - [192.168.0.100]:22
Username: myuser
myuser@:0
Итак, сверху у меня есть сессия
myuser@:0
- и это то, к чему я могу подключиться:
$ pyhoca-cli --server 192.168.0.100 --share-desktop myuser@:0 --user myuser --share-mode 1
pyhoca-cli[139324] NOTICE: preparing requested X2Go session
...
pyhoca-cli[139324] (PyHocaCLI) NOTICE: proceeding to interactive login for user ,,myuser''
Password:
pyhoca-cli[139324] (x2gocontrolsession-pylib) NOTICE: connecting to [192.168.0.100]:22
pyhoca-cli[139324] (PyHocaCLI) NOTICE: authentication has been successful
pyhoca-cli[139324] (x2gosession-pylib) NOTICE: Using session myuser-50-1639641479_stS1XSHADmyuserXSHADPP0_dp24 as master session for profile Pyhoca-Client_Session.
pyhoca-cli[139324] (PyHocaCLI) NOTICE: Press CTRL+C to end desktop sharing for this session...
^CKeyboardInterrupt
2021-12-16T07:58:35Z
pyhoca-cli[139324] (x2gosession-pylib) WARN: local folder sharing is disabled for this session profile
pyhoca-cli[139324] (x2gosession-pylib) WARN: local folder sharing is disabled for this session profile
pyhoca-cli[139324] (x2goterminalsession-pylib) NOTICE: cleaning up session myuser-50-1639641479_stS1XSHADmyuserXSHADPP0_dp24 after termination
pyhoca-cli[139324] (PyHocaCLI) NOTICE: X2Go session myuser-50-1639641479_stS1XSHADmyuserXSHADPP0_dp24 has been terminated
Итак, это работает - обратите внимание, что:
- Я столкнулся с тем, что команда может не подключиться; в таком случае мне пришлось остановиться
pyhoca-cli
; затем запустите клиент X2Go в графическом режиме и подключитесь оттуда один раз (успешно); потом после этого снова начал работать - The
--share-desktop
Команда снова открывает вырез по центру, как описано в OP, для которого затем требуется масштабированный полноэкранный режим, и масштабирование сохраняется после выхода из полноэкранного режима.
Итак, это хорошо - теперь просто нужно выяснить:
- Как включить/активировать сервер X2Go из командной строки по ssh
- Как указать, что я хочу немасштабируемый «вырез» в полноэкранном режиме с автоматическим панорамированием (путем перемещения указателя мыши к верхнему/нижнему/правому/левому краям экрана).
РЕДАКТИРОВАТЬ: Обнаружено следующее: приведенные выше примеры были выполнены с (я думаю) X2GOClient GUI/Настройки сеанса/Тип сеанса «X2Go/X11 Desktop Sharing». Под влиянием Windows клиент x2go отображается с неправильным разрешением ,
Я попытался изменить тип сеанса на «MATE» (это среда рабочего стола, которую я использую как на сервере, так и на клиенте, и она показана на снимках экрана выше). При этом открывается окно, которое масштабируется до максимально доступного размера при разрешении рабочего стола клиента, а внутри я получаю рабочий стол клиента, отображаемый с точным размером в пикселях, начиная с верхнего левого края (и верхняя панель масштабируется до размера этого окна) - так что я могу запускать программы и хорошо видеть, что происходит.
Чего я не могу сказать на данный момент, так это того, является ли это копией действительно работающего рабочего стола или это новый сеанс для того же пользователя (вероятно, новый,
pyhoca-cli --list-desktops --server 192.168.0.100
впоследствии перечисляет два сеанса вместо одного); по крайней мере, для некоторых программ, которые я использую, это не имеет значения, так что это решило нечитаемое разрешение для меня (по крайней мере, частично на данный момент). Также обратите внимание, что как только вы закроете соединение с графическим интерфейсом X2GoClient, когда вы в следующий раз откроете настройки сеанса/тип сеанса (как сказано в связанном посте):
автоматически меняется на «Пользовательский рабочий стол» с помощью команды «MATE».
Я думаю, эквивалентом этого в командной строке является создание нового сеанса:
pyhoca-cli --server 192.168.0.100 --username myuser --new --command MATE
... и как только новый сеанс будет создан, после того, как вы закроете окно (обратите внимание, что также, если вы нажмете CTRL+Cна pyhoca-cli`, он также закроет окно и не удалит сеанс, а вместо этого приостановит сеанс ) и хотите снова подключиться, вам не нужно снова создавать новый сеанс. Сначала подтвердите, что существует сеанс с:
pyhoca-cli --username myuser --list-sessions --server 192.168.0.100
... или, альтернативно, перечислите рабочие столы:
pyhoca-cli --username myuser --list-desktops --server 192.168.0.100
... а затем вместо этого вы можете возобновить сеанс (обратите внимание, что требуется имя сеанса, а не имя рабочего стола, но также можно использовать имена сеансов OLDEST и NEWEST):
pyhoca-cli --username myuser --server 192.168.0.100 --resume NEWEST
... вернее, могли бы, если бы не эта ошибка #1445 - pyhoca-cli не удается подключиться к приостановленному сеансу x2go - Журналы отчетов об ошибках X2Go , что, по-видимому, исправлено в pyhoca-cli 0.6.1.3, однако мой Ubuntu 20.04 все еще имеет 0.6.1.2.
И, наконец, чтобы уничтожить/убить/стереть сессию, используйте
--terminate
(который также принимает ВСЕ):
pyhoca-cli --username myuser --server 192.168.0.100 --terminate ALL