168

VNC を使用して、職場の Linux ワークステーションに接続しています。職場では 1600x1200 で動作する 20 インチのモニターを使用していますが、自宅では解像度が 1440x900 のラップトップを使用しています。 1600x1200 で実行するように設定すると、ラップトップの画面に収まらず、常にスクロールする必要があります。

その場で VNC セッションのサイズを変更する良い方法はありますか?

私の VNC サーバーは、SuSE64 で動作する RealVNC E4.x (正確なバージョンは覚えていません) です。

4

15 に答える 15

171

Real VNCサーバー4.4には、VNCのサイズ変更を可能にするXrandrのサポートが含まれています。次のコマンドでサーバーを起動します。

vncserver -geometry 1600x1200 -randr 1600x1200,1440x900,1024x768

次に、次のサイズでサイズを変更します。

xrandr -s 1600x1200
xrandr -s 1440x900
xrandr -s 1024x768
于 2009-07-05T08:18:58.250 に答える
69

Ubuntu (10.04) に同梱されている vnc4server (4.1.1) にはパッチが適用されており、xrandr を介してオンザフライで解像度を変更することもサポートされていることがわかりました。残念ながら、この機能は文書化されていないため、見つけるのが困難でした。だからここにある...

次のように、複数の「geometry」インスタンスでサーバーを起動します。

vnc4server -geometry 1280x1024 -geometry 800x600

vncviewer のターミナルから ('allow dymanic desktop resizing' を有効にして) xrandr を使用して利用可能なモードを表示します:

xrandr

結果を変更するには、たとえば次を使用します。

xrandr -s 800x600

それでおしまい。

于 2010-10-01T13:47:01.993 に答える
30

LinuxサーバーでTigerVNCを実行しています。これは、基本的なrandrをサポートしています。-randrまたは複数の-geometryオプションを指定せずにvncserverを起動します。

ターミナルでxrandrを実行すると、使用可能なすべての画面解像度が表示されます。

bash> xrandr
 SZ:    Pixels          Physical       Refresh
 0   1920 x 1200   ( 271mm x 203mm )   60
 1   1920 x 1080   ( 271mm x 203mm )   60
 2   1600 x 1200   ( 271mm x 203mm )   60
 3   1680 x 1050   ( 271mm x 203mm )   60
 4   1400 x 1050   ( 271mm x 203mm )   60
 5   1360 x 768    ( 271mm x 203mm )   60
 6   1280 x 1024   ( 271mm x 203mm )   60
 7   1280 x 960    ( 271mm x 203mm )   60
 8   1280 x 800    ( 271mm x 203mm )   60
 9   1280 x 720    ( 271mm x 203mm )   60
*10  1024 x 768    ( 271mm x 203mm )  *60
 11   800 x 600    ( 271mm x 203mm )   60
 12   640 x 480    ( 271mm x 203mm )   60
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none

その後、別の解像度に簡単に切り替えることができます(feは1360x768に切り替えます):

bash> xrandr -s 5

クライアントとしてTightVncビューアを使用していますが、新しい解像度に自動的に適応します。

于 2011-12-05T15:57:55.767 に答える
26

別のポートで別のジオメトリを使用して VNC サーバーを実行するのが最善だと思います。マニュアルページに基づいて試してみます

$vncserver :0 -geometry 1600x1200
$vncserver :1 -geometry 1440x900

その後、職場から 1 つのポートに、自宅から別のポートに接続できます。

編集: 次に、xmove を使用して、2 つの x サーバー間でウィンドウを移動します。

于 2008-08-19T09:36:37.247 に答える
24

この質問が Google で最初に出てきたので、最近のデフォルトである TigerVNC を使用したソリューションを共有したいと思いました。

xrandr表示モード (別名解像度) を選択できますが、モードラインがハードコードされているため 、「2560x1600」や「1600x900」などの追加のモードラインをコードに追加する必要があります。コードを書いた開発者の方がはるかに賢く、ハードコードされたリストは値のサンプルに過ぎないと思います。カスタムモードラインを追加する方法が必要であるという結論に至り、それをman xrandr確認します。

