Android 태블릿을 두 번째 디스플레이로 어떻게 사용합니까?


63

iDisplay 라는 Windows 및 Mac 용 제품을 사용하는 사람들이 Android 또는 iPad를 보조 디스플레이로 사용할 수 있다는 것을 알게 되었습니다. 이것은 좋은 아이디어와 우분투에서 할 수있는 것 같습니다. 불행히도 시작하는 방법을 모르겠습니다.

Ubuntu에서이 설정을 어떻게 다시 만들 수 있습니까?


2
포럼에서 현재 논의중인 유사한 질문 : VNC를 두 번째 모니터로 사용
ændrük

1
수퍼 유저와 동일한 질문 : VNC를 사용하여 두 번째 화면 만들기
ændrük

1
여기에 제시된 솔루션은 네트워크 솔루션입니다. 그러나 Duet 처럼 모니터와 동일한 경험을 얻기 위해 단순히 USB를 통해 모니터를 페이 킹하여 이것을 달성 할 수 있습니까?
Augustin Riedinger

따라서 Duet은 소프트웨어에서 DisplayLink 칩을 본질적으로 에뮬레이션 할 수 있습니다. 모릅니다.하지만 그건 내 추측입니다. 나는 시도조차하지 않을 것입니다. 내가 시도하는 것은 어렵지 않지만 USB 네트워킹입니다. 태블릿과 네트워크를 테 더링 (또는 역 테 더링)하십시오.
chx

답변:


28

Android 용 VNC 클라이언트를 가져 와서 컴퓨터에서 새 VNC 서버 세션을 시작하고 (현재 디스플레이를 공유하지 말고 x11vnc가 아닌 vnc4server를 사용하십시오) Android VNC 클라이언트에서 연결하십시오 (영리한 비트). 시너지를 이용한 두 세션 사이의 PC 키보드와 마우스.

이 작업을 수행하는 데 필요한 모든 소프트웨어는 Ubuntu 측의 표준 리포지토리에서 사용할 수 있으며 시장에 Android 용 무료 VNC 클라이언트가 몇 개 있습니다.

이 방법으로는 디스플레이를 가로 질러 창을 끌 수 없습니다. 이를 위해 Xdmx를 사용하여 두 세션을 결합해야한다고 생각합니다. 이것은 훨씬 어렵고 아마도 3D 가속을 잃을 수 있습니다.

또한 시너지와 vnc는 기본적으로 암호화를 사용하지 않으므로 신뢰할 수있는 네트워크에 있지 않은 경우 연결을 터널링해야합니다.


9
예를 추가 할 수 있습니다
rkmax

18
우리가 따라갈 수있는 단계별 예제를 갖는 것이 유용 할 것입니다.
OganM

2
더 많은 화면 공간에서와 같이 어떻게 태블릿을 두 번째 화면으로 만들 수 있습니까?
NoBugs

vncserver 및 Gnome 3에 문제가있었습니다. vncserver를 시작할 때마다 화면이 검게 변했습니다. 나는 tightvncserver (Ubuntu repos에서도 사용)를 사용했으며 구성이 전혀없는 첫 번째 시도를 수행했습니다.
thirdender

이것은 두 번째 디스플레이보다 KVM 스위치와 유사한 또는 원격 제어 솔루션입니다. 예, 다른 입력 세트를 제공하지만 출력은 두 장치에서 동일합니다. 태블릿을 기본 화면과 다른 가상 데스크톱으로 전환 할 수 없으며 스위치를 둘 다 켤 수도 있습니다. 질문에 대답하지 않습니다. 질문은 입력에 대한 것이 아니라 추가 출력 공간에 모바일 장치를 사용하는 것에 관한 것입니다.
cprn

17

tl; dr : xrandr --fb그리고 x11vnc --clip함께 킬러 콤보를 만듭니다.

recognitium으로 연결된 스레드는 정말 흥미로운 아이디어를 가지고 있습니다. 그가 지적한 저자를 찾을 수 없었고 포럼 게시물을 팔로우했기 때문에이 아이디어를 의미했는지 확실하지 않습니다. :

  1. 먼저 기본 시스템의 화면 해상도가 1280x800이고 VNC 이상으로 데스크톱을 확장하려는 보조 시스템의 화면 해상도가 1280x1024이고 확장 화면이 기본 화면의 오른쪽에 있다고 가정합니다. 가상 화면은이어야 1280x800 + 1280x1024 = 2560x1024합니다. (수평을 확장하고 수직 해상도를 둘 중 더 크게 만듭니다)을 실행하십시오 xrandr --fb 2560x1024.

  2. 이제 화면이 기본 모니터보다 크므로 패닝 또는 기타 원치 않는 "기능"이 활성화되어 있지 않아야하며 기본 모니터의 왼쪽 상단 모서리 좌표가 0x0인지 확인해야합니다.

  3. x11vnc -clip 1280x1024+1281+0 플러스 다른 x11vnc 옵션을 추가하십시오 :)

