Frage

Ich verwende VNC-Verbindung zu einer Linux-workstation bei der Arbeit.Bei der Arbeit habe ich einen 20" - monitor, das läuft auf 1600x1200, während zu Hause benutze ich meinen laptop mit einer Auflösung von 1440x900.Wenn ich den vncserver laufen an 1440x900 ich verpassen eine Menge Platz auf meinem monitor, während, wenn ich es ausführen, bei 1600x1200 es passt nicht auf den laptop-Bildschirm, und ich muss scrollen, es werden alle die Zeit.

Gibt es eine gute Möglichkeit, um die Größe einer VNC-Sitzung on-the-fly?

Mein VNC-server RealVNC E4.x (ich erinnere mich nicht an die genaue version) läuft auf SuSE64.

War es hilfreich?

Lösung

Real VNC server 4.4 bietet Unterstützung für Xrandr, die es erlaubt die Größe des VNC.Starten Sie den server mit:

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

Ändern Sie dann die Größe mit:

xrandr -s 1600x1200
xrandr -s 1440x900
xrandr -s 1024x768

Andere Tipps

Fand heraus, dass die vnc4server (4.1.1) im Lieferumfang von Ubuntu (10.04) ist durch Patches angepasst, auch Unterstützung ändern der Auflösung on-the-fly via xrandr.Leider ist das feature war schwer zu finden, weil Sie ohne Papiere.Also hier ist es...

Starten Sie den server mit mehreren "geometrie" - Instanzen, wie:

vnc4server -geometry 1280x1024 -geometry 800x600

Von einem terminal in einem vncviewer (mit:'erlauben Sie dynamische desktop-Größenänderung' aktiviert ist) verwenden xrandr zur Anzeige der verfügbaren Modi:

xrandr

ändern Sie die auflösende, zum Beispiel verwenden:

xrandr -s 800x600

Das ist es.

Ich bin mit TigerVNC auf meinem Linux-server, der die grundlegenden randr support.Ich habe gerade start vncserver ohne -randr-oder multiple-geometrie-Optionen.

Wenn ich mit xrandr in einem terminal, es zeigt alle verfügbaren Bildschirmauflösungen:

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

Ich kann dann leicht zu wechseln, um eine andere Auflösung (f.e.wechseln zu 1360x768):

bash> xrandr -s 5

Ich verwende TightVnc viewer als client und es passt sich automatisch auf die neue Auflösung.

Ich denke, Ihre beste beste ist, um den VNC-server mit einer anderen geometrie auf einen anderen port.Ich würde versuchen, auf der Grundlage der man-Seite

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

Dann können Sie die Verbindung von der Arbeit aus zu einem Hafen und von zu Hause aus zu einem anderen.

Edit:Dann nutzen Sie xmove zum verschieben von Fenstern zwischen den beiden x-Servern.

Interessanterweise niemand antwortete dieser.In TigerVNC, wenn Sie in der Sitzung angemeldet.Gehen Sie zu System > Preference > Display in der oberen Menüleiste ( ich war mit Cent OS als meine remote-Server).Klicken Sie auf die Auflösung drop unten, es gibt verschiedene Einstellungen zur Verfügung, einschließlich 1080p.Wählen Sie die, die Sie mögen.Es wird sich ändern on the fly.

enter image description here

Stellen Sie sicher, Wenden Sie die neue Einstellung, wenn sich ein dialog, der Sie dazu aufgefordert werden.Sonst wird es wieder zurück zu der vorigen Einstellung, genau wie in Windows

Als diese Frage kommt zunächst auf Google ich dachte, ich würde teilen einer Lösung mit TigerVNC das ist der Standard in diesen Tagen.

