X2Go 和命令行使用?

X2Go 和命令行使用?

我已经开始尝试使用 X2Go 而不是 VNC 来控制我的 Ubuntu PC - 虽然它通常可以工作,但我无法弄清楚如何做下面列出的事情。

但首先 - 我在两台电脑上都使用带有 MATE 桌面的 Ubuntu 20.04,并使用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
  1. 在服务器上,我实际上得到了一个桌面“小程序”,在那里我可以启用或禁用服务器,我非常喜欢它:

x2go 桌面小程序

但是,假设我通过 ssh 登录服务器,并且 x2go 服务器已停用桌面共享。那么我的问题是:

  • 如何从命令行(通过 ssh)激活(和停用)x2go 服务器中的桌面共享?

接下来,我想知道客户端和屏幕尺寸——让我通过 VNC 的示例来说明:

如果我的服务器机器(例如,192.168.0.100)在端口 5900 上有 VNC 服务器,我可以使用以下命令从命令行连接到它ssvncviewer

ssvncviewer 192.168.0.100

如果我的服务器有一个分辨率更大的桌面(像素大小,例如 1920 x 1200),而我的客户端有一个分辨率较低的桌面(像素大小,例如 800 x 600),则上述命令将显示服务器桌面的“剪切”,而不进行缩放:

ssvncviewer 剪切窗口

然后,如果我按 F9 向 SSVNC 发出“全屏”,这个“剪切”将占据全屏 - 并且由于没有缩放,服务器桌面上的文本是可读的,但我仍然可以通过将鼠标指针放在屏幕的边缘(顶部、底部、左侧、右侧)来进行导航 - 然后通过执行自动滚动(或自动平移)ssvncviewer

另一方面,如果我发出

ssvncviewer -scale auto 192.168.0.100

...然后我得到了服务器的完整(大)桌面,并将其缩放到可以放在客户端上的窗口 - 这样我就可以完整地观察服务器桌面;但是由于缩放,文本实际上不是可读的(注意,屏幕截图底部的伪影是由于 VNC 服务器缓存造成的):

ssvncviewer 缩放

好吧 - 我真的很喜欢能够在这两种查看模式(非缩放剪切与缩放)之间切换......但是:

  1. 除了这些(会话/会话管理.../(选择会话)/会话首选项/输入/输出)之外,我在 X2Go 客户端 GUI 中找不到缩放视图与非缩放视图的选项:

x2go 客户端偏好设置

因此,如果我通过 X2GoClient 以“自定义”尺寸进行连接,我会得到一个切口,但居中:

x2go 客户端自定义

...而且我找不到任何平移方法;如果我随后点击CTRL+ ALT+ SHIFT+ F,我将进入全屏模式 - 但它会被缩放(无法读取的文本);如果我再次点击CTRL+ ALT+ SHIFT+ F,我将退出全屏模式,但窗口不再显示切口,而是显示缩放视图:

x2go 客户端扩展

当然,如果我以全屏模式开始,那么我总是只会得到一个缩放的视图。

所以我的问题是:

  • 有没有办法从命令行启动 X2Go 客户端连接(比如说,我可以用它启动 VNC 客户端连接ssvncviewer 192.168.0.100)?
  • X2Go 客户端中是否有具有某种形式的交互式平移的“剪切”(即未缩放)模式,如果有,我该如何激活它(通过 GUI 或通过命令行)?

答案1

我最终在邮件列表中找到了这篇文章,x2goclient-cli 的命令行替代方案,显然是来自2011年:

如果我正确理解了最近的邮件流量(以及 wiki 中的路线图),x2goclient-cli 已被弃用,并且将不再积极开发。据我所知,目前有两种使用 x2goclient-cli 的替代方法:

  • 带有命令行选项的 x2goclient(QT 客户端)。
  • pyhoca-cli。

我尝试查看的命令行选项x2goclient,但我真的无法弄清楚如何使用它启动会话......

另一方面,我发现它pyhoca-cli在 Ubuntu 存储库中:

...我找到了有关其用法的文档:

因此,我使用以下命令安装了它:

sudo apt install pyhoca-cli

... 按照说明,我尝试了这个(因为我已经从 x2goclient gui 建立了连接,所以我--add-to-known-hosts从页面的示例中删除了);第一个需要“列出桌面”,即列出桌面会话(因此您至少需要从 X2Go 客户端 GUI 建立一次连接)

$  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

因此,这是可行的——请注意:

  • 我曾遇到过--share-desktop命令可能无法连接的情况;在这种情况下,我不得不停止pyhoca-cli;然后以 GUI 模式启动 X2Go 客户端,并从那里连接一次(成功);然后--share-desktop再次开始工作
  • --share-desktop命令再次打开一个居中的切口,如 OP 中所述 - 然后需要缩放全屏,并且一旦退出全屏,缩放就会保留

所以,这很好——现在只需要弄清楚:

  • 如何通过 ssh 从命令行启用/激活 X2Go 服务器
  • 如何指定我想要的全屏模式下的非缩放“切口”,并自动平移(通过将鼠标指针移动到屏幕的顶部/底部/右侧/左侧边缘)。

编辑:发现以下内容:上述示例是使用(我认为)X2GOClient GUI/会话首选项/会话类型“X2Go/X11 桌面共享”完成的。灵感来自Windows x2go 客户端显示分辨率不正确

我尝试将会话类型更改为“MATE”(这是我在服务器和客户端上使用的桌面环境,如上面的屏幕截图所示)。这样,就会打开一个窗口,该窗口会缩放到客户端桌面分辨率的最大可用尺寸,在里面,我可以看到以精确像素大小显示的客户端桌面,从左上角开始(顶部栏会缩放到该窗口的大小)——这样我就可以运行程序并清楚地看到发生了什么。

目前我无法判断的是,这是否是实际运行的桌面副本 - 或者这是同一用户的新会话(可能是新的,pyhoca-cli --list-desktops --server 192.168.0.100之后会列出两个会话而不是一个);至少,对于我使用的某些程序来说,这并不重要,所以这为我解决了无法读取的问题(至少目前部分如此)。还请注意,一旦您关闭 X2GoClient GUI 连接 - 当您下次打开“会话首选项/会话类型”时,它(如链接的帖子中所述):

使用命令“MATE”自动更改为“自定义桌面”

我猜想,在命令行上与此等效的操作是创建一个新的会话:

pyhoca-cli --server 192.168.0.100 --username myuser --new --command MATE

...一旦创建了新会话,在您关闭窗口后(请注意,如果您在 pyhoca-cli 上点击CTRL+ C,它也会关闭窗口,并且它不会删除会话,而是暂停会话)并想要再次重新连接,您不需要再次创建新会话。首先确认存在一个会话:

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

或者说,如果没有这个 bug,你就可以#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

相关内容