이거 야.


2
이것은 시너지 트릭보다 더 완벽한 방법으로 보입니다. 추가 가상 공간이 타일링 창 관리자와 어떻게 상호 작용하는지 궁금합니다. 잠시 후에이 장면을보고 다시보고합니다.
이브라힘

2
승리의 턱에서 패배 마우스 포인터는 기본 화면을 떠날 수 없습니다. :(
Gringo Suave

1
흥미로운 것 같습니다. 실제로 이중 화면이 있지만 불행히도 명령 xrandr --fb 2560x1024은 아무런 영향을 미치지 않는 것 같습니다. 어느 내가 내 기본 모니터 크기보다 더 큰 화면을 가질 수 없다는 것을 의미합니다 ... :(
아우구스틴 Riedinger에게

1
나는 이것에 대해 더 많이 읽었다 . 있어 X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 29 Current serial number in output stream: 30 오류가 발생했습니다. 내 노트북은 native보다 높은 해상도를 지원하지 않는다고 생각 1600*900합니다. 이 솔루션은 작동하지 않습니다. 대신 이중 화면 솔루션을 찾아야합니다.
Augustin Riedinger

3
나는 마침내 덕분에 작동 만든 이 게시물 을 실행하여 : sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(I 누락 된 --panning옵션)
아우구스틴 Riedinger에게

16

완벽하게 연결된 this을 제외하고 다른 답변을 작동시킬 수 없습니다 .

그것은 안드로이드를 두 번째 모니터로 사용하고 마우스를 공유하며 태블릿과 컴퓨터간에 창을 드래그 할 수 있습니다.

다음은 주석이 요청하는 단계별 자습서입니다.

A. 튜토리얼

1. 새로운 가상 모니터 만들기

내 태블릿의 해상도는 1280x1024입니다. 태블릿의 해상도가 다른 경우 명령의 위치 12801024위치를 변경할 수 있습니다 . LVDS1기본 모니터 이름이 다른 경우 변경해야 할 수도 있습니다 .

터미널에서 실행하십시오.

  1. $ gtf 1280 1024 60.

출력과 비슷한 줄이 있습니다 Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. 단어 뒤의 모든 것을 Modeline제외하고 다음 명령으로 복사 하십시오.

  1. xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync

  2. xrandr --addmode VIRTUAL1 1280x1024_60.00

  3. xrandr --output VIRTUAL1 --mode 1280x1024_60.00 --left-of LVDS1

2. VNC 시작

  1. x11vnc -clip 1280x1024+0+0

3. Android (LAN (Wi-Fi) 또는 USB (케이블))와 연결

  1. ifconfig(LAN에서 연결할 때)를 사용하여 컴퓨터의 IP를 찾으십시오 .

  2. VNC 앱을 다운로드하고 앱에서 해당 IP (및 포트 선택 5900)를 사용하여 컴퓨터에 연결 하십시오.

공지 사항

  • 크레딧 : kjans , 내용 편집
  • 경고 : 데이터가 암호화되지 않았습니다! (Wi-Fi 및 LAN 이외의 사용량에 해당)
  • 경고 : 포트 5900에 연결할 수있는 모든 네트워크는 모니터에 연결할 수 있습니다! (USB를 사용하고 인터페이스 추가 -listen <IP_ADDR>옵션을 제한하는 경우 문제가되지 않습니다 x11vnc( <IP_ADDR>네트워크에서 컴퓨터 주소가 독점 액세스를 제공하려는 위치)
  • 1-4 단계를 두 번 실행하면 오류가 발생할 수 있습니다.
  • 성공적인 사용 후에는 다른 연결을 위해 5. 단계를 반복해야합니다.

B. 스크립트

튜토리얼이 스크립트로 구현되었습니다 (USB 케이블에 사용할 IP를 변경하거나 삭제하고 Wi-Fi에 사용할 회선의 주석을 해제하십시오).

#!/bin/bash
W=1280
H=800
O=VIRTUAL1
if [ "$1" == "create" ]; then
    gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | xargs xrandr --newmode
    # sed: get third line, delete 'Modeline', get first word, remove first and last characters
    gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --addmode $O
    gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --output $O --left-of LVDS1 --mode
elif [ "$1" == "on" ]; then
    x11vnc -listen 192.168.42.149 -clip ${W}x${H}+0+0
    # For use in Wi-Fi LAN.
    #x11vnc -clip ${W}x${H}+0+0 #**WARNING** Unencrypted stream. VNC accessible without password through port 5900 in all internet interfaces.
else
    echo "missing argument: [create | on]"
fi

@Prometheus x11vnc -clip 1280x1024+0+0는로 대체 할 수 있습니다 x11vnc -clip xinerama1. 또한 --left-of LVDS1후자가 Monitors설정 앱을 사용 하여 추가 모니터를 원하는 위치에 배치하려는 경우 꼭 필요한 것은 아닙니다 .
LeoRochael

6
xrandr: cannot find output "VIRTUAL1"3 번을 입력하면 반환되었습니다. 어떤 아이디어?
dat tutbrus

3
xrandr: cannot find output "VIRTUAL1"에서 반환xrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis

이 기능을 사용하려면 대상 비디오 모드가 가능한 미사용 출력이 있어야한다는 점을 제외하고 작동합니다. VIRTUAL1전형적인 시스템에 존재하는 것이 아니라 그러한 출력의 자리 표시 자 인 것 같습니다.
Ruslan

1
@cprn 예, 마우스 커서를 공유하고 창을 드래그 할 수 있습니다. 마치 마치 두 번째 모니터가 연결된
것처럼

13
  1. 설치 vnc4serverx2x.
  2. 그런 다음 .vnc/xstartup구성 파일을 설정하십시오. 광산은 이렇게 생겼어

    #!/bin/sh
    # Uncomment the following two lines for normal desktop:
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    # exec /etc/X11/xinit/xinitrc
    
    [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    xsetroot -solid grey
    #vncconfig -iconic &
    #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #x-window-manager &
    exec gnome-session
    

    그놈 폴백 데스크탑을 시작합니다 (vnc에서 그놈 3을 시작하는 방법을 모르겠습니다).

  3. vnc 서버를 시작하려면 vnc4server -geometry 800x480command를 사용하십시오 . 물론 800x480 대신 태블릿의 해상도를 설정해야합니다.
  4. 시작하십시오 x2x -east -to :1. 이 명령은 컴퓨터가 display : 1이 화면 오른쪽에있는 것처럼 작동하도록 지시합니다 (왼쪽에 표시하려면 -west옵션을 사용 하십시오). 한 디스플레이에서 다른 디스플레이로 앱을 옮길 수는 없지만 마우스와 키보드 하나를 사용하여 둘 다를 제어 할 수 있습니다.
  5. vnc4server태블릿에서 생성 한 디스플레이에 연결하십시오 (포트 번호는 5900 + 디스플레이 번호입니다 (예 : 디스플레이의 경우 : 1 포트 번호는 5901입니다) (디스플레이 번호는 vnc4server의 출력에 표시됨).
  6. 에서 나가려면을 x2x누릅니다 Ctrl-C. 또는 백그라운드에서 시작할 수도 있습니다 ( x2x -east -to :1 &). 그런 다음 먼저 포 그라운드로 이동 fg하거나 ( ) 종료 kill $!해야합니다 (주의해서 백그라운드에서 시작된 마지막 프로세스를 종료합니다).
  7. 생성 된 디스플레이를 제거하려면을 호출하십시오 vnc4server -kill :1. 대신 :1새 디스플레이의 번호를 설정할 수 있습니다.

1
x2x 주셔서 감사합니다 ... 왜 아무도 인터넷 전체에서 그것을 언급하지 않습니까? 큰 시간을 절약했습니다. 시너지 효과는 태블릿에서 시아 노겐 모드 또는 이와 유사한 것을 필요로합니다. 또한 아무도 언급하지 않습니다.
Stefanos Kalantzis

1
나는 이미 알고 있습니다 .Googlex2x 에서 x2x android 를 검색 하여이 게시물을 찾으십시오 ...하지만 +1 for .vnc/xstartup, 특히 for unset DBUS_SESSION_BUS_ADDRESS!! 작지만 풍부하고 매우 유용한 게시물입니다. 감사합니다!
F. Hauri

7

이것은 원칙적으로 별도의 컴퓨터에서 실행되는 두 개의 X 서버를 사용하여 단일 데스크탑을 만들 수있는 xdmx (분산 멀티 헤드 X)를 사용하여 가능합니다.

원칙적으로 세 가지 시나리오가 가능하지만 적어도 X- 세션을 다시 시작해야하기 때문에 iDisplay만큼 완벽한 것은 없습니다. 나는 완벽하게 작동 할 수 없었지만 우분투 10.10을 실행 중이며 여러 가지 이유로 업그레이드 할 수 없습니다. 세 가지는 :

1 : 안드로이드에서 X 서버를 실행하고 (앱 스토어에 두 가지가 있음) xdmx를 사용하여 데스크탑 또는 랩톱 디스플레이와 결합하십시오. -포인터가 데스크탑의 태블릿 부분으로 움직일 때 xdmx가 충돌했기 때문에 저에게는 효과가 없었습니다.

2 : 컴퓨터에서 vnc 백엔드로 두 번째 X 서버를 실행하고 xdmx를 사용하여 컴퓨터 화면이있는 하나의 데스크탑으로 결합 한 다음 태블릿의 vnc 뷰어로 가상 부분을 살펴보십시오 .xdmx 때문에 작동하지 않았습니다. 모든 x 서버에 동일한 색상의 비주얼이 있어야하는데 이는 vncserver와 실제 디스플레이의 경우에는 해당되지 않으며 vncserver가 바뀌도록 설득 할 수 없었습니다.

3 : 각 화면마다 하나씩 두 개의 vncserver를 실행 한 다음 xdmx로 연결하고 각 시스템에서 vncviewer로 각 부분을 확인하십시오. -이것은 나를 위해 일하는 것에 가장 가까워졌지만 불행히도 inpout이 엉망이되었습니다. 그것은 와이파 이보다 트루 컬러에서 상당히 느 렸습니다. 이 스크립트를 사용하여 xdmx와 vnc를 시작했습니다.

#!/bin/sh 
vncserver :2 -geometry 1024x768 -depth 24 && \
vncserver :3 -geometry 1920x1120 -depth 24 && \
startx -- \
/usr/bin/X11/Xdmx :1 \
-input :2 \
-display :2 \
-display :3 \
-ignorebadfontpaths \
-norender \
-noglxproxy \
+xinerama \
-nomulticursor
vncserver -kill :2 
vncserver -kill :3

YMMV


3

태블릿을 두 번째 디스플레이로 만들기 위해 간단한 bash 스크립트를 만들었습니다. ipad_monitor.sh블로그 게시물에 복사 (걱정하지 마십시오. Android에서도 작동 함) .

다른 게시물과 다른 점은 추가 인수를 사용하여 두 번째 화면의 위치를 ​​매우 쉽게 설정할 수 있다는 것입니다.

편집 : 나는 ipad_monitor.sh여기 에 원본을 포함시켰다 . 이 명령을 다음과 같이 실행하십시오.

  • ./ipad_monitor.sh --right 또는 ./ipad_monitor.sh --left
  • ./ipad_monitor.sh --right --portrait
  • ./ipad_monitor.sh --right --portrait --hidpi

이 스크립트의 기본 개념은, 다른 사람과 동일 실행 xrandr하고 x11vnc하지만 난 당신이 화면을 부착하고자하는 쪽과 같은 옵션이 포함되어 있습니다.

#!/bin/sh
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <k.bumsik@gmail.com> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. - Bumsik Kim
# ----------------------------------------------------------------------------

# Configuration
WIDTH=1024  # 1368 for iPad Pro
HEIGHT=768  # 1024 for iPad Pro
MODE_NAME="mode_ipad"       # Set whatever name you like, you may need to change
                            # this when you change resolution, or just reboot.
DIS_NAME="VIRTUAL1"         # Don't change it unless you know what it is
RANDR_POS="--right-of"      # Default position setting for xrandr command

# Parse arguments
while [ "$#" -gt 0 ]; do
  case $1 in
    -l|--left)      RANDR_POS="--left-of"  ;;
    -r|--right)     RANDR_POS="--right-of" ;;
    -a|--above)     RANDR_POS="--above"    ;;
    -b|--below)     RANDR_POS="--below"    ;;
    -p|--portrait)  TMP=$WIDTH; WIDTH=$HEIGHT; HEIGHT=$TMP
                    MODE_NAME="$MODE_NAME""_port"  ;;
    -h|--hidpi)     WIDTH=$(($WIDTH * 2)); HEIGHT=$(($HEIGHT * 2))
                    MODE_NAME="$MODE_NAME""_hidpi" ;;
    *) echo "'$1' cannot be a monitor position"; exit 1 ;;
  esac
  shift
