문제

VNC를 사용하여 직장에서 Linux 워크스테이션에 연결합니다.직장에는 1600x1200에서 실행되는 20인치 모니터가 있고 집에서는 1440x900 해상도의 노트북을 사용합니다.vncserver를 1440x900에서 실행하도록 설정하면 모니터의 많은 공간을 놓치는 반면, 1600x1200에서 실행되도록 설정하면 노트북 화면에 맞지 않아 항상 스크롤해야 합니다.

VNC 세션의 크기를 즉시 조정할 수 있는 좋은 방법이 있습니까?

내 VNC 서버는 SuSE64에서 실행되는 RealVNC E4.x(정확한 버전은 기억나지 않음)입니다.

도움이 되었습니까?

해결책

실제 VNC 서버 4.4에는 VNC 크기를 조정할 수 있는 Xrandr에 대한 지원이 포함되어 있습니다.다음을 사용하여 서버를 시작하십시오.

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

그런 다음 다음을 사용하여 크기를 조정합니다.

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

다른 팁

Ubuntu(10.04)와 함께 제공되는 vnc4server(4.1.1)가 xrandr을 통해 즉시 해상도 변경을 지원하도록 패치되었다는 사실을 발견했습니다.불행히도 이 기능은 문서화되지 않았기 때문에 찾기가 어려웠습니다.그래서 여기 있습니다 ...

다음과 같은 여러 '형상' 인스턴스로 서버를 시작합니다.

vnc4server -geometry 1280x1024 -geometry 800x600

vncviewer의 터미널에서(다음 사용:'동적 데스크탑 크기 조정 허용' 활성화) xrandr을 사용하여 사용 가능한 모드를 확인하세요.

xrandr

결과를 변경하려면 다음을 사용하십시오.

xrandr -s 800x600

그게 다야.

나는 뛰고있어 TigerVNC 내 Linux 서버에서 기본 랜드르 지원하다.-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

그러면 쉽게 다른 해상도로 전환할 수 있습니다(예:1360x768로 전환):

bash> xrandr -s 5

저는 TightVnc 뷰어를 클라이언트로 사용하고 있으며 자동으로 새 해상도에 맞춰집니다.

가장 좋은 방법은 다른 포트에서 다른 구조로 VNC 서버를 실행하는 것입니다.나는 매뉴얼 페이지

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

그런 다음 직장에서 한 포트로, 집에서 다른 포트로 연결할 수 있습니다.

편집하다:그런 다음 xmove를 사용하여 두 x-서버 간에 창을 이동합니다.

흥미롭게도 이에 대해 아무도 대답하지 않았습니다.TigerVNC에서 세션에 로그인할 때.이동 System > Preference > Display 상단 메뉴 표시줄에서(저는 Cent OS를 원격 서버로 사용하고 있었습니다).해상도 드롭다운을 클릭하면 1080p를 포함한 다양한 설정을 사용할 수 있습니다.당신이 좋아하는 것을 선택하십시오.즉석에서 변경됩니다.

enter image description here

대화 상자가 표시되면 새 설정을 적용해야 합니다.그렇지 않으면 Windows와 마찬가지로 이전 설정으로 되돌아갑니다.

이 질문이 Google에 처음 나오므로 요즘 기본으로 사용되는 TigerVNC를 사용하여 솔루션을 공유해야겠다고 생각했습니다.

xrandr 모델 라인으로 인해 디스플레이 모드 (일명 해상도)를 선택할 수 있습니다. 하드 코딩"2560x1600"또는 "1600x900"과 같은 추가 모델은 코드에 추가되었습니다.코드를 작성한 개발자가 훨씬 더 똑똑하고 하드 코딩 된 목록은 값의 샘플 일뿐입니다.그것은 사용자 정의 모델을 추가 할 수있는 방법이 있어야한다는 결론으로 ​​이어집니다. man xrandr 확인합니다.

목표가 위의 해상도와 함께 두 컴퓨터간에 VNC 세션을 공유하고 VNC 서버가 "1600x900"의 해상도가있는 컴퓨터라고 가정하는 것이 목표라면 :

  1. 실제 디스플레이와 일치하는 형상으로 VNC 세션을 시작합니다.

    $ vncserver -geometry 1600x900 :1
    
  2. "2560x1600"에서 컴퓨터에서 VNC 뷰어를 시작하고 원격 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"해상도에 대한 Modeline (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 출력 두 번째 줄에서 디스플레이 이름을 찾습니다.

    VNC-0 connected 1600x900+0+0 0mm x 0mm
    
  8. 새 모델라인을 현재 VNC 가상 모니터에 바인딩합니다.

    $ xrandr --addmode VNC-0 "2560x1600_60.00"
    
  9. 그걸 써:

    $ xrandr -s "2560x1600_60.00"
    

