Question

J'utilise VNC pour me connecter à un poste de travail Linux au travail.Au travail, j'ai un moniteur 20" qui fonctionne en 1600x1200, tandis qu'à la maison, j'utilise mon ordinateur portable avec une résolution de 1440x900.Si je configure le serveur vnc pour qu'il fonctionne à 1 440 x 900, je manque beaucoup d'espace sur mon moniteur, tandis que si je le configure pour qu'il fonctionne à 1 600 x 1 200, il ne tient pas sur l'écran de l'ordinateur portable et je dois le faire défiler tout le temps.

Existe-t-il un bon moyen de redimensionner une session VNC à la volée ?

Mon serveur VNC est RealVNC E4.x (je ne me souviens pas de la version exacte) fonctionnant sur SuSE64.

Était-ce utile?

La solution

Le vrai serveur VNC 4.4 inclut la prise en charge de Xrandr, qui permet de redimensionner le VNC.Démarrez le serveur avec :

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

Puis redimensionnez avec :

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

Autres conseils

J'ai découvert que le vnc4server (4.1.1) fourni avec Ubuntu (10.04) est corrigé pour prendre également en charge la modification de la résolution à la volée via xrandr.Malheureusement, cette fonctionnalité était difficile à trouver car elle n'est pas documentée.Alors voilà...

Démarrez le serveur avec plusieurs instances de « géométrie », comme :

vnc4server -geometry 1280x1024 -geometry 800x600

Depuis un terminal dans un vncviewer (avec :'autoriser le redimensionnement dynamique du bureau' activé), utilisez xrandr pour afficher les modes disponibles :

xrandr

pour changer le résultat, utilisez par exemple :

xrandr -s 800x600

C'est ça.

je suis entrain de courir TigreVNC sur mon serveur Linux, qui a des fonctionnalités de base Randr soutien.Je viens de démarrer vncserver sans aucune option -randr ou plusieurs -geometry.

Lorsque j'exécute xrandr dans un terminal, il affiche toutes les résolutions d'écran disponibles :

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

Je peux alors facilement passer à une autre résolution (par ex.passer à 1360x768) :

bash> xrandr -s 5

J'utilise la visionneuse TightVnc comme client et elle s'adapte automatiquement à la nouvelle résolution.

Je pense que le mieux est d'exécuter le serveur VNC avec une géométrie différente sur un port différent.J'essaierais en me basant sur page de manuel

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

Vous pouvez ensuite vous connecter du travail à un port et de la maison à un autre.

Modifier:Utilisez ensuite xmove pour déplacer les fenêtres entre les deux serveurs X.

Curieusement, personne n'a répondu à cette question.Dans TigerVNC, lorsque vous êtes connecté à la session.Aller à System > Preference > Display dans la barre de menu supérieure (j'utilisais Cent OS comme serveur distant).Cliquez sur le menu déroulant de résolution, différents paramètres sont disponibles, dont 1080p.Sélectionnez celui que vous aimez.Cela changera à la volée.

enter image description here

Assurez-vous d'appliquer le nouveau paramètre lorsqu'une boîte de dialogue vous est demandée.Sinon, il reviendra au paramètre précédent, comme sous Windows.

Comme cette question apparaît en premier sur Google, j'ai pensé partager une solution utilisant TigerVNC, qui est la valeur par défaut de nos jours.

xrandr permet de sélectionner les modes d'affichage (aka résolutions) cependant en raison de la modélines codé en durToute modèle supplémentaire telle que "2560x1600" ou "1600x900" devrait être ajouté dans le code.Je pense que les développeurs qui ont écrit le code sont beaucoup plus intelligents et que la liste codée en dur n'est qu'un échantillon de valeurs.Cela conduit à la conclusion qu'il doit y avoir un moyen d'ajouter des modélines personnalisées et man xrandr le confirme.