done

# Detect primary display
PRIMARY_DISPLAY=$(xrandr | perl -ne 'print "$1" if /(\w*)\s*connected\s*primary/')

# Add display mode
RANDR_MODE=$(cvt "$WIDTH" "$HEIGHT" 60 | sed '2s/^.*Modeline\s*\".*\"//;2q;d')
xrandr --addmode $DIS_NAME $MODE_NAME 2>/dev/null
# If the mode doesn't exist then make mode and retry
if ! [ $? -eq 0 ]; then
  xrandr --newmode $MODE_NAME $RANDR_MODE
  xrandr --addmode $DIS_NAME $MODE_NAME
fi

# Show display first
xrandr --output $DIS_NAME --mode $MODE_NAME
# Then move display
sleep 5 # A short delay is needed. Otherwise sometimes the below command is ignored.
xrandr --output $DIS_NAME $RANDR_POS $PRIMARY_DISPLAY

# Cleanup before exit
function finish {
  xrandr --output $DIS_NAME --off 
  xrandr --delmode $DIS_NAME $MODE_NAME
  echo "Second monitor disabled."
}

trap finish EXIT

# Get the display's position
CLIP_POS=$(xrandr | perl -ne 'print "$1" if /'$DIS_NAME'\s*connected\s*(\d*x\d*\+\d*\+\d*)/')
echo $CLIP_POS
# Share screen
x11vnc -multiptr -repeat -clip $CLIP_POS
# Possible alternative is x0vncserver but it does not show the mouse cursor.
#   x0vncserver -display :0 -geometry $DIS_NAME -overlaymode -passwordfile ~/.vnc/passwd
if ! [ $? -eq 0 ]; then
  echo x11vnc failed, did you \'apt-get install x11vnc\'?