上記の解像度を持つ 2 台のコンピューター間で VNC セッションを共有することが目標であり、VNC サーバーが「1600x900」の解像度を持つコンピューターであると仮定すると、その背景があります。

  1. 物理ディスプレイと一致するジオメトリで VNC セッションを開始します。

    $ vncserver -geometry 1600x900 :1
    
  2. 「2560x1600」のコンピューターで VNC ビューアーを起動し (私は Remmina の方が好みです)、リモート VNC セッションに接続します。

    host:5901
    
  3. VNC セッションに入ったら、ターミナル ウィンドウを起動します。

  4. 新しいジオメトリが VNC セッションで使用できることを確認します。

    $ xrandr
    Screen 0: minimum 32 x 32, current 1600 x 900, maximum 32768 x 32768
    VNC-0 connected 1600x900+0+0 0mm x 0mm
       1600x900      60.00 +
       1920x1200     60.00  
       1920x1080     60.00  
       1600x1200     60.00  
       1680x1050     60.00  
       1400x1050     60.00  
       1360x768      60.00  
       1280x1024     60.00  
       1280x960      60.00  
       1280x800      60.00  
       1280x720      60.00  
       1024x768      60.00  
       800x600       60.00  
       640x480       60.00  
    

    画面がかなり小さいことに気付くでしょう。

  5. 「2560x1600」解像度のモードラインを一覧表示します (ArchLinux wiki の xrandr 記事を参照)。

    $ cvt 2560 1600
    # 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
    Modeline "2560x1600_60.00"  348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync
    

    またはモニターが古い場合は、GTF タイミングを取得します。

    $ gtf 2560 1600 60
    # 2560x1600 @ 60.00 Hz (GTF) hsync: 99.36 kHz; pclk: 348.16 MHz
    Modeline "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656 -HSync +Vsync
    
  6. 現在の VNC セッションに新しいモードラインを追加します。

    $ xrandr --newmode "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656 -HSync +Vsync
    
  7. 上記のxrandr出力では、2 行目の表示名を探します。

    VNC-0 connected 1600x900+0+0 0mm x 0mm
    
  8. 新しいモードラインを現在の VNC 仮想モニターにバインドします。

    $ xrandr --addmode VNC-0 "2560x1600_60.00"
    
  9. これを使って:

    $ xrandr -s "2560x1600_60.00"
    
于 2016-07-28T08:01:37.197 に答える
21

興味深いことに、誰もこれに答えませんでした。TigerVNC で、セッションにログインしているとき。上部のメニュー バーから移動しSystem > Preference > Displayます (リモート サーバーとして Cent OS を使用していました)。解像度のドロップダウンをクリックすると、1080p を含むさまざまな設定が利用可能です。お好きなものをお選びください。それはその場で変わります。

ここに画像の説明を入力

ダイアログが表示されたら、必ず新しい設定を適用してください。それ以外の場合は、Windows の場合と同様に以前の設定に戻ります。

于 2014-05-31T20:32:21.013 に答える
10

皆さん、これは本当に簡単です。

sshpiにログインします

実行する

vncserver -geometry 1200x1600

これにより、新しいセッションが生成されます:1

で vnc クライアントに接続しますipaddress:1

それでおしまい。

于 2017-11-12T17:39:02.420 に答える
6

ネイサンの(受け入れられた)答えに追加する:

解像度のリストを循環したかったのですが、何も表示されませんでした。

function vncNextRes()
{
   xrandr -s $(($(xrandr | grep '^*'|sed 's@^\*\([0-9]*\).*$@\1@')+1)) > /dev/null 2>&1 || \
   xrandr -s 0
}

現在のインデックスを取得し、次のインデックスに進み、エラーが発生すると0に戻ります(つまり終了します)。


編集

xrandrの新しいバージョンと一致するように変更されました(「*」は行末にあり、先頭の解像度識別子はありません)。

function vncNextRes()
{
   xrandr -s $(($(xrandr 2>/dev/null | grep -n '\* *$'| sed 's@:.*@@')-2))  || \
   xrandr -s 0
}
于 2011-07-03T02:08:14.133 に答える
2

おそらく私が投稿した中で最も無知な答えですが、TigerVNC クライアント/ビューアーを使用'Resize remote session to local window'し、オプションの [画面] タブで確認してください。

