我已经开始尝试使用 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
- 在服务器上,我实际上得到了一个桌面“小程序”,在那里我可以启用或禁用服务器,我非常喜欢它:
但是,假设我通过 ssh 登录服务器,并且 x2go 服务器已停用桌面共享。那么我的问题是:
- 如何从命令行(通过 ssh)激活(和停用)x2go 服务器中的桌面共享?
接下来,我想知道客户端和屏幕尺寸——让我通过 VNC 的示例来说明:
如果我的服务器机器(例如,192.168.0.100)在端口 5900 上有 VNC 服务器,我可以使用以下命令从命令行连接到它ssvncviewer
:
ssvncviewer 192.168.0.100
如果我的服务器有一个分辨率更大的桌面(像素大小,例如 1920 x 1200),而我的客户端有一个分辨率较低的桌面(像素大小,例如 800 x 600),则上述命令将显示服务器桌面的“剪切”,而不进行缩放:
然后,如果我按 F9 向 SSVNC 发出“全屏”,这个“剪切”将占据全屏 - 并且由于没有缩放,服务器桌面上的文本是可读的,但我仍然可以通过将鼠标指针放在屏幕的边缘(顶部、底部、左侧、右侧)来进行导航 - 然后通过执行自动滚动(或自动平移)ssvncviewer
。
另一方面,如果我发出
ssvncviewer -scale auto 192.168.0.100
...然后我得到了服务器的完整(大)桌面,并将其缩放到可以放在客户端上的窗口 - 这样我就可以完整地观察服务器桌面;但是由于缩放,文本实际上不是可读的(注意,屏幕截图底部的伪影是由于 VNC 服务器缓存造成的):
好吧 - 我真的很喜欢能够在这两种查看模式(非缩放剪切与缩放)之间切换......但是:
- 除了这些(会话/会话管理.../(选择会话)/会话首选项/输入/输出)之外,我在 X2Go 客户端 GUI 中找不到缩放视图与非缩放视图的选项:
因此,如果我通过 X2GoClient 以“自定义”尺寸进行连接,我会得到一个切口,但居中:
...而且我找不到任何平移方法;如果我随后点击CTRL+ ALT+ SHIFT+ F,我将进入全屏模式 - 但它会被缩放(无法读取的文本);如果我再次点击CTRL+ ALT+ SHIFT+ F,我将退出全屏模式,但窗口不再显示切口,而是显示缩放视图:
当然,如果我以全屏模式开始,那么我总是只会得到一个缩放的视图。
所以我的问题是:
- 有没有办法从命令行启动 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