在Linux中更改VNC会话的分辨率

175

我使用VNC连接到工作中的Linux工作站。在工作中,我有一台运行在1600x1200分辨率下的20英寸显示器,而在家里,我使用1440x900分辨率的笔记本电脑。 如果我将vnc服务器设置为运行在1440x900分辨率下,我会错过很多显示空间,而如果我将其设置为运行在1600x1200分辨率下,则无法适应笔记本电脑的屏幕,并且我必须一直滚动它。

有没有好的方法可以动态调整VNC会话的大小?

我的VNC服务器是运行在SuSE64上的RealVNC E4.x(我不记得确切的版本号)。


我想提一下最近遇到的一件事,但我还没有测试过。有一个名为FreeNX的新程序,旨在取代VNC。这是链接:http://freenx.berlios.de/ - andho
@andho - 那个链接似乎已经失效了。 - ArtOfWarfare
@ArtOfWarfare 希望这可以帮到你 https://help.ubuntu.com/community/FreeNX。现在应该相当稳定了。我认为在时间允许的情况下,我很快就会尝试它。 - andho
15个回答

1

我不确定在Linux下是否可以,但在Windows下,TightVNC会检测并适应服务器上的分辨率变化。

因此,您应该能够通过VNC连接到工作站,执行相当于右键单击桌面、属性、将分辨率设置为任何值的操作,并使客户端VNC窗口自动调整大小。


1
另一方面,如果有一种方法可以将现有窗口从一个X服务器移动到另一个X服务器,那么这可能会解决问题。
我认为您可以使用xmove在两个独立的X服务器之间移动窗口。因此,如果它有效,这至少应该为您提供了一种实现您想要的功能的方法,尽管不像更改分辨率那样容易。

你知道在SuSE Linux中,xmove是否有其他名称吗? - Nathan Fellman
@NathanFellman 你看过xpra吗?它是一个更近期的应用程序,但类似的工具。https://en.wikipedia.org/wiki/Xpra和https://software.opensuse.org/package/xpra。 - DDay
我在一个大型企业工作,IT部门选择远程访问工具,所以我对此没有太多的控制。 - Nathan Fellman

0

我有一个简单的想法,类似于这样:

#!/bin/sh

echo `xrandr --current | grep current | awk '{print $8}'` >> RES1
echo `xrandr --current | grep current | awk '{print $10}'` >> RES2
cat RES2 | sed -i 's/,//g' RES2

P1RES=$(cat RES1)
P2RES=$(cat RES2)
rm RES1 RES2
echo "$P1RES"'x'"$P2RES" >> RES
RES=$(cat RES)

# Play The Game

# Finish The Game with Lower Resolution

xrandr -s $RES

嗯,我需要一个更好的解决方案来支持Linux和类似操作系统下的所有显示设备。


0
据我所知,仅使用VNC无法更改客户端的分辨率,因为它只是一个“监视器镜像”应用程序。
然而,TightVNC(这是一个VNC客户端和服务器应用程序)可以调整客户端屏幕的大小,即使所有内容都变小一点(类似于图形程序中的图像调整技术)。如果您不使用太小的字体大小,那应该可以工作。理论上,不同的VNC应用程序之间应该是兼容的。

这个问题严格来说是一个Linux问题,这个Windows的答案在这里不适用。在Windows中,VNC只是一个监视器,但在Linux中,它首先是一个虚拟桌面,只有后来的一些版本添加了“显示0”的支持(即监视器)。VNC缩放是一个相当糟糕的用户体验。 - nhed

-3

我认为这取决于你的窗口管理器。

作为一个Windows用户,我的猜测可能是错误的,但是:在Linux机器上不是有一个叫做X-Server的东西运行吗?至少对于VNC感兴趣的目标机器上可以连接到它,并使用“X-Clients”进行连接吧?

VNC只需要将屏幕上的所有内容“通过网络隧道传输”。如果我没有完全错的话,“X”协议应该让你有机会使用客户端的桌面分辨率。

试试在维基百科上搜索X-Server,那可能会给你一个大致的概述。


这个想法很好,可以使用ssh隧道和本地x服务器来实现。您在自己的机器上拥有x服务器,并允许远程客户端访问您的x服务器,从而在您的显示器上呈现远程应用程序的GUI界面。 - andho
@andho,这完全不是发布者所问的 - 问题在于当您失去连接时,您将失去窗口。在隧道上打开窗口仅适用于短期应用程序,如果您想将桌面(以及其中所有打开的应用程序)从一个客户端带到另一个客户端,则无法使用该方法... - nhed
@nhed,我不知道这是否实际可行,但这是一个想法。至于长期应用程序,也许可以使用“screen”程序? - andho
@andho 的屏幕非常棒,适用于纯文本应用程序... OP 询问的是 X 应用程序... 我来到这个网站的原因是我也在寻找同样的东西,似乎 xrandr 或 xmove 是最接近的东西(xrandr 是更清洁的选项)。 - nhed
@nhed,是的,这也是我遇到的问题。只是想提出这个想法,让更有经验的人把它划掉,而不必让我测试是否可能。 - andho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接