$%#@ TigerVNC クライアントがリモート vncserver または xrandr または Xvnc または gnome または ... に何を通知するかはわかりませんが、TigerVNC クライアント ウィンドウを変更するとサイズが変更されます。

私のセットアップ:

  • CentOS 6 で実行されている Tiger VNC サーバー。GNOME デスクトップをホストしています。(RHEL 6.6 でも動作します)
  • Tiger VNC Client を搭載した Windows 一部のバージョン。

これにより、クライアントウィンドウのサイズに関係なく解像度が変更されますが、そうではなくzooming、実際の解像度の変更です(xrandr出力で新しい解像度を確認できます)。

xrandrに新しい解像度を追加するためにできる限りのことを試みましたが、役に立たず、常に'xrandr: Failed to get size of gamma for output default'エラーが発生します。

現在動作するバージョン(過去にどのバージョンでも問題はありませんでしたが、最新のものをインストールするだけで問題なくyum install gnome-* tigervnc-server動作します):

OS: RHEL 6.6 (Santiago)
VNC Server:
Name        : tigervnc-server
Arch        : x86_64
Version     : 1.1.0
Release     : 16.el6

# May be this is relevant..
$ xrandr --version
xrandr program version       1.4.0
Server reports RandR version 1.4
$ 

# I start the server using vncserver -geometry 800x600
# Xvnc is started by vncserver with following args:
/usr/bin/Xvnc :1 -desktop plabb13.sgdcelab.sabre.com:1 (sg219898) -auth /login/sg219898/.Xauthority 
-geometry 800x600 -rfbwait 30000 -rfbauth /login/sg219898/.vnc/passwd -rfbport 5901 -fp catalogue:/e
tc/X11/fontpath.d -pn


# I'm running GNOME (installed using sudo yum install gnome-*)
Name        : gnome-desktop
Arch        : x86_64
Version     : 2.28.2
Release     : 11.el6

Name        : gnome-session
Arch        : x86_64
Version     : 2.28.0
Release     : 22.el6

Connect using Tiger 32-bit VNC Client v1.3.1 on Windows 7.
于 2015-02-28T04:06:14.767 に答える
1

Linuxについてはよくわかりませんが、Windowsでは、tightvncがサーバーの解像度の変更を検出し、それに適応します。

したがって、ワークステーションにVNCを接続し、デスクトップ、プロパティを右クリックするのと同じことを実行し、解像度を任意に設定して、それに応じてクライアントのvncウィンドウのサイズを変更できるはずです。

于 2008-08-19T10:32:18.010 に答える
1

一方、既存のウィンドウをあるXサーバーから別のXサーバーに移動する方法がある場合は、問題が解決する可能性があります。

xmoveを使用して、2つの別々のxサーバー間でウィンドウを移動できると思います。したがって、それが機能する場合、これは、解像度を変更するほど簡単ではありませんが、少なくともあなたが望むことを行う方法を提供するはずです。

于 2008-08-19T13:07:41.220 に答える
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と同様のSOの下ですべてのディスプレイデバイスのためのより良いソリューションが必要です

于 2012-07-25T11:19:37.193 に答える
0

私の知る限り、VNC は単なる「モニター ミラーリング」アプリケーションであるため、VNC を使用してクライアントの解像度を変更する方法はありません。

ただし、 TightVNC (VNC クライアントおよびサーバー アプリケーション) はクライアント側で画面のサイズを変更できます。小さすぎるフォント サイズを使用しない場合は、これでうまくいくはずです。VNC は、理論的には異なる VNC アプリケーション間で互換性があるはずです。

于 2008-08-19T07:13:31.733 に答える
-3

それはあなたのウィンドウマネージャー次第だと思います。

私はWindowsユーザーなので、これは間違った推測かもしれませんが、 Linuxマシンで実行されているX-Serverと呼ばれるものはありません-少なくともVNCの興味深いターゲットである可能性があります-"で接続できますXクライアント」?

VNCは、画面に表示されているすべてのものを取得し、「ネットワークを介してトンネリング」します。私が完全に間違っていなければ、「X」プロトコルはクライアントのデスクトップ解像度を使用する機会を与えるはずです。

ウィキペディアのX-Serverを試してみてください。大まかな概要がわかるかもしれません。

于 2008-08-19T07:54:11.040 に答える