xrandr ermöglicht die Auswahl der display-Modi (ein.k.eine Auflösungen) jedoch aufgrund modelines sein hart codiert zusätzliche modeline wie "2560x1600" oder "1600x900" müssten werden Hinzugefügt in die code.Ich denke, die Entwickler haben den code geschrieben sind viel klüger und hart codierte Liste ist nur ein Beispiel von Werten.Es führt zu dem Schluss, dass es muss eine Möglichkeit zum hinzufügen von benutzerdefinierten modelines und man xrandr bestätigt es.

Mit diesem hintergrund, wenn das Ziel ist, zu teilen eine VNC-Verbindung zwischen zwei Computer mit den oben genannten Lösungen und die Annahme, dass der VNC-server ist der computer mit der Auflösung von "1600x900":

  1. Starten Sie eine VNC-Sitzung mit einer geometrie, passend zu den physischen display:

    $ vncserver -geometry 1600x900 :1
    
  2. Auf der "2560x1600" computer starten Sie den VNC-viewer (ich bevorzuge Remmina) und die Verbindung zum remote-VNC Sitzung:

    host:5901
    
  3. Einmal in der VNC-Sitzung starten Sie ein terminal-Fenster.

  4. Bestätigen Sie, dass die neue geometrie ist in der VNC-Sitzung:

    $ 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  
    

    und Sie werden bemerken, dass der Bildschirm ziemlich klein.

  5. Liste der modeline ist (siehe xrandr Artikel im ArchLinux-wiki) für die "2560x1600" Auflösung:

    $ 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
    

    oder, wenn der monitor ist alt, Holen Sie sich die GTF timings:

    $ 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. Fügen Sie die neue modeline die aktuelle VNC-Sitzung:

    $ xrandr --newmode "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656 -HSync +Vsync
    
  7. In der oben xrandr Ausgangs-look für die display-Namen der zweiten Linie:

    VNC-0 connected 1600x900+0+0 0mm x 0mm
    
  8. Binden Sie die neue modeline die aktuelle VNC-virtual-monitor:

    $ xrandr --addmode VNC-0 "2560x1600_60.00"
    
  9. Verwenden Sie es:

    $ xrandr -s "2560x1600_60.00"
    

Jungs das ist wirklich einfach.

Anmeldung via ssh in Ihre pi

ausführen

vncserver -geometry 1200x1600

Dies erzeugt eine neue Sitzung :1

verbinden Sie sich mit Ihrem vnc-client auf ipaddress:1

Das ist es.

Hinzufügen zu Nathan, der (akzeptierte) Antwort:

Ich wollte zum Durchlaufen der Liste der Auflösungen, aber nicht sehen, nichts für Sie:

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

Es wird der aktuelle index, Schritte, um die nächsten und Zyklen auf 0 zurück, bei Fehlern (d.h.Ende)


BEARBEITEN

Angepasst, wenn Sie eine neuere version von xrandr ("*" ist am Ende der Zeile und keine führende Auflösung identifier).

function vncNextRes()
{
   xrandr -s $(($(xrandr 2>/dev/null | grep -n '\* *$'| sed 's@:.*@@')-2))  || \
   xrandr -s 0
}

Ich bin mir nicht sicher über linux, aber unter windows ist tightvnc erkennt und die Anpassung an die änderung der Auflösung auf dem server.

So sollten Sie in der Lage sein zu VNC in der workstation, das gleiche mit der rechten Maustaste auf den desktop, Eigenschaften, setzen Sie Auflösung auf, was auch immer, und haben Ihre client-vnc-Fenster Größe ändern sich entsprechend.

Auf der anderen Seite, wenn es einen Weg gibt, um verschieben eines vorhandenen Fensters von einem X-server zu einem anderen, könnten lösen das problem.

Ich denke, Sie verwenden können xmove verschieben von Fenstern zwischen zwei separaten x-Server.Also, wenn es funktioniert, sollte dies zumindest geben Sie einen Weg, das zu tun, was Sie wollen, wenn auch nicht so einfach wie das ändern der Auflösung.