fi

1
링크 부패를 피하기 위해 게시 할 수있는 스크립트 / 앱 또는 대체 링크의 이름이 있습니까? 여기서 우리는 일반적으로 다른 사이트에 의존하지 않기 위해 가능한 한 자주 포함하려고 노력합니다. .
sbergeron

이 링크가 질문에 대한 답변을 제공 할 수 있지만 여기에 답변의 필수 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않을 수 있습니다. - 리뷰에서
anonymous2

2
@ sbergeron 알겠습니다. 원래 코드를 여기에 포함시킵니다.
김범식

1
@ anonymous2 당신이 맞아요. 여기에 bash 코드가 포함되었습니다.
김범식

아 훨씬 좋아 나는 이것이 이렇게 붙어있을 수 있다고 생각합니다.
anonymous2

2

xorg 더미 드라이버와 x11vnc -clip을 사용합니다. 마우스 포인트가 가장자리에 붙어 있지 않습니다.

sudo apt-get install xserver-xorg-video-dummy

/etc/X11/xorg.conf두 번째 화면에 더미 드라이버는 :

"장치"섹션
        식별자 "구성된 비디오 장치"
    드라이버 "radeon"#CHANGE THIS
끝 섹션

"모니터"섹션
        식별자 "구성된 모니터"
