tightvnc - ultravnc linux
Cambiar la resoluciĆ³n de una sesiĆ³n de VNC en Linux (15)
Por otro lado, si hay una forma de mover una ventana existente de un servidor X a otro, eso podría resolver el problema.
Creo que puedes usar xmove para mover ventanas entre dos servidores x por separado. Entonces, si funciona, al menos debería darle la posibilidad de hacer lo que quiera, aunque no tan fácilmente como cambiar la resolución.
Uso VNC para conectarme a una estación de trabajo Linux en el trabajo. En el trabajo tengo un monitor de 20 "que funciona a 1600x1200, mientras que en mi casa uso mi laptop con una resolución de 1440x900. Si configuro el vncserver para que funcione a 1440x900, pierdo mucho espacio en mi monitor, mientras que si configurarlo para que funcione a 1600x1200 no cabe en la pantalla de la computadora portátil, y tengo que desplazarme todo el tiempo.
¿Hay alguna buena manera de cambiar el tamaño de una sesión de VNC sobre la marcha?
Mi servidor VNC es RealVNC E4.x (no recuerdo la versión exacta) que se ejecuta en SuSE64.
Añadiendo a la respuesta de Nathan (aceptada):
Quería pasar por la lista de resoluciones pero no vi nada por ella:
function vncNextRes()
{
xrandr -s $(($(xrandr | grep ''^*''|sed ''s@^/*/([0-9]*/).*$@/1@'')+1)) > /dev/null 2>&1 || /
xrandr -s 0
}
Obtiene el índice actual, pasa al siguiente y vuelve a cero en el error (es decir, finaliza)
EDITAR
Modificado para que coincida con una versión posterior de xrandr ("*" está al final de la línea y no tiene un identificador de resolución principal).
function vncNextRes()
{
xrandr -s $(($(xrandr 2>/dev/null | grep -n ''/* *$''| sed ''s@:.*@@'')-2)) || /
xrandr -s 0
}
Chicos esto es realmente simple.
inicia sesión a través de ssh
en tu pi
ejecutar
vncserver -geometry 1200x1600
Esto generará una nueva sesión :1
conéctese con su cliente de vnc en ipaddress:1
Eso es.
Como esta pregunta surge primero en Google, pensé que compartiría una solución usando TigerVNC, que es la predeterminada en estos días.
xrandr
permite seleccionar los modos de visualización (también conocido como resoluciones), sin embargo, debido a que las modelos están codificadas, cualquier línea de modelado adicional como "2560x1600" o "1600x900" debería agregarse al código . Creo que los desarrolladores que escribieron el código son mucho más inteligentes y la lista codificada es solo una muestra de valores. Lleva a la conclusión de que debe haber una manera de agregar modelos personalizados y man xrandr
confirma.
Con ese fondo si el objetivo es compartir una sesión de VNC entre dos computadoras con las resoluciones anteriores y suponiendo que el servidor VNC es la computadora con la resolución de "1600x900":
Inicie una sesión de VNC con una geometría que coincida con la pantalla física:
$ vncserver -geometry 1600x900 :1
En la computadora "2560x1600", inicie el visor de VNC (prefiero Remmina) y conéctese a la sesión remota de VNC:
host:5901
Una vez dentro de la sesión de VNC, inicie una ventana de terminal.
Confirme que la nueva geometría esté disponible en la sesión de 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
y notarás que la pantalla es bastante pequeña.
Haga una lista de la línea de modo (consulte el artículo de xrandr en la wiki de ArchLinux) para la resolución "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
o si el monitor es antiguo, obtenga los tiempos de 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
Agregue la nueva línea de modo a la sesión actual de VNC:
$ xrandr --newmode "2560x1600_60.00" 348.16 2560 2752 3032 3504 1600 1601 1604 1656 -HSync +Vsync
En la salida
xrandr
anterior, busque el nombre para mostrar en la segunda línea:VNC-0 connected 1600x900+0+0 0mm x 0mm
Enlace la nueva línea de modelado al monitor virtual VNC actual:
$ xrandr --addmode VNC-0 "2560x1600_60.00"
Úselo:
$ xrandr -s "2560x1600_60.00"
Creo que eso depende de tu administrador de ventanas.
Soy un usuario de Windows, por lo que podría ser una suposición incorrecta, pero: ¿no hay algo llamado X-Server ejecutándose en máquinas Linux, al menos en las que podrían ser objetivos interesantes para VNC, con las que se puede conectar? X-Clients "?
VNC simplemente toma todo lo que está en pantalla y lo "canaliza a través de su red". Si no estoy totalmente equivocado, entonces el protocolo "X" debería darle la oportunidad de usar la resolución de escritorio de su cliente.
Prueba X-Server en Wikipedia, que podría darte una descripción general aproximada.
Creo que lo mejor es ejecutar el servidor VNC con una geometría diferente en un puerto diferente. Lo intentaría basado en la página del manual
$vncserver :0 -geometry 1600x1200 $vncserver :1 -geometry 1440x900
Luego puede conectarse desde el trabajo a un puerto y de su hogar a otro.
Editar: Luego use xmove para mover ventanas entre los dos servidores x.
Curiosamente, nadie respondió esto. En TigerVNC, cuando inicias sesión en la sesión. Vaya a System > Preference > Display
en la barra de menú superior (estaba usando Cent OS como mi Servidor remoto). Haga clic en el menú desplegable de resolución, hay varias configuraciones disponibles, incluyendo 1080p. Seleccione el que le gusta. Cambiará sobre la marcha.
Asegúrese de aplicar la nueva configuración cuando se solicite un diálogo. De lo contrario, volverá a la configuración anterior como en Windows
Descubrí que vnc4server (4.1.1) incluido con Ubuntu (10.04) está parcheado para que también sea compatible con cambiar la resolución sobre la marcha a través de xrandr. Lamentablemente, la función fue difícil de encontrar porque no está documentada. Asi que aqui esta...
Inicie el servidor con múltiples instancias de ''geometría'', como:
vnc4server -geometry 1280x1024 -geometry 800x600
Desde una terminal en un vncviewer (con: ''permitir el cambio de tamaño de escritorio dymanic'') use xrandr para ver los modos disponibles:
xrandr
para cambiar la resultado, por ejemplo use:
xrandr -s 800x600
Eso es.
Estoy ejecutando TigerVNC en mi servidor Linux, que tiene soporte básico de randr . Acabo de iniciar vncserver sin ninguna opción -randr o multiple -geometry.
Cuando ejecuto xrandr en un terminal, muestra todas las resoluciones de pantalla 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
Luego puedo cambiar fácilmente a otra resolución (fe cambiar a 1360x768):
bash> xrandr -s 5
Estoy usando el visor TightVnc como cliente y se adapta automáticamente a la nueva resolución.
La solución de @omiday funcionó para mí en Xvnc TigerVNC 1.1.0, así que la condensé en una sola función bash vncsize xy . Úselo así: vncsize 1400 1000 . Supone que xrandr informa el nombre de salida de VNC por defecto .
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
}
No estoy seguro acerca de Linux, pero bajo Windows, tightvnc detectará y se adaptará a los cambios de resolución en el servidor.
Por lo tanto, debería poder ingresar a VNC en la estación de trabajo, hacer el equivalente al clic derecho en el escritorio, propiedades, establecer la resolución a lo que sea, y hacer que su ventana vnc del cliente cambie de tamaño según corresponda.
Por lo que yo sé, no hay forma de cambiar la resolución del cliente simplemente usando VNC, ya que es solo una aplicación de "copia de espejo del monitor".
Sin embargo, TightVNC (que es una aplicación de cliente y servidor de VNC) puede cambiar el tamaño de la pantalla en el lado del cliente, es decir, hacer que todo sea un poco más pequeño (similar a las técnicas de cambio de tamaño de imagen en programas de gráficos). Eso debería funcionar si no usa tamaños de letra demasiado pequeños. VNC debería ser teóricamente compatible entre diferentes aplicaciones de VNC.
Real VNC server 4.4 incluye soporte para Xrandr, que permite redimensionar el VNC. Comience el servidor con:
vncserver -geometry 1600x1200 -randr 1600x1200,1440x900,1024x768
Luego cambie el tamaño con:
xrandr -s 1600x1200
xrandr -s 1440x900
xrandr -s 1024x768
Tal vez la respuesta más ignorante que he publicado, pero aquí va: use el cliente / visor TigerVNC y marque ''Resize remote session to local window''
en la pestaña Pantalla de opciones.
No sé lo que el cliente $% # @ TigerVNC le dice a vncserver o xrandr o Xvnc o gnome o ... pero cambia de tamaño cuando cambio la ventana del Cliente TigerVNC.
Mi configuración:
- Servidor Tiger VNC ejecutándose en CentOS 6. Alojamiento de escritorio GNOME. (Funciona con RHEL 6.6 también)
- Windows alguna versión con Tiger VNC Client.
Con esto la resolución cambia para ajustarse al tamaño de la ventana del cliente, sin importar de qué se trate, y no está zooming
, su resolución actual cambia (puedo ver la nueva resolución en la salida de xrandr).
Intenté todo lo posible para agregar una nueva resolución a xrandr, pero fue en vano, siempre ''xrandr: Failed to get size of gamma for output default''
.
Versiones con las que funciona ahora (aunque no he tenido problemas con CUALQUIER versión en el pasado, simplemente instalo la última usando yum install gnome-* tigervnc-server
y funciona 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.
Tengo una idea simple, algo como esto:
#!/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
Bueno, necesito una mejor solución para todos los dispositivos de visualización en Linux y Similars SO