Изменение разрешения сеанса VNC в Linux
Я использую VNC для подключения к рабочей станции Linux на работе. На работе у меня 20-дюймовый монитор, который работает на 1600x1200, а дома я использую свой ноутбук с разрешением 1440x900.
Если я установил vncserver на 1440x900, я пропустил много места на моем мониторе, тогда как если бы я установил его на 1600x1200, он не поместился на экране ноутбука, и я должен прокручивать его все время.
Есть ли хороший способ изменить размер сеанса VNC на лету?
Мой VNC-сервер - это RealVNC E4.x(я не помню точной версии), запущенного на SuSE64.
Ответы
Ответ 1
Real VNC server 4.4 включает поддержку Xrandr, которая позволяет изменять размер VNC. Запустите сервер с помощью
vncserver -geometry 1600x1200 -randr 1600x1200,1440x900,1024x768
Затем измените размер с помощью:
xrandr -s 1600x1200
xrandr -s 1440x900
xrandr -s 1024x768
Ответ 2
Обнаружено, что vnc4server (4.1.1), поставляемый с Ubuntu (10.04), исправлен, чтобы также поддерживать изменение разрешения "на лету" через xrandr. К сожалению, эту функцию трудно найти, потому что она недокументирована. Итак, вот оно...
Запустите сервер с несколькими экземплярами "geometry", например:
vnc4server -geometry 1280x1024 -geometry 800x600
От терминала в vncviewer (с разрешенным разрешением dymanic desktop resizing) используйте xrandr для просмотра доступных режимов:
xrandr
чтобы изменить результирование, например, используйте:
xrandr -s 800x600
Вот оно.
Ответ 3
Я думаю, что лучше всего запустить сервер VNC с другой геометрией на другом порту. Я попытался бы на основе man page
$vncserver :0 -geometry 1600x1200
$vncserver :1 -geometry 1440x900
Затем вы можете подключиться с работы на один порт и из дома в другой.
Изменить: Затем используйте xmove для перемещения окон между двумя x-серверами.
Ответ 4
Я запускаю TigerVNC на моем Linux-сервере, который имеет базовую поддержку randr.
Я просто запускаю vncserver без параметров -randr или multiple-geometry.
Когда я запускаю 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
Затем я могу легко переключиться на другое разрешение (например, переключиться на 1360x768):
bash> xrandr -s 5
Я использую TightVnc viewer как клиент и автоматически адаптируется к новому разрешению.
Ответ 5
Интересно, никто на это не ответил. В TigerVNC, когда вы вошли в сеанс. Перейдите в System > Preference > Display
из верхней панели меню (я использовал Cent OS в качестве моего удаленного сервера). Нажмите на раскрывающееся разрешение, доступны различные настройки, включая 1080p. Выберите тот, который вам нравится. Он будет меняться "на лету".
![enter image description here]()
Убедитесь, что вы применили новый параметр при появлении диалогового окна. В противном случае он вернется к предыдущим настройкам, как в Windows
Ответ 6
Добавление к ответу Натана (принятый):
Я хотел перебирать список разрешений, но ничего не видел для него:
function vncNextRes()
{
xrandr -s $(($(xrandr | grep '^*'|sed '[email protected]^\*\([0-9]*\).*[email protected]\[email protected]')+1)) > /dev/null 2>&1 || \
xrandr -s 0
}
Он получает текущий индекс, переходит к следующему и циклически возвращается к 0 при ошибке (т.е. в конце)
ИЗМЕНИТЬ
Изменено для соответствия более поздней версии xrandr ( "*" находится в конце строки и не имеет идентификатора ведущего разрешения).
function vncNextRes()
{
xrandr -s $(($(xrandr 2>/dev/null | grep -n '\* *$'| sed '[email protected]:.*@@')-2)) || \
xrandr -s 0
}
Ответ 7
Как только этот вопрос возникает в Google, я решил поделиться с TigerVNC решением, которое по умолчанию в настоящее время.
xrandr
позволяет выбирать режимы отображения (разрешения a.k.a)
из-за моделирования, hard
закодированы
любой дополнительный модельный ряд, такой как "2560x1600" или "1600x900",
be добавлен в
код. я
подумайте, что разработчики, которые написали код, намного умнее и сложны
кодированный список - всего лишь образец значений. Это приводит к выводу, что
должен быть способ добавить пользовательские модели и man xrandr
подтверждает
он.
С этим фоном, если целью является обмен сеансом VNC между двумя
компьютеров с вышеупомянутыми разрешениями и предполагая, что VNC-сервер
компьютер с разрешением "1600x900":
-
Запустите сеанс VNC с геометрией, соответствующей физическому дисплею:
$ vncserver -geometry 1600x900 :1
-
На компьютере "2560x1600" запустите средство просмотра VNC (я предпочитаю
Remmina) и подключиться к удаленному VNC
сессия:
host:5901
-
Как только внутри сеанса VNC запустите окно терминала.
-
Подтвердите, что новая геометрия доступна в сеансе 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
и вы заметите, что экран довольно маленький.
-
Перечислите модель (см. статью xrandr в вики ArchLinux) для
разрешение "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
или если старый монитор получает тайминги 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
-
Добавьте новую модель в текущий сеанс VNC:
$ xrandr --newmode "2560x1600_60.00" 348.16 2560 2752 3032 3504 1600 1601 1604 1656 -HSync +Vsync
-
В приведенном выше выражении xrandr
найдите отображаемое имя на втором
строка:
VNC-0 connected 1600x900+0+0 0mm x 0mm
-
Свяжите новую модель с текущим виртуальным монитором VNC:
$ xrandr --addmode VNC-0 "2560x1600_60.00"
-
Используйте его:
$ xrandr -s "2560x1600_60.00"
Ответ 8
Я не уверен в Linux, но под окнами tightvnc будет обнаруживать и адаптировать к изменениям разрешения на сервере.
Таким образом, вы должны иметь возможность VNC на рабочей станции, выполнять эквивалент щелчка правой кнопкой мыши на рабочем столе, свойствах, устанавливать разрешение на все, и иметь собственное окно vnc вашего клиента соответственно.
Ответ 9
С другой стороны, если есть способ переместить существующее окно с одного X-сервер другому, что может решить проблема.
Я думаю, вы можете использовать xmove для перемещения окон между двумя отдельными x-серверами. Поэтому, если это работает, это должно по крайней мере дать вам способ сделать то, что вы хотите, хотя и не так легко, как изменить разрешение.
Ответ 10
Решение от @omiday работало для меня в Xvnc TigerVNC 1.1.0, поэтому я сконфигурировал его в одну bash функцию vncsize x y. Используйте его следующим образом: vncsize 1400 1000. Предполагается, что xrandr сообщает имя выхода VNC как по умолчанию.
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
}
Ответ 11
Насколько я знаю, нет возможности изменить разрешение клиента только с помощью VNC, так как это просто приложение для зеркалирования монитора.
TightVNC однако (это клиентское и серверное приложение VNC) может изменить размер экрана на стороне клиента, то есть сделать все немного меньше (аналогично методам изменения размера изображений в графических программах). Это должно работать, если вы не используете слишком маленькие размеры шрифта. VNC теоретически должен быть совместим между различными приложениями VNC.
Ответ 12
У меня есть простая идея, примерно такая:
#!/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 и Similars S.O
Ответ 13
Возможно, самый неосведомленный ответ, который я опубликовал, но здесь: Используйте клиент/просмотрщик TigerVNC и проверьте 'Resize remote session to local window'
на вкладке "Экран" параметров.
Я не знаю, что клиент $% # @TigerVNC сообщает удаленному vncserver или xrandr или Xvnc или gnome или... но он меняет размер при изменении окна TigerVNC Client.
Моя настройка:
- Сервер Tiger VNC, работающий на CentOS 6. Хостинг рабочего стола GNOME. (Работает с RHEL 6.6 тоже)
- Windows версия с клиентом Tiger VNC.
При этом разрешение изменяется в соответствии с размером окна клиента независимо от того, что оно есть, и это не 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.
Ответ 14
Ребята, это действительно просто.
войдите через ssh
в свой pi
выполнить
vncserver -geometry 1200x1600
Это приведет к созданию нового сеанса :1
подключитесь к клиенту vnc в ipaddress:1
Вот оно.
Ответ 15
Я думаю, что это зависит от вашего оконного менеджера.
Я пользователь Windows, так что это может быть неправильное предположение, но: не существует ли что-то, называемое X-Server работает на Linux-машинах - по крайней мере, на тех, которые могут быть интересными объектами для VNC, с которыми вы можете подключиться к "X-клиентам"?
VNC просто берет все, что на экране, и "туннелирует его через вашу сеть". Если я не совсем ошибаюсь, то протокол "X" должен дать вам возможность использовать разрешение вашего рабочего стола клиента.
Дайте X-Server в Википедии, что может дать вам приблизительный обзор.