여러분, 이건 정말 간단합니다.

다음을 통해 로그인 ssh 당신의 파이에

실행하다

vncserver -geometry 1200x1600

그러면 새 세션이 생성됩니다. :1

vnc 클라이언트에 연결하세요 ipaddress:1

그게 다야.

Nathan의 (수락된) 답변에 추가:

해결 방법 목록을 살펴보고 싶었지만 해당 항목이 표시되지 않았습니다.

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
}

Linux에 대해서는 잘 모르겠지만 Windows에서는 Tightvnc가 서버의 해상도 변경을 감지하고 이에 적응합니다.

따라서 워크스테이션에 VNC를 연결하고 바탕 화면, 속성을 마우스 오른쪽 버튼으로 클릭하는 것과 동일한 작업을 수행하고 해상도를 무엇이든 설정하고 그에 따라 클라이언트 VNC 창 크기를 조정할 수 있어야 합니다.

반면에, 기존 창을 한 x 서버에서 다른 X-Server로 옮길 수있는 방법이 있다면 문제가 해결 될 수 있습니다.

사용하시면 될 것 같아요 xmove 두 개의 개별 x-서버 간에 창을 이동합니다.따라서 작동한다면 해상도를 변경하는 것만큼 쉽지는 않지만 적어도 원하는 것을 수행할 수 있는 방법을 제공해야 합니다.

아마도 내가 게시한 가장 무식한 답변일 것입니다. 그러나 여기에는 다음과 같은 내용이 있습니다.TigerVNC 클라이언트/뷰어를 사용하여 확인하세요. 'Resize remote session to local window' 옵션의 화면 탭에서.

$%#@ TigerVNC 클라이언트가 원격 vncserver, xrandr, Xvnc 또는 gnome 또는 ...에 무엇을 알려주는지 모르겠습니다.하지만 TigerVNC 클라이언트 창을 변경하면 크기가 조정됩니다.

내 설정:

  • CentOS 6에서 실행되는 Tiger VNC 서버.그놈 데스크탑 호스팅.(RHEL 6.6에서도 작동)
  • Tiger VNC 클라이언트가 포함된 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.

@omiday의 솔루션은 Xvnc TigerVNC 1.1.0에서 저에게 효과적이었으므로 이를 단일 bash 기능으로 압축했습니다. vnc크기 xy.다음과 같이 사용하세요: vnc크기 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
}

내가 아는 한 VNC를 사용하여 클라이언트의 해상도를 변경할 수 있는 방법은 없습니다. 이는 단지 "모니터 미러링" 응용 프로그램일 뿐이기 때문입니다.

타이트VNC 그러나 (VNC 클라이언트 및 서버 응용 프로그램) 클라이언트 측에서 화면 크기를 조정할 수 있습니다.모든 것을 조금 더 작게 만듭니다(그래픽 프로그램의 이미지 크기 조정 기술과 유사).너무 작은 글꼴 크기를 사용하지 않으면 작동합니다.VNC는 이론적으로 서로 다른 VNC 애플리케이션 간에 호환되어야 합니다.

나는 다음과 같은 간단한 아이디어를 가지고 있습니다.

#!/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 및 유사한 S.O의 모든 디스플레이 장치에 대한 더 나은 솔루션이 필요합니다.

나는 그것이 당신의 창 관리자에 달려 있다고 생각합니다.

저는 Windows 사용자이므로 잘못된 추측일 수 있습니다.이라는 게 있지 않나요? X-서버 "X-Clients"로 연결할 수 있는 Linux 시스템(적어도 VNC의 흥미로운 대상이 될 수 있는 시스템)에서 실행됩니까?

VNC는 화면에 있는 모든 것을 가져와 "네트워크를 통해 터널링"합니다.내 생각이 완전히 틀리지 않았다면 "X" 프로토콜은 클라이언트의 데스크톱 해상도를 사용할 수 있는 기회를 제공해야 합니다.

주다 X-서버 Wikipedia에서 시도해 보면 대략적인 개요를 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top