Android tableti ikinci ekran olarak nasıl kullanıyorsunuz?


63

Android veya iPad'inizi ikincil ekran olarak kullanmanıza izin veren Windows ve Mac için iDisplay adlı bir ürünü kullanan insanları gördüm . Bu harika bir fikir ve Ubuntu'da yapılabilecek bir şey gibi görünüyor. Ne yazık ki, nasıl başlayacağımı bilmiyorum.

Bu kurulumu Ubuntu'da nasıl yeniden oluşturabilirsin?


2
Benzer bir soru şu anda forumlarda tartışılıyor:
VNC'yi

1
Süper Kullanıcı'da aynı soru: İkinci bir Ekran oluşturmak için
VNC'yi

1
Tamam, burada sunulan çözümler ağ çözümleridir. Ancak bunu, Duet'in yaptığı gibi bir monitörle aynı deneyimi elde etmek için, sadece bir monitöre USB aracılığıyla taklit ederek bunu başarma şansınız var mı?
Augustin Riedinger,

Bu yüzden Duet (aslında) yazılımdaki bir DisplayLink yongasını taklit ediyor olabilir - bilmiyorum ama bu benim tahminim. Denemedim bile. Denemek istediğim (ve zor değil) USB ağı: tabletinizi ve ağınızı bağlamak (veya geri çevirmek).
chx

Yanıtlar:


28

Android için bir VNC istemcisi edinin, bilgisayarınızda yeni bir VNC sunucusu oturumu başlatın (yalnızca geçerli ekranı paylaşmayın - x11vnc değil vnc4server kullanın), Android VNC istemcisinden bağlanın ve (zekice bit) Android paylaşın PC klavyesi ve fareyi sinerji kullanarak iki seans arasında.

Bunu yapmak için gerekli tüm yazılımlar Ubuntu tarafının standart depolarında mevcuttur ve piyasada Android için birkaç ücretsiz VNC istemcisi bulunmaktadır.

Bu yöntemi kullanarak pencereleri ekranlar arasında sürükleyemezsiniz. Bunun için iki oturumu birbirine bağlamak için Xdmx kullanmanız gerektiğini düşünüyorum. Bu çok daha zordur ve muhtemelen 3D hızlanmayı kaybetmenize neden olur.

Ayrıca sinerji ve vnc'nin varsayılan olarak şifreleme kullanmadığını ve bu nedenle güvenilir bir ağda değilseniz bağlantıları kurmanız gerektiğini unutmayın.


9
Bir örnek ekleyebilirsiniz lütfen
rkmax

18
izleyebileceğimiz adım adım bir örneğe sahip olmak yararlı olacaktır
OganM

2
Bu nasıl bir tableti ikinci bir ekran yapar - daha fazla ekran alanında olduğu gibi?
NoBugs

Vncserver ve Gnome 3 ile sorunum vardı. Vncserver'ı başlatmaya çalıştığımda ekran kararır. Tightvncserver (Ubuntu depolarında da) kullanarak sona erdi ve kesinlikle hiçbir yapılandırma olmadan ilk denemede çalıştı.
20

Bu, ikinci bir ekrandan daha fazla KVM switch benzeri veya uzaktan kumanda çözümünden ibarettir. Evet, size başka bir girdi kümesi daha verir, ancak çıktı her iki cihazda da aynıdır - her iki düğmeyi de açarak tableti ana ekranınızdan farklı bir sanal masaüstüne bile aktaramazsınız. Soruyu cevaplamıyor. Soru, mobil cihazların girdilerle değil, fazladan çıktı alanı için kullanılmasıyla ilgilidir.
cprn

17

tl; dr: xrandr --fbve x11vnc --clipbirlikte bir katil combo yapar.