Avec cet arrière-plan si l'objectif est de partager une session VNC entre deux ordinateurs avec les résolutions ci-dessus et en supposant que le serveur VNC est l'ordinateur avec la résolution de "1600x900":

  1. Démarrez une session VNC avec une géométrie correspondant à l'affichage physique :

    $ vncserver -geometry 1600x900 :1
    
  2. Sur l'ordinateur "2560x1600", démarrez la visionneuse VNC (je préfère Remmina) et connectez-vous à la session VNC distante:

    host:5901
    
  3. Une fois dans la session VNC, démarrez une fenêtre de terminal.

  4. Confirmez que la nouvelle géométrie est disponible dans la session 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  
    

    et vous remarquerez que l'écran est assez petit.

  5. Énumérez la modéline (voir l'article Xrandr dans Archlinux Wiki) pour la résolution "2560x1600":

    $ 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
    

    ou si le moniteur est vieux, obtenez les horaires 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. Ajoutez la nouvelle ligne de mode à la session VNC actuelle :

    $ xrandr --newmode "2560x1600_60.00"  348.16  2560 2752 3032 3504  1600 1601 1604 1656 -HSync +Vsync
    
  7. Au dessus xrandr Sortie Recherchez le nom d'affichage sur la deuxième ligne:

    VNC-0 connected 1600x900+0+0 0mm x 0mm
    
  8. Liez la nouvelle ligne de mode au moniteur virtuel VNC actuel :

    $ xrandr --addmode VNC-0 "2560x1600_60.00"
    
  9. Utilise le:

    $ xrandr -s "2560x1600_60.00"
    

Les gars, c'est vraiment simple.

connectez-vous via ssh dans ton pi

exécuter

vncserver -geometry 1200x1600

Cela générera une nouvelle session :1

connectez-vous avec votre client vnc à ipaddress:1

C'est ça.

Ajout à la réponse (acceptée) de Nathan :

Je voulais parcourir la liste des résolutions mais je n'ai rien vu pour cela :

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

Il obtient l'index actuel, passe au suivant et revient à 0 en cas d'erreur (c'est-à-direfin)


MODIFIER

Modifié pour correspondre à une version ultérieure de xrandr ("*" est en fin de ligne et sans identifiant de résolution en tête).

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

Je ne suis pas sûr de Linux, mais sous Windows, Tightvnc détectera et s'adaptera aux changements de résolution sur le serveur.

Vous devriez donc pouvoir connecter VNC au poste de travail, faire l'équivalent d'un clic droit sur le bureau, les propriétés, définir la résolution sur n'importe quelle valeur et demander à la fenêtre vnc de votre client de se redimensionner en conséquence.

D'un autre côté, s'il existe un moyen de déplacer une fenêtre existante d'un serveur X à un autre, cela pourrait résoudre le problème.

Je pense que tu peux utiliser xmove pour déplacer les fenêtres entre deux serveurs X distincts.Donc, si cela fonctionne, cela devrait au moins vous donner un moyen de faire ce que vous voulez, mais pas aussi facilement que de changer la résolution.

Peut-être la réponse la plus ignorante que j'ai publiée, mais voici :Utilisez le client/visualiseur TigerVNC et vérifiez 'Resize remote session to local window' sous l'onglet Écran des options.

Je ne sais pas ce que le client $%#@ TigerVNC dit à vncserver distant ou xrandr ou Xvnc ou gnome ou...mais il se redimensionne lorsque je change la fenêtre du client TigerVNC.

Ma configuration :

  • Serveur Tiger VNC fonctionnant sur CentOS 6.Hébergement du bureau GNOME.(Fonctionne également avec RHEL 6.6)
  • Windows une version avec Tiger VNC Client.

Avec cela, la résolution change pour s'adapter à la taille de la fenêtre client, quelle qu'elle soit, et ce n'est pas le cas. zooming, c'est un changement de résolution réel (je peux voir la nouvelle résolution dans la sortie xrandr).

J'ai essayé tout ce que j'ai pu pour ajouter une nouvelle résolution au xrandr, mais en vain, je me retrouve toujours avec 'xrandr: Failed to get size of gamma for output default' erreur.

Versions avec lesquelles cela fonctionne pour moi en ce moment (même si je n'ai eu aucun problème avec AUCUNE version dans le passé, j'installe simplement la dernière en utilisant yum install gnome-* tigervnc-server et ça marche bien) :

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.

La solution de @omiday a fonctionné pour moi dans Xvnc TigerVNC 1.1.0, je l'ai donc condensée en une seule fonction bash taille vnc x y.Utilisez-le comme ceci : taille vnc 1400 1000.Cela suppose que xrandr signale le nom de la sortie VNC comme défaut.

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
}

Pour autant que je sache, il n'y a aucun moyen de modifier la résolution du client simplement en utilisant VNC, car il s'agit simplement d'une application de « mise en miroir de moniteurs ».

SerréVNC cependant (qui est une application client et serveur VNC) peut redimensionner l'écran côté client, c'est-à-direrendre tout un peu plus petit (similaire aux techniques de redimensionnement d'image dans les programmes graphiques).Cela devrait fonctionner si vous n'utilisez pas des tailles de police trop petites.VNC devrait théoriquement être compatible entre différentes applications VNC.

J'ai une idée simple, quelque chose comme ceci :

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

Eh bien, j'ai besoin d'une meilleure solution pour tous les périphériques d'affichage sous Linux et similaires S.O.

Je pense que cela dépend de votre gestionnaire de fenêtres.

Je suis un utilisateur Windows, donc c'est peut-être une mauvaise supposition, mais :N'y a-t-il pas quelque chose qui s'appelle Serveur X fonctionnant sur des machines Linux - du moins sur celles qui pourraient être des cibles intéressantes pour VNC - auxquelles vous pouvez vous connecter avec des "X-Clients" ?

VNC prend simplement tout ce qui est à l'écran et le "transmet à travers votre réseau".Si je ne me trompe pas totalement, le protocole "X" devrait vous donner la possibilité d'utiliser la résolution du bureau de votre client.

Donner Serveur X sur Wikipédia, essayez-le, cela pourrait vous donner un aperçu approximatif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top