끝 섹션

"화면"섹션
        식별자 "기본 화면"
        "구성된 모니터"모니터
        장치 "구성된 비디오 장치"
끝 섹션


## Xdummy : ##
"장치"섹션
  식별자 "Videocard0"
  드라이버 "더미"
  # 비디오 램 4096000
  VideoRam 256000
끝 섹션

## Xdummy : ##
"모니터"섹션
  식별자 "Monitor0"
# HorizSync 10.0-300.0
# VertRefresh 10.0-200.0
# 디스플레이 크기 4335 1084
끝 섹션

## Xdummy : ##
"화면"섹션
  식별자 "Screen0"
  "Videocard0"장치
  "Monitor0"모니터
끝 섹션



"서버 레이아웃"섹션
  식별자 "dummy_layout"
  화면 0 "기본 화면"
  "기본 화면"의 화면 1 "screen0"
    옵션 "Xinerama" "1"
끝 섹션

그런 다음 X 세션에 로그인하고 다음을 실행하십시오.

x11vnc -clip 1024x768+1280+0

xorg.conf없이 이것을 할 수있는 방법이 있습니까? 컴퓨터에서 하나를 만들면 그래픽이 완전히 엉망이됩니다.
daboross

Xinerama는 여전히 지원됩니까? xrandr는 어떻습니까?
Gringo Suave

1

이 지침은 태블릿 또는 VNC 클라이언트를 통한 컴퓨터를 사용하여 Linux 시스템에 대한 "추가"화면을 작성하는 것입니다.

Mageia3 32Bit (64 비트를 시도하지는 않았 음)에서이 단계를 수행했지만 다른 배포판 (예 : 우분투)에서도 비슷해야합니다.

다음 터미널 명령으로 필요한 패키지가 모두 있는지 확인하십시오.

sudo apt-get install gcc autoconf automake x11-font-util libtool libxi-devel ibopenssl-devel libxfont1-devel libpam-devel x11-util-macros x11-xtrans-devel x11-server-xvfb x11-server-xdmx x11-server-devel x11-server-source

위의 패키지가 모두 있으면 다음 명령을 실행하십시오.

cd /usr/share/x11-server-sources/
./autogen.sh
./configure --with-fontrootdir=/usr/share/fonts --with-xkb-path=/usr/share/X11/xkb --with-xkb-output=/usr/share/X11/xkb/compiled --enable-dmx
make

오류가 발생하지 않으면 Xdmx를 패치하십시오 (간단히 말하면 얼마 동안 "파손"되었습니다).

을 열고 /usr/share/x11-server-sources/hw/dmx/input/dmxevents.c730 행을 변경하십시오.

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

이에:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