Tanıma ile bağlantılı olan konu başlığının ilginç bir fikri var; bu konuyu kastettiğinden emin değilim, çünkü yazdığı yazarı bulamadım ve ayrıca oradaki forum gönderisini takip ettiğim için bunu ayrı olarak gönderirim ve düzenleme yapıyorum. :

  1. İlk olarak, birincil makinenin 1280x800'lük bir ekran çözünürlüğüne sahip olduğunu ve masaüstünüzü VNC'yi genişletmek istediğiniz ikincil makinenin 1280x1024'lük ekran çözünürlüğüne sahip olduğunu ve genişletilmiş ekranın ana ekranınız için doğru olmasını istediğinizi varsayalım. Sanal ekran olması gerekiyor 1280x800 + 1280x1024 = 2560x1024. (Yatay olarak uzatın ve dikey çözünürlüğü ikiden büyütün) xrandr --fb 2560x1024.

  2. Şimdi, ekran birincil monitörünüzden daha büyük olduğu için, herhangi bir kaydırma veya herhangi bir istenmeyen "özellik" olmadığından ve ayrıca birincil monitörünüzün sol üst köşesinin koordinatlarının 0x0 olduğundan emin olmalısınız.

  3. x11vnc -clip 1280x1024+1281+0 artı tadı başka herhangi bir x11vnc seçenekleri ekleyin :)

Bu olmalı.


2
Bu, Synergy numarasından çok daha kusursuz bir yol gibi görünüyor, güzel! Ekstra sanal alanın döşeme pencerem yöneticisiyle nasıl etkileşime gireceğini merak ediyorum. Bunu kısa bir süre sonra bir atış yapacak ve geri rapor edecek.
Ibrahim