Vielleicht die ignorante Antwort, die ich gepostet habe, aber hier geht:Verwenden TigerVNC-client/viewer und überprüfen 'Resize remote session to local window' unter Bildschirm die Registerkarte Optionen.

Ich weiß nicht, was die $%#@ TigerVNC-client erzählt remote vncserver oder xrandr oder Xvnc oder gnome oder ...aber es passt, wenn ich den TigerVNC-Client-Fenster.

Mein setup:

  • Tiger-VNC-Server unter CentOS 6.Hosting-GNOME-desktop.(Funktioniert mit RHEL 6.6 zu)
  • Windows eine version mit Tiger-VNC-Client.

Mit dieser änderung der Auflösung an die Größe des client-Fensters, egal was es ist, und es ist nicht zooming, es ist die tatsächliche Auflösung ändern (ich kann sehen, dass die neue Auflösung in xrandr-Ausgabe).

Ich habe versucht, was ich konnte, um hinzufügen eine neue resolution, um die xrandr, aber ohne Erfolg, immer am Ende mit 'xrandr: Failed to get size of gamma for output default' Fehler.

Versionen, mit denen es funktioniert für mich jetzt (obwohl ich habe nicht hatte Probleme mit anderen Versionen in der Vergangenheit, die ich nur installieren Sie das neueste über yum install gnome-* tigervnc-server und das funktioniert gut):

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.

Lösung von @omiday arbeitete für mich in Xvnc TigerVNC 1.1.0, so dass ich condensed es in einem einzigen bash-Funktion vncsize x y.Verwenden Sie es wie folgt: vncsize 1400 1000.Es wird davon ausgegangen, dass xrandr Berichte VNC-output-name als Standard.

function vncsize {
    local x=$1 y=$2
    local mode
    if mode=$(cvt "$x" "$y" 2>/dev/null)
    then
        if [[ $mode =~ "Modeline (.*)$" ]]
        then
            local newMode=${BASH_REMATCH[1]//\"/}
            local modeName=${newMode%% *}
            local newSize=( ${modeName//[\"x_]/ } )
            xrandr --newmode $newMode
            xrandr --addmode default "$modeName"
            xrandr --size "${newSize[0]}x${newSize[1]}" &&
                return 0
        else
            echo "Unable to parse modeline for ($x $y) from $mode"
            return 2
        fi
    else
        echo "\`$x $y' is not a valid X Y pair"
        return 1
    fi
}

Soweit ich weiß, gibt es keine Möglichkeit, ändern Sie die client-Auflösung nur mit VNC ist es nur ein "Bildschirm spiegeln" - Anwendung.

TightVNC jedoch (das ist ein VNC-client und-server-Anwendung) können die Größe der Bildschirm auf der client-Seite, alsomacht alles ein wenig kleiner (ähnlich Bild Größenänderung Techniken in Grafik-Programmen).Das sollte funktionieren, wenn Sie nicht zu kleine Schriftgrößen.VNC theoretisch kompatibel zwischen verschiedenen VNC-Anwendungen.

Ich habe eine einfache Idee, so etwas wie dieses:

#!/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

Nun, ich brauche eine bessere Lösung für alle Anzeige-Geräte unter Linux und Similars S. O

Ich denke, dass hängt vom verwendeten window-manager.

Ich bin ein windows-Benutzer sind, so könnte dies eine falsche Vermutung, aber:Gibt es nicht etwas genannt X-Server läuft auf linux-Maschinen, die - zumindest auf diejenigen, die interessant sein könnten Ziele für die VNC -, die können Sie verbinden mit "X-Clients"?

VNC nimmt einfach alles auf dem Bildschirm und "Tunnel über das Netzwerk".Wenn ich mich nicht völlig falsch, dann die "X" - Protokoll sollte Ihnen die chance zu verwenden Ihre client-desktop-Auflösung.

Geben X-Server auf Wikipedia ausprobieren, dass könnte geben Ihnen einen groben überblick.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top