730 행이 다른 경우이 섹션을 사용하여 올바른 행을 찾으십시오. 원래 섹션-*로 표시된 변경 행

    case ButtonPress:
    case ButtonRelease:
        detail = dmxGetButtonMapping(dmxLocal, detail);
        valuator_mask_zero(&mask);
        QueuePointerEvents(p, type, detail,
 *                         POINTER_RELATIVE | POINTER_DESKTOP, &mask);
        return;

실행하여 Xdmx의 버전을 확인 ./configure --version/usr/share/x11-server-source/대한, Xdmx 1.13 이상 당신은 또한 이러한 변경을해야 (1.14과 새로운 당신이 "확인"단계 이하로 건너 뛸 수 있습니다) :

개방 /usr/share/x11-server-sources/dix/getevents.c, 라인 1395 :이 변경 :

if (flags & POINTER_SCREEN ) {    /* valuators are in screen coords */

이에:

if (flags & ( POINTER_SCREEN | POINTER_DESKTOP) ) {    /* valuators are in screen coords */

(원본 섹션-*로 표시된 줄 변경)

    /* valuators are in driver-native format (rel or abs) */

    if (flags & POINTER_ABSOLUTE) {
*       if (flags & POINTER_SCREEN ) {    /* valuators are in screen coords */
            sx = valuator_mask_get(&mask, 0);
            sy = valuator_mask_get(&mask, 1);

open /usr/share/x11-server-sources/Xext/xtest.c, line 311 : 다음을 변경하십시오 :

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

이에:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(원본 섹션-*로 표시된 행 변경)

       case MotionNotify:
            dev = PickPointer(client);
            valuators[0] = ev->u.keyButtonPointer.rootX;
            valuators[1] = ev->u.keyButtonPointer.rootY;
            numValuators = 2;
            firstValuator = 0;
            if (ev->u.u.detail == xFalse)
*               flags = POINTER_ABSOLUTE | POINTER_DESKTOP;
            break;

/usr/share/x11-server-sources/include/input.h, 73 행 : 다음으로 시작하는 행 뒤에이 행을 추가하십시오 #define POINTER_EMULATED.

#define POINTER_DESKTOP         (1 << 7)

위와 같이 변경 한 후 (에서 /usr/share/x11-server-sources/) 다시 실행하십시오 :

make

에 새 Xdmx 파일이 있어야합니다 /usr/share/x11-server-sources/hw/dmx/. 전 세계적으로 쉽게 설치해야하므로 기존 이름을 바꾸는 것이 좋습니다.

sudo mv /bin/Xdmx /bin/Xdmx-old

대신 새 것을 복사하십시오.

cp /usr/share/x11-server-sources/hw/dmx/Xdmx /bin

이제 첫 번째 시험을 수행 할 준비가되었습니다. 다음 명령을 사용하면 기본 / 기존 디스플레이 ( :0) 를 계속 실행하고 다중 모니터를 지원하는 새 디스플레이를 열 수 있습니다. icewm을이 명령과 함께 사용하여 좀 더 가볍게 만들었습니다 (메인 디스플레이에서 KDE를 사용 :0하고 새로운 멀티 헤드 디스플레이에서 모든 대형 멀티 모니터 응용 프로그램을 엽니 다). 사용하기 쉽도록 이러한 명령을 가장 확실하게 스크립팅 할 수 있습니다 (내가 한 것임)-이 명령 중 하나는 콘솔 및 / 또는 모든 디스플레이의 터미널 창에서 실행할 수 있습니다.

이 명령은 새 디스플레이를 VNC 디스플레이의 프레임 버퍼로 만듭니다 :2(원하는대로 화면 크기 조정).

Xvfb :2 +xinerama -screen 0 1024x1280x24 -ac &

그러면 실제 디스플레이에서 디스플레이로 새로운 경량 X 세션이 시작됩니다 :1(여러 가지 방법이 있습니다).

startx 'icewm' -- :1

이 명령은 실제 ​​화면과 가상 화면 사이에서 다중 디스플레이를 시작하고 창 관리자에 대해 icewm을 시작합니다.

Xdmx :3 +xinerama -display :1 -display :2 -norender -noglxproxy -ac & DISPLAY=:3 starticewm

이제 터미널 창을 열고 vnc 서버를 시작하십시오 (원하는대로 비밀번호 변경).

x11vnc -display :3 -passwd test -clip xinerama1 -noshm -forever -nowireframe &

이제 남은 것은 VNC 클라이언트를 시작하고 VNC에 연결하는 것입니다. 방화벽예외를 비활성화하거나 포트 5900에 추가하여 연결할 수 있습니다. 명심해야 할 또 다른 사항은 일부 VNC 클라이언트가 원격 커서 위치를 표시하지 않는다는 것입니다. 옵션 "로컬 마우스"를 끄면 iOS 용 "Mocha VNC"가 훌륭하게 작동 함을 증명합니다.

기본 모니터와 새로운 가상 보조 모니터간에 창을 드래그하는 것을 즐기십시오 (또한 태블릿을 사용하여 보조 모니터의 항목을 클릭 / 입력 할 수 있음).

Xdmx를 닫으려면 Ctrl+ Alt+를 Backspace두 번 누릅니다 .

오토메이션:

이 bash 스크립트를 사용하여 전체 프로세스를 시작합니다 (종료시 Xvfb를 종료합니다).

Xvfb :2 +xinerama -screen 0 1024x1280x24 -ac &
xinit dual -- :1
ps | grep Xvfb | awk '{print $1}' | xargs kill

그런 다음 ~/.xinitrc이 사용자 정의 파일이 있습니다.

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)

if [[ $1 == "" ]]
then
  exec startkde 
elif [[ $1 == "xterm" ]]
then
  exec xterm
elif [[ $1 == "dual" ]]
then
  exec Xdmx :3 +xinerama -display :1 -display :2 -norender -noglxproxy -ac & DISPLAY=:3 starticewm & x11vnc -display :3 -passwd test -clip xinerama1 -noshm -forever -nowireframe
else
  exec $1
fi

문제 해결:

  • Xdmx를 실행할 때 다음을 실행 sh: /usr/local/bin/xkbcomp: No such file or directory해야 할 수도 있다는 오류 메시지가 표시되면 cd /usr/local/bin" and "ln -s /bin/xkbcompXdmx를 다시 시도하십시오.

  • Ctrl+ Alt+ F1through F7는 다른 콘솔 / xsession으로 전환하기 위해 Xdmx에서 작동해야하지만 어떤 이유로 작동하지 않으면 sudo chvt X기본 실행 화면으로 전환하기 위해 X 를 실행하는 것입니다 (여기서 X는 콘솔 / xsession 번호). 또한 Xdmx로 다시 전환하면 열려있는 모든 창에서 그리기 문제가 발생할 수 있습니다. 작업 표시 줄을 클릭하여 창을 다시 숨기거나 다시 표시하여 다시 그리기를 강제합니다.


0

튜토리얼에 감사드립니다. 우분투 14.04에서 나를 위해 일한 것을 공유 할 것입니다.

태블릿 용 AndroidVNC를 받으십시오.

다음을 실행하여 Ubuntu PC 용 x11vnc를 구하십시오.

sudo apt-get install x11vnc

Xorg 더미 드라이버 방법을 사용해야했습니다. 내 /etc/X11/xorg.conf 파일은 다음과 같습니다.

Section "ServerLayout"
Identifier     "X.org Configured"
Screen      0  "Screen0" 0 0
**Screen        1  "Screen1" rightof "Screen0"**
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
**Option         "Xinerama" "1"**
EndSection

Section "Files"
ModulePath   "/usr/lib/xorg/modules"
FontPath     "/usr/share/fonts/X11/misc"
FontPath     "/usr/share/fonts/X11/cyrillic"
FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/Type1"
FontPath     "/usr/share/fonts/X11/100dpi"
FontPath     "/usr/share/fonts/X11/75dpi"
FontPath     "built-ins"
EndSection

Section "Module"
Load  "glx"
EndSection

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option      "Protocol" "auto"
Option      "Device" "/dev/input/mice"
Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
DisplaySize 1680 1050
EndSection

**Section "Monitor"
Identifier "Monitor1"
VendorName "Dummy"
ModelName "Dummy"
DisplaySize 2704 1050
EndSection**

Section "Device"
    ### Available Driver options are:-
    ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
    ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
    ### <percent>: "<f>%"
    ### [arg]: arg optional
    #Option     "NoAccel"               # [<bool>]
    #Option     "SWcursor"              # [<bool>]
    #Option     "EnablePageFlip"        # [<bool>]
    #Option     "ColorTiling"           # [<bool>]
    #Option     "ColorTiling2D"         # [<bool>]
    #Option     "RenderAccel"           # [<bool>]
    #Option     "SubPixelOrder"         # [<str>]
    #Option     "AccelMethod"           # <str>
    #Option     "EXAVSync"              # [<bool>]
    #Option     "EXAPixmaps"            # [<bool>]
    #Option     "ZaphodHeads"           # <str>
    #Option     "EnablePageFlip"        # [<bool>]
    #Option     "SwapbuffersWait"       # [<bool>]
Identifier  "Card0"
Driver      "radeon"
BusID       "PCI:1:0:0"
EndSection

**Section "Device"
  Identifier "Dummy"
  Driver "dummy"
EndSection**

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
SubSection "Display"
    Viewport   0 0
    Depth     1
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     4
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     8
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     15
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     16
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     24
EndSubSection
EndSection

**Section "Screen"
Identifier "Screen1"
Device "Dummy"
Monitor "Monitor1
EndSection**

당신은 아마 거기에 모든 것을 필요로하지 않을 것입니다. X -configure를 실행하여 시스템 자동 구성을 얻고 더미 섹션 (별표 사이의 항목)을 파일에 추가하십시오. xorg.conf의 더미 화면 해상도는 기본 모니터 너비 + 태블릿 해상도 너비이어야합니다. 제 경우에는 1680 + 1024 = 2704 기본 모니터 높이를 유지하십시오. 내 경우에는 1050을 유지하십시오. 더 적합합니다 :).

수행하여 x11vnc 실행

x11vnc -rfbauth ~/.vnc/passwd -clip 1024x550+1680+0

해상도는 태블릿 너비 x 태블릿 높이 + 기본 디스플레이 너비 + 0이어야합니다.

androidVNC 클라이언트를 사용하여 PC에 연결하고 localmouse 옵션을 활성화하십시오. 그것은 리눅스가 안드로이드에서 실행되는 이상한 점을 느끼는 것입니다. :)


0

여기에 나열된 다른 기술과 관련하여 많은 문제가있었습니다. 더 나은 솔루션을 원했지만 느리고 간단한 솔루션이 좋은 출발점입니다.

VNC 서버의 경우 vncserver패키지를 시도 했지만 화면이 검게 gdm변하고 다시 작동 하려면 다시 시작 해야합니다. 나는 스위치를 켜고 tightvncserver구성없이 처음으로 작동했습니다.

화면간에 마우스 / 키보드를 공유하기 위해 x2vnc 사용 했습니다 . win2vnc 와 함께 사용 하여 Linux PC 옆의 Windows PC와 마우스 / 키보드를 공유 할 수도 있습니다 .

최종 명령 :

sudo apt-get install tightvncserver
tightvncserver
sudo apt-get install x2vnc
x2vnc -east localhost:1

이 시점에서에 연결하여 VNC 프로그램에서 두 번째 화면을 열 수 있어야합니다 YOUR_IP_ADDRESS:1. VNC 화면에서 프로그램을 시작하려면 터미널을 열고을 설정 DISPLAY한 다음 명령을 실행하십시오. 예를 들어, xtermVNC "화면" 을 열려면 다음 을 실행하십시오.

export DISPLAY=:1
xterm

이 방법을 사용하면 두 번째 화면이 상당히 느립니다. 아직도, 내가 시도한 다른 많은 옵션이 막 다른 길을 갔으며이 구성은 전혀 구성되지 않았습니다.


0

이 주제에 대해 여전히 궁금한 사람은 xrandr 및 x11vnc 클립이 작동합니다. 마우스가 거기에 도달하게하려면 패닝 인수를 사용하여 마우스 추적 영역을 설정해야합니다.

xrandr --fb 2560x1024 --output LVDS1 --panning 1280x1024+0+0/2560x1024+0+0

그런 다음 xvnc를 실행할 때 다음을 사용하십시오.

x11vnc -clip 1280x1024+1281+0 -nocursorshape -nocursorpos

그러면 VNC가 자체 커서 추적을 사용하지 못하고 화면 이미지의 일부로 커서를 그립니다.

나는 여기에 메모를했다 http://mikescodeoddities.blogspot.ae/2015/04/android-tablet-as-second-ubuntu-screen.html


0

TL; DR :

    $ sudo apt-get install x11vnc
    $ WINDOW_ID=$(xwininfo | awk '/Window.id/{print $4}') && x11vnc -viewonly -nopw -avahi -id $WINDOW_ID >/dev/null 2>&1 &

이제 공유하려는 창을 클릭하십시오.


전체 :

나는 아이 패드와 크롬 북을 가지고 있고, 내 모니터로 사용하기 좀 터미널 명령을 USO 싶습니다 htop, iptstate, nmon, 등. 그래서 나는 게으른 사람이며 다음을 사용하여 만들었습니다.

  1. 패키지 설치 : sudo apt-get install x11vnc
  2. 터미널을 열고 xwininfo | awk '/Window.id/{print $4}'공유하려는 창을 클릭하여 클릭하십시오. 출력은 다음과 같습니다.

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. 이제 x11vnc세션을 시작할 수 있습니다 :

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. 최상의 이미지를 얻으려면 창의 크기를 조정하십시오 (0x4402f34).

관련 마음 포트 사용자의 세션을 : 5900 -> :0, 5901 -:1, 5902 -> :2...

또한 X11 앱 (Firefox, OpenOffice 등)에서 잘 작동합니다.


0

vnc_virtual_display_linker 사용

이 도구는 이전의 많은 답변에서 설명한대로 VNC에 연결하기위한 두 번째 가상 모니터를 설정합니다. USB 케이블을 사용하는 Android 장치의 연결도 지원합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.