2
Yenilgi, zaferin çenesinden koptu. Fare işaretçisinin birincil ekrandan çıkmasına izin verilmez. :(
Gringo Suave

1
İlginç görünüyor. Aslında orada çift bir ekran var, ancak ne yazık ki, komutun xrandr --fb 2560x1024herhangi bir etkisi görünmüyor. Bu, birincil monitör
boyutumdan

1
Bu konuda daha fazla okudum . Bir 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 hata yaptım. Benim tahminim dizüstü bilgisayarımın doğaldan daha yüksek çözünürlüğü desteklememesi 1600*900. Yani bu çözüm işe yaramaz. Bunun yerine çift ekranlı bir çözüm bulmam gerekecek.
Augustin Riedinger

3
Sonunda bu yazı sayesinde çalışarak çalışmasını sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0--panning
sağladım

16

Kusursuzca bağlanan bu hariç, diğer cevapların işe yaramadığı görüldü.

Android'i ikinci bir monitör olarak kullanma, fareyi paylaşma, pencereleri tablet ile bilgisayar arasında sürüklemenizi sağlar.

İşte yorumların istediği bir adım adım öğretici.

A. Öğretici

1. Yeni bir sanal monitör oluşturun

Tabletimin çözünürlüğü 1280x1024. (Sen değişebilir 1280ve 1024tablet farklı çözünürlükte ise komutlar her yerde. Ayrıca değiştirmeniz gerekebilir LVDS1varsayılan monitörün adı farklı ise).

Terminalde çalıştırın:

  1. $ gtf 1280 1024 60.

Çıktıda benzer bir çizgi var Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Sözcükten sonraki her şeyi Modeline(dışla) bir sonraki komuta kopyala .

  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'yi başlatın

  1. x11vnc -clip 1280x1024+0+0

3. Android (LAN (Wi-Fi) veya USB (Kablo)) ile bağlayın

  1. Bilgisayarınızın IP adresini kullanarak ifconfig(LAN'dan bağlarken) bulun .

  2. Bir VNC uygulamasını indirin ve uygulamadaki IP'sini (ve bağlantı noktasını seçerek 5900) kullanarak bilgisayara bağlanın .

Uyarılar

  • Kredi: kjans , içerik düzenlendi.
  • UYARI : Veri şifrelenmemiş! (Wi-Fi ve LAN dışı kullanım için uygundur)
  • UYARI : Bağlanmış olduğunuz ve 5900 numaralı bağlantı noktasına ulaşabilen herhangi bir ağ monitörünüze bağlanabilir! (USB VE sınırlı arabirim ekleme -listen <IP_ADDR>seçeneği kullanıyorsanız sorun değil x11vnc( <IP_ADDR>özel erişim vermek istediğiniz ağdaki bilgisayarın adresi nerede )
  • 1 - 4 adımlardan herhangi birinin iki kez çalıştırılması hata verebilir.
  • Başarılı kullanımdan sonra, 5. adım başka bir bağlantı için tekrarlanmalıdır.

B. Script

Bir komut dosyası olarak uygulanan eğitim (IP kablosunu USB kablosuyla kullanmak için değiştirin VEYA silin ve Wi-Fi ile kullanmak için satırın satırını kaldırın).

#!/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+0kutu ile değiştirilebilir x11vnc -clip xinerama1. Ayrıca, ekstra monitörü istediğiniz yere konumlandırmak için ayarlar uygulamasını --left-of LVDS1kullanacaksanız, kesinlikle gerekli değildir Monitors.
LeoRochael

6
xrandr: cannot find output "VIRTUAL1"3 numarayı yazdığımda iade edildi. Herhangi bir fikir?
dat tutbrus

3
xrandr: cannot find output "VIRTUAL1"döndüxrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis

Bu işe yarar, ancak bunun çalışması için hedef video modunu kullanmayan kullanılmamış bir çıkışa sahip olmanız gerekir. VIRTUAL1Tipik bir sistemde mevcut bir şey değil, böyle bir çıktı için bir yer tutucu gibi görünüyor.
Ruslan

1
@cprn Evet, fare imlecini paylaşabilir ve pencereleri sürükleyebilirsiniz. Sanırım ikinci bir monitöre bağlıymışsınız gibi
Elijas

13
  1. Yükleyin vnc4serverve x2x.
  2. Sonra bir .vnc/xstartupconfig dosyası kurun . Benimki buna benziyor

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

    Bu gnome-geri dönüş masaüstünü başlattı (gnome 3'ün vnc'de nasıl başlatılacağını bilmiyorum).

  3. Vnc sunucusunu başlatmak için vnc4server -geometry 800x480komutu kullanın. Tabii ki, 800x480 yerine, tabletinizin çözünürlüğünü ayarlamanız gerekir.
  4. Fırlatma x2x -east -to :1. Bu komut, bilgisayarınızın ekranın sağındaymış gibi davranacağını söyler: 1 ekranın sağındaydı ( -westsolda olmasını istiyorsanız bu seçeneği kullanın ). Uygulamaları bir ekrandan diğerine taşıyamazsınız, ancak ikisini de kontrol etmek için bir fare ve bir klavye kullanabilirsiniz.
  5. vnc4serverTabletinizden oluşturulan ekrana bağlanın (port numarası 5900 + ekran numarasıdır (örn. Ekran için: 1 port numarası 5901 olacaktır)) (ekran numarası vnc4serverçıkışta gösterilir ).
  6. Çıkmak için x2xtuşuna basın Ctrl-C. Alternatif olarak, arka planda ( x2x -east -to :1 &) başlatabilirsiniz . O zaman önce onu ön plana ( fg) götürmeniz ya da onu öldürmeniz gerekir kill $!(dikkatli olun, arka planda başlatılan son işlemi öldürür).
  7. Oluşturulan ekranı kaldırmak için vnc4server -kill :1, yerine :1yeni ekranınızın numarasını belirleyebilirsiniz.

1
X2x için teşekkürler ... Neden internetten başka hiç kimse bahsetmiyor ??? Bana büyük zaman kazandırdı. Sinerji, tabletinizde siyanojen mod veya benzeri gerektirir. Ayrıca kimse ondan bahsetmiyor.
Stefanos Kalantzis

1
Zaten biliyorum x2x, bu yazı google x2x android arayarak buluyorum ... Ama +1 için .vnc/xstartup, especialy için unset DBUS_SESSION_BUS_ADDRESS!! Küçük ama zengin ve çok kullanışlı yazı, teşekkürler!
F. Hauri,

7

Bu, prensip olarak, ayrı makinelerde çalışan iki X sunucusu kullanarak tek bir masaüstü oluşturmanıza olanak sağlayan xdmx (dağıtılmış çoklu kafalı X) kullanılarak mümkündür.

prensipte üç senaryo mümkündür, ancak hiçbiri iDisplay kadar kusursuz değildir, çünkü hepsinin en azından X oturumunu yeniden başlatması gerekir. Mükemmel bir şekilde çalışamadım ama Ubuntu 10.10 kullanıyorum ve çeşitli nedenlerden dolayı yükseltme yapamıyorum. Üç:

1: android üzerinde bir X-server çalıştırın (uygulama mağazasında şu anda iki tane var) ve masaüstü veya dizüstü bilgisayarınızın ekranıyla birleştirmek için xdmx kullanın. - benim için işe yaramadı çünkü işaretçi masaüstünün tablet kısmına taşındığında xdmx çöktü.

2: Bilgisayarınızda vnc arka uçlu ikinci bir X-server çalıştırın, bunu bilgisayar ekranınızla bir masaüstünde birleştirmek için xdmx kullanın, sonra sanal bölüme tabletteki bir vnc görüntüleyiciyle bakın - benim için işe yaramadı çünkü xdmx tüm x sunucuların aynı renk görsellerine sahip olmasını gerektirir; vncserver ve gerçek ekran için durum böyle değildir ve vncserver'ı değişime ikna edemedim.

3: her ekran için bir tane olmak üzere iki vncserveri çalıştırın, sonra bunları xdmx ile bağlayın ve ilgili parçadaki bir vncviewer ile her bir kısma bakın. - Bu benim için çalışmaya en yaklaştı, maalesef giriş berbattı. Ayrıca wifi üzerinden gerçek renkte oldukça yavaştı. Bu betiği xdmx ve vncs'yi başlatmak için kullandım:

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

Bir tableti ikinci bir ekran yapmak için basit bir bash betiği yaptım. Blog yazımda kopyala ipad_monitor.sh(Endişelenme. Android ile de çalışır) .

Diğer yazıdan farklı olan, ikinci ekranın konumunu ek argümanla çok kolay bir şekilde ayarlayabilmenizdir.

Düzenleme: Orijinali ipad_monitor.shburaya ekledim. bu komutu şöyle çalıştır:

  • ./ipad_monitor.sh --right veya ./ipad_monitor.sh --left
  • ./ipad_monitor.sh --right --portrait
  • ./ipad_monitor.sh --right --portrait --hidpi

Bu betiğin temel fikri diğerleriyle aynı, çalışıyor xrandrve x11vncekranı hangi tarafa eklemek istediğinize dair seçenekler ekledim.

#!/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
Bağlantı çürüklüğünden kaçınmak için komut dosyası / uygulama için bir adınız veya gönderebileceğiniz alternatif bir bağlantınız var mı? Burada, genellikle, özellikle bu sitelerin cevapların içine konmadığı bir cevapla alakalı olan bilgilerin büyük bir kısmını içeriyorsa, kalan diğer sitelere güvenmemek için olabildiğince özdeyer olmaya çalışırız. .
sbergeron

Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantılı sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir. - Şu kaynaktan
anonymous2

2
@sbergeron görüyorum. Orijinal kodu buraya ekliyorum.
Bumsik Kim

1
@ anonymous2 Haklısın. Bash kodunu buraya ekledim.
Bumsik Kim

Ah, çok daha iyi. Bunun böyle yapışması gerektiğini düşünüyorum.
Anonim2

2

Xorg kukla sürücü ve x11vnc -clip kullanıyorum. Fare noktası kenarına yapışmamış.

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

Orada /etc/X11/xorg.confikinci ekranda kukla sürücü için:

"Aygıt" bölümü
        Tanımlayıcı "Yapılandırılmış Video Cihazı"
    Sürücü "radeon" # BU DEĞİŞİM
EndSection

"Monitor" bölümü
        Tanımlayıcı "Configured Monitor"
EndSection

Bölüm "Ekran"
        Tanımlayıcı "Varsayılan Ekran"
        "Yapılandırılmış Monitör" izlemesi
        "Yapılandırılmış Video Cihazı" Cihazı
EndSection


## Xdummy: ##
"Aygıt" bölümü
  Tanımlayıcı "Videocard0"
  Sürücü "kukla"
  #VideoRam 4096000
  VideoRam 256000
EndSection

## Xdummy: ##
"Monitor" bölümü
  Tanımlayıcı "Monitor0"
# HorizSync 10.0 - 300.0
# VertRefresh 10.0 - 200.0
# DisplaySize 4335 1084
EndSection

## Xdummy: ##
Bölüm "Ekran"
  Tanımlayıcı "Screen0"
  "Videocard0" Cihazı
  Monitör "Monitor0"
EndSection



"ServerLayout" bölümü
  "Dummy_layout" tanımlayıcısı
  Ekran 0 "Varsayılan Ekran"
  Ekran 1 "ekran0" rightof "Varsayılan Ekran"
    Seçenek "Xinerama" "1"
EndSection

Sonra X oturumuna giriş yapın ve çalıştırın:

x11vnc -clip 1024x768+1280+0

Xorg.conf olmadan bunu yapmanın bir yolu var mı? Bilgisayarımda bir tane oluşturursam, grafiklerim tamamen karışıyor.
saat

Xinerama hala destekleniyor mu? Peki ya xrandr?
Gringo Suave

1

Bu talimatlar linux makineniz için bir tablet veya VNC istemcisi aracılığıyla herhangi bir bilgisayarı kullanarak "ek" bir ekran oluşturmak içindir.

Bu adımları Mageia3 32Bit'te yaptım (64bit'i denemedim) ancak diğer dağıtımlar için de aynı olmalıdır (örn. Ubuntu).

Gerekli tüm paketleri aşağıdaki terminal komutuyla aldığınızdan emin olun:

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

Yukarıdaki paketlerin tümüne sahipseniz, şu komutları verin:

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

Herhangi bir hata almazsanız, yama Xdmx (basitçe söylemek gerekirse, bir süredir "kırıldı"):

açın /usr/share/x11-server-sources/hw/dmx/input/dmxevents.cve satırı 730 değiştirin: bunu değiştirin:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

buna:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

Eğer 730 satırı farklıysa, doğru satırı bulmak için bu bölümü kullanın: Orjinal bölüm - ile işaretlenmiş değiştirmek için satır *

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

Çalıştırarak Xdmx sürümünüzü kontrol ./configure --versioniçinde /usr/share/x11-server-source/için, Xdmx 1.13 ve üstü Ayrıca bu değişiklikleri yapmak zorunda (1.14 için ve daha yeni "make" adım aşağıda atlayabilirsiniz):

açık /usr/share/x11-server-sources/dix/getevents.c, satır 1395: bunu değiştir:

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

Buna:

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

(Orijinal bölüm - * ile işaretli değiştirilecek satır)

    /* 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);

açık /usr/share/x11-server-sources/Xext/xtest.c, satır 311: bunu değiştir:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

buna:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(orijinal bölüm - * ile işaretlenmiş değiştirilecek satır)

       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, line 73: Bu satırı şu satırla başlar #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Yukarıdaki değişiklikleri yaptıktan sonra, yeniden çalıştırın (in /usr/share/x11-server-sources/):

make

Yeni bir Xdmx dosyanız olmalıdır /usr/share/x11-server-sources/hw/dmx/. Kolaylık sağlamak için bunu global olarak kurmamız gerekiyor, bu yüzden var olanınızı yeniden adlandırmanızı öneriyorum:

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

ve bunun yerine yenisini kopyalayın:

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

Artık ilk denemenizi yapmaya hazırsınız, aşağıdaki komutlar ana / varolan ekranınızı ( :0) çalışır durumda tutmanıza ve çoklu monitör desteğiyle yeni bir ekran açmanıza izin veriyor . Biraz daha hafif yapmak için bu komutlarla icewm kullanıyorum (ana ekranımda KDE kullanıyorum :0ve yeni çoklu kafalı ekranda herhangi bir büyük çoklu monitör uygulamasını açıyorum ). Bu komutları kullanım kolaylığı için kesinlikle kodlayabilirsiniz (yaptığım buydu) - Bu komutlardan herhangi biri herhangi bir ekranın konsolunda ve / veya terminal penceresinde çalıştırılabilir, tek gereksinim sırayla çalıştırılmasıdır.

Bu komut, yeni ekranınızı VNC ekranınız için bir çerçeve tamponu olarak oluşturur :2(ekran boyutunu istediğiniz gibi ayarlayın):

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

Bu, fiziksel ekranınızda ekran olarak yeni bir hafif X oturumu başlatır :1(bunu yapmanın farklı yolları vardır):

startx 'icewm' -- :1

Bu komut, fiziksel ekranınızla sanal ekran arasındaki çoklu ekranı başlatır ve pencere yöneticisi için icewm'i başlatır:

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

Şimdi bir terminal penceresi açın ve vnc sunucusunu başlatın (istediğiniz gibi şifreyi değiştirin):

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

Şu an yapılacak tek şey VNC istemcinizi ateşlemek ve VNC'nize bağlanmaktır - güvenlik duvarınızı bağlantı noktası 5900'e devre dışı bırakmanız veya bir istisna eklemeniz gerekebilir, böylece bağlantı kurabilirsiniz. Akılda tutulması gereken başka bir şey, bazı VNC istemcilerinin uzak imleç konumunu göstermemesidir, "yerel fare" seçeneğini kapatırsanız, iOS için "Mocha VNC" nin mükemmel çalıştığını onaylarım.

Ana monitörünüz ile yeni sanal ikinci monitörünüz arasında pencereleri sürüklemenin keyfini sürün (aynı zamanda tableti ikinci monitördeki şeylere tıklamak / yazmak için de kullanabilirsiniz).

Xdmx'i kapatmak için Ctrl+ Alt+ tuşuna Backspaceiki kez basın .

Otomasyon:

Tüm süreci başlatmak için bu bash betiğini kullanıyorum (ayrıca çıkışta Xvfb'yi de öldürüyor):

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

Sonra bununla özel bir ~/.xinitrcdosya var:

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

Sorun giderme:

  • Eğer belirten bir hata alırsanız Xdmx çalıştırırken sh: /usr/local/bin/xkbcomp: No such file or directory: Eğer yürütmek yapmanız gerekebilir cd /usr/local/bin" and "ln -s /bin/xkbcomp, daha sonra tekrar Xdmx deneyin.

  • Ctrl+ Alt+ F1yoluyla F7, Xdmx'te diğer konsollara / xsessions'lara geçmek için çalışması gerekiyor, ancak nedense çalışmıyor, yaptığım şey sadece sudo chvt Xbenim ana ekranıma geçmek için (X'in konsol / xsession numarası olduğu) yürütülmesi. Ayrıca Xdmx'e geri döndüğünüzde, herhangi bir açık pencerede bazı çizim sorunları görebilirsiniz, sadece yeniden çizmeye zorlayan pencereyi tekrar gizlemek / göstermek için görev çubuğuna tıklıyorum.


0

Eğitici çocuklar için teşekkürler, Ubuntu 14.04'te benim için neyin işe yaradığını paylaşacağım.

AndroidVNC'yi tabletiniz için buraya alın

Çalıştırarak Ubuntu bilgisayarınız için x11vnc edinin

sudo apt-get install x11vnc

Xorg kukla sürücü yöntemini kullanmak zorunda kaldım. İşte benim /etc/X11/xorg.conf dosyam nasıl gözüküyor:

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**

Muhtemelen oradaki her şeye ihtiyacınız olmayacak, sadece sisteminizin otomatik konfigürasyonunu yapmak için X -configure komutunu çalıştırın ve kukla bölümleri (yıldız işaretleri arasında kalanlar) dosyanıza ekleyin. Xorg.conf içindeki yapay ekran için çözünürlük, ana monitör genişliğiniz + tablet çözünürlük genişliğiniz olmalıdır, benim durumumda 1680 + 1024 = 2704, ana monitör yüksekliğinizi, benim durumumda 1050 kalsın. Yeniden başlat X sunucu / Yeniden Başlatma / Çekme fişi, sana daha çok yakışır :).

X11vnc komutunu çalıştırarak

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

Burada çözünürlük tabletinizin genişliği x tablet yüksekliği + Ana ekran genişliği + 0 olmalıdır.

AndroidVNC istemcisini kullanarak PC'nize bağlanın, localmouse seçeneğini etkinleştirdiğinizden emin olun. Bu olmalı, şimdi linux'un android üzerinden geçmesinin garipliğini hissedin :)


0

Burada listelenen diğer tekniklerle ilgili birçok sorun yaşadım. Keşke daha iyi bir çözüm olsaydı, ama yavaş ve basit çözümüm iyi bir başlangıç.

VNC sunucusu için vncserverpaketi denedim, ancak ekran kararır ve gdmtekrar çalışabilmek için yeniden başlatmam gerekirdi . Ben değiştim tightvncserverve ilk kez yapılandırma olmadan çalıştı.

Fare / klavyeyi ekranlar arasında paylaşmak için x2vnc kullandım . Bu , fareyi / klavyeyi Linux PC'nizin yanındaki bir Windows PC ile paylaşmak için win2vnc ile de kullanılabilir .

Son komutlar:

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

Bu noktada ikinci ekranı VNC programında bağlanarak açabilmelisiniz YOUR_IP_ADDRESS:1. VNC ekranında bir program başlatmak için bir terminal açın, ayarlayın DISPLAYve sonra komutu çalıştırın. Örneğin xterm, VNC "ekranı" nı açmak için, şunu çalıştırın:

export DISPLAY=:1
xterm

Bu yaklaşımı kullanarak, ikinci ekran oldukça yavaş. Yine de, denediğim diğer seçeneklerin çoğu çıkmaza girdi ve bu hiç bir yapılandırma ile işe yaramadı.


0

Hala bu konuyu merak eden herkes için: xrandr ve x11vnc klibi işe yarıyor; farenin oraya ulaşmasını sağlamak için, fare izleme alanını ayarlamak için kaydırma bağımsız değişkenini kullanmanız gerekir:

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

Sonra xvnc kullanımı çalıştırırken:

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

Bu, VNC'nin kendi imleç takibini kullanmaya çalışmasını önler ve imleci ekran görüntüsünün bir parçası olarak boyar.

Buraya not aldım 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 &

Şimdi, paylaşmak istediğiniz pencereye tıklayın.


TAM :

Ben bir iPad ve Chromebook var ve benim monitör olarak bunları kullanmak için sadece bazı uç komutları USO istiyorum htop, iptstate, nmon, vb. Bu yüzden tembel bir adamım ve bunu kullanarak yaptım:

  1. Paket instalation: sudo apt-get install x11vnc
  2. Bir terminal açın ve xwininfo | awk '/Window.id/{print $4}'paylaşmak istediğiniz pencereye tıklayın ve tıklayın. Çıktı şöyle bir şey olacak:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Şimdi x11vncoturumunuza başlayabilirsiniz :

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Pencereyi (0x4402f34) mümkün olan en iyi görüntüye sahip olacak şekilde yeniden boyutlandırın.

İlişkili Zihin portu çıkartmalarınızın oturumu : 5900 -> :0, 5901 -:1, 5902 -> :2...

Ayrıca, X11 uygulamalarıyla iyi çalışır: Firefox, OpenOffice, vb.


0

Vnc_virtual_display_linker kullanın

Araç, önceki cevapların çoğunda açıklandığı gibi VNC'ye bağlanmak için ikinci bir sanal monitör kurar. Hatta bir USB kablosu kullanarak Android cihazlardan bağlantıları destekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.