Bagaimana Anda menggunakan tablet android sebagai tampilan kedua?

63

Saya perhatikan orang menggunakan produk untuk Windows dan Mac yang disebut iDisplay yang memungkinkan Anda menggunakan Android atau iPad sebagai tampilan sekunder. Ini sepertinya ide bagus, dan sesuatu yang bisa dilakukan di Ubuntu. Sayangnya, saya tidak tahu bagaimana memulainya.

Bagaimana Anda bisa membuat ulang pengaturan ini di Ubuntu?

Mark B
sumber
2
Pertanyaan serupa saat ini sedang dibahas di forum: Gunakan VNC sebagai monitor kedua
ændrük
1
Pertanyaan yang sama pada Pengguna Super: Gunakan VNC untuk membuat Layar kedua
ændrük
1
Ok, solusi yang disajikan di sini adalah solusi jaringan. Tetapi apakah ada peluang untuk mencapai ini hanya dengan memalsukan monitor melalui usb, untuk mendapatkan pengalaman yang sama seperti monitor seperti halnya Duet ?
Augustin Riedinger
Jadi Duet mungkin (dasarnya) meniru chip DisplayLink dalam perangkat lunak - Saya tidak tahu, tapi itu dugaan saya. Saya bahkan tidak akan mencoba. Apa yang akan saya coba (dan itu tidak sulit) adalah jaringan USB: tether (atau reverse tether) tablet dan jaringan Anda.
chx

Jawaban:

28

Dapatkan klien VNC untuk Android, mulai sesi server VNC baru di komputer Anda (jangan hanya berbagi tampilan saat ini - gunakan vnc4server bukan x11vnc), sambungkan ke sana dari klien VNC Android, dan (bit pintar) bagikan Keyboard dan mouse PC antara dua sesi menggunakan sinergi.

Semua perangkat lunak yang diperlukan untuk melakukan ini tersedia dalam repo standar untuk sisi Ubuntu, dan ada beberapa klien VNC gratis yang tersedia untuk Android di pasar.

Anda tidak akan dapat menyeret jendela di seluruh layar menggunakan metode ini. Untuk itu saya pikir Anda perlu menggunakan Xdmx untuk mengikat dua sesi. Ini jauh lebih sulit dan mungkin akan menyebabkan Anda kehilangan akselerasi 3D.

Perlu diketahui juga bahwa sinergi dan vnc tidak menggunakan enkripsi secara default sehingga Anda perlu membuat terowongan koneksi jika Anda tidak berada di jaringan tepercaya.

Alistair Buxton
sumber
9
dapat menambahkan contoh tolong
rkmax
19
akan bermanfaat untuk memiliki contoh langkah demi langkah yang bisa kita ikuti
OganM
2
Bagaimana ini akan membuat tablet menjadi layar kedua - seperti di lebih banyak ruang layar?
NoBugs
Saya mengalami masalah dengan vncserver dan Gnome 3. Setiap kali saya mencoba meluncurkan vncserver layar akan menjadi hitam. Saya akhirnya menggunakan tightvncserver (juga di repo Ubuntu) dan berhasil mencoba pertama tanpa konfigurasi sama sekali.
Thirdender
Ini lebih merupakan solusi switch-like KVM atau remote control daripada tampilan kedua. Ya, itu memberi Anda satu set input lain tetapi outputnya sama pada kedua perangkat - Anda bahkan tidak bisa mengganti tablet ke desktop virtual yang berbeda dari layar utama Anda, dengan menghidupkan satu switch keduanya. Itu tidak menjawab pertanyaan. Pertanyaannya adalah tentang menggunakan perangkat seluler untuk ruang output tambahan, bukan tentang input sama sekali.
cprn
17

tl; dr: xrandr --fbdan x11vnc --clipbersama-sama membuat kombo pembunuh.

Utas yang ditautkan oleh acceptitium memiliki ide yang sangat menarik, tidak yakin apakah maksudnya ini karena saya tidak dapat menemukan penulis yang diindikasikan dan juga karena saya menindaklanjuti posting forum di sana, saya akan memposting ini secara terpisah dan bukan sebagai sunting. :

  1. Pertama, mari kita asumsikan mesin utama memang memiliki resolusi layar 1280x800 dan mesin sekunder yang Anda ingin memperluas desktop Anda ke lebih dari VNC memiliki resolusi layar 1280x1024 dan Anda ingin layar yang diperluas berada tepat di layar utama Anda. Layar virtual perlu 1280x800 + 1280x1024 = 2560x1024. (rentangkan secara horizontal dan buat resolusi vertikal lebih besar dari keduanya) Jadi jalankan xrandr --fb 2560x1024.

  2. Sekarang, bahwa layar lebih besar dari monitor utama Anda, Anda harus memastikan tidak ada panning atau "fitur" yang tidak diinginkan lainnya yang diaktifkan dan juga bahwa koordinat sudut kiri atas monitor utama Anda adalah 0x0.

  3. x11vnc -clip 1280x1024+1281+0 ditambah menambahkan opsi x11vnc lainnya sesuai selera :)

Seharusnya begitu.

chx
sumber
2
Ini sepertinya cara yang lebih mulus untuk melakukannya daripada trik Synergy, bagus! Saya ingin tahu bagaimana ruang virtual tambahan akan berinteraksi dengan window manager ubin saya. Akan mencoba ini sebentar lagi dan melaporkan kembali.
Ibrahim
2
Kekalahan disambar dari rahang kemenangan. Penunjuk tetikus tidak diizinkan meninggalkan layar utama. :(
Gringo Suave
1
Terlihat menarik. Saya benar-benar berhasil memiliki layar ganda di sana, tetapi sayangnya, perintah xrandr --fb 2560x1024itu tampaknya tidak berpengaruh. Yang berarti saya tidak dapat memiliki layar yang lebih besar dari ukuran monitor utama saya ... :(
Augustin Riedinger
1
Saya membaca lebih lanjut tentang ini . Ada 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 kesalahan. Dugaan saya adalah bahwa laptop saya tidak mendukung resolusi yang lebih tinggi daripada yang asli 1600*900. Berarti solusi ini tidak dapat bekerja. Saya harus mencari solusi layar ganda sebagai gantinya.
Augustin Riedinger
3
Saya akhirnya membuatnya bekerja berkat pos ini dengan menjalankan: sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(Saya tidak punya --panningpilihan)
Augustin Riedinger
16

Tidak dapat membuat jawaban lain berfungsi, kecuali ini , yang terhubung dengan sempurna.

Ini memungkinkan untuk menggunakan Android sebagai monitor kedua, berbagi mouse, menyeret windows antara tablet dan komputer.

Inilah tutorial langkah demi langkah, yang diminta oleh komentar.

A. Tutorial

1. Buat monitor virtual baru

Resolusi tablet saya adalah 1280x1024. (Anda dapat mengubah 1280dan 1024di mana saja dalam perintah jika tablet Anda memiliki resolusi berbeda. Anda juga mungkin perlu mengubah LVDS1jika nama monitor default berbeda).

Jalankan di terminal:

  1. $ gtf 1280 1024 60.

Ada garis dalam output yang mirip dengan Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Salin semuanya setelah kata Modeline(kecualikan) ke perintah berikutnya.

  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. Mulai VNC

  1. x11vnc -clip 1280x1024+0+0

3. Terhubung dengan Android (LAN (Wi-Fi) atau USB (Kabel))

  1. Temukan IP komputer Anda menggunakan ifconfig(saat menghubungkan dari LAN).

  2. Unduh aplikasi VNC dan sambungkan ke komputer menggunakan IP-nya (dan pilih port 5900) di aplikasi.

Pemberitahuan

  • Kredit: kjan , konten diedit.
  • PERINGATAN : Data tidak dienkripsi! (Relevan untuk penggunaan Wi-Fi dan bukan-LAN)
  • PERINGATAN : Jaringan apa pun yang Anda sambungkan yang dapat mencapai port 5900 dapat terhubung ke monitor Anda! (Tidak masalah jika menggunakan USB DAN membatasi antarmuka menambahkan -listen <IP_ADDR>opsi ke x11vnc(di mana <IP_ADDR>alamat komputer di jaringan Anda ingin memberikan akses eksklusif))
  • Menjalankan salah satu dari langkah 1 - 4 dua kali dapat menghasilkan kesalahan.
  • Setelah berhasil digunakan, 5. langkah harus diulang untuk koneksi lain.

B. Script

Tutorial diimplementasikan sebagai skrip (Ubah IP untuk digunakan dengan kabel USB ATAU hapus dan hapus baris komentar untuk digunakan dengan 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
Elija
sumber
@ Prometheus, x11vnc -clip 1280x1024+0+0bisa diganti dengan x11vnc -clip xinerama1. Selain itu, --left-of LVDS1ini tidak sepenuhnya diperlukan jika Anda belakangan akan menggunakan Monitorsaplikasi pengaturan untuk menempatkan monitor tambahan di mana pun Anda inginkan.
LeoRochael
6
xrandr: cannot find output "VIRTUAL1"dikembalikan ketika saya mengetikkan angka 3. Ada gagasan?
dat tutbrus
3
xrandr: cannot find output "VIRTUAL1"kembali darixrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis
Ini berfungsi, kecuali Anda harus memiliki output yang tidak terpakai yang mampu dari mode video target agar ini berfungsi. VIRTUAL1tampaknya menjadi pengganti untuk output seperti itu, bukan sesuatu yang hadir dalam sistem yang khas.
Ruslan
1
@ cprn Ya, Anda dapat membagikan kursor mouse dan menarik jendela. Sepertinya Anda memiliki monitor kedua yang terhubung
Elijas
13
  1. Pasang vnc4serverdan x2x.
  2. Kemudian, siapkan .vnc/xstartupfile konfigurasi. Milik saya terlihat seperti ini

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

    Ini meluncurkan desktop gnome-fallback (saya tidak tahu bagaimana membuat gnome 3 diluncurkan di vnc).

  3. Untuk meluncurkan server vnc, gunakan vnc4server -geometry 800x480perintah. Tentu saja, alih-alih 800x480 Anda harus mengatur resolusi tablet Anda.
  4. Luncurkan x2x -east -to :1. Perintah itu mengatakan komputer Anda untuk bertindak seolah-olah tampilan: 1 berada di sebelah kanan layar (gunakan -westopsi jika Anda ingin berada di sebelah kiri). Anda tidak akan dapat memindahkan aplikasi dari satu tampilan ke tampilan lainnya, tetapi Anda dapat menggunakan satu mouse dan satu keyboard untuk mengontrol keduanya.
  5. Sambungkan ke layar yang dibuat dengan vnc4serverdari tablet Anda (nomor port adalah 5900 + nomor layar (mis. Untuk tampilan: 1 nomor port akan menjadi 5.901) (nomor layar ditampilkan dalam vnc4serveroutput)).
  6. Untuk keluar dari x2x, tekan Ctrl-C. Atau, Anda dapat meluncurkannya di latar belakang ( x2x -east -to :1 &). Maka pertama-tama Anda harus memindahkannya ke foreground ( fg), atau membunuhnya dengan kill $!(hati-hati, itu membunuh proses terakhir diluncurkan di latar belakang).
  7. Untuk menghapus tampilan yang dibuat, panggil vnc4server -kill :1, di mana alih-alih :1Anda dapat mengatur nomor tampilan baru Anda.
cepat
sumber
1
Terima kasih untuk x2x ... Mengapa tidak ada orang lain yang menyebutkannya di seluruh internet ??? Menyelamatkan saya waktu besar. Sinergi membutuhkan cyanogenmod atau yang serupa pada tablet Anda. Juga tidak ada yang menyebutkannya.
Stefanos Kalantzis
1
Saya sudah tahu x2x, cari posting ini dengan mencari x2x android di google ... Tapi +1 untuk .vnc/xstartup, terutama untuk unset DBUS_SESSION_BUS_ADDRESS!! Posting kecil tapi kaya dan sangat berguna, terima kasih!
F. Hauri
7

Ini pada prinsipnya mungkin menggunakan xdmx (didistribusikan multihead X) yang memungkinkan Anda untuk membuat desktop tunggal menggunakan dua X-server yang berjalan pada mesin yang terpisah.

tiga skenario pada prinsipnya mungkin, tetapi tidak ada yang semulus iDisplay, karena mereka semua memerlukan memulai ulang sesi X Anda setidaknya. Saya belum dapat bekerja dengan baik, tetapi saya menjalankan Ubuntu 10.10 dan tidak dapat memutakhirkan karena berbagai alasan. Ketiganya adalah:

1: jalankan X-server di android (ada dua tersedia sekarang di app store) dan gunakan xdmx untuk bergabung dengan tampilan desktop atau laptop Anda. - tidak berfungsi untuk saya karena xdmx mogok ketika pointer pindah ke bagian tablet desktop.

2: jalankan X-server kedua dengan backend vnc di komputer Anda, gunakan xdmx untuk menggabungkannya menjadi satu desktop dengan layar komputer Anda, kemudian lihat bagian virtual dengan penampil vnc di tablet - tidak berfungsi untuk saya karena xdmx mengharuskan semua x-server memiliki visual warna yang sama, yang tidak berlaku untuk vncserver dan tampilan sebenarnya, dan saya tidak dapat meyakinkan vncserver untuk berubah.

3: jalankan dua vncservers, satu untuk setiap layar, lalu sambungkan dengan xdmx dan lihat setiap bagian dengan vncviewer pada mesin yang bersangkutan. - Ini yang paling dekat dengan bekerja untuk saya, sayangnya inpout kacau. itu juga cukup lambat dalam warna asli melalui wifi. Saya menggunakan skrip ini untuk memulai xdmx dan vncs:

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

Felix
sumber
3

Saya membuat skrip bash sederhana untuk menjadikan tablet tampilan kedua. Salin ipad_monitor.sh(Jangan khawatir. Ini juga berfungsi dengan Android) di posting blog saya .

Apa yang berbeda dari posting lain adalah bahwa Anda dapat mengatur posisi layar kedua dengan argumen tambahan dengan sangat mudah.

Sunting: Saya menyertakan yang asli di ipad_monitor.shsini. jalankan perintah ini seperti:

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

Ide dasar skrip ini sama dengan yang lain, berjalan xrandrdan x11vnctetapi saya menyertakan opsi seperti sisi mana yang ingin Anda lampirkan layar.

#!/bin/sh
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <[email protected]> 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
Bumsik Kim
sumber
1
Apakah Anda memiliki nama untuk skrip / aplikasi atau tautan alternatif apa pun yang dapat Anda poskan untuk membantu menghindari tautan busuk? Di sini kami biasanya mencoba untuk menjadi mandiri mungkin agar tidak bergantung pada situs lain begadang, terutama jika situs-situs tersebut berisi sebagian besar info yang akan relevan dengan jawaban di mana info yang sebenarnya tidak dimasukkan ke dalam jawaban .
sbergeron
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
anonymous2
2
@Sbergeron saya mengerti. Saya memasukkan kode asli di sini.
Bumsik Kim
1
@ anonim2 Anda benar. Saya menyertakan kode bash di sini.
Bumsik Kim
Ah, jauh lebih baik. Saya pikir ini harus bisa bertahan seperti ini.
anonymous2
2

Saya menggunakan driver dummy xorg dan x11vnc -clip. Titik mouse tidak tersangkut di tepi.

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

Ada /etc/X11/xorg.confuntuk driver dummy di layar kedua:

Bagian "Perangkat"
        Identifier "Perangkat Video yang Dikonfigurasi"
    Driver "radeon" #CHANGE INI
Bagian Akhir

Bagian "Monitor"
        Identifier "Monitor Terkonfigurasi"
Bagian Akhir

Bagian "Layar"
        Identifier "Layar Default"
        Monitor "Monitor Terkonfigurasi"
        Perangkat "Perangkat Video yang Dikonfigurasi"
Bagian Akhir


## Xdummy: ##
Bagian "Perangkat"
  Identifier "Videocard0"
  Driver "dummy"
  #VideoRam 4096000
  VideoRam 256000
Bagian Akhir

## Xdummy: ##
Bagian "Monitor"
  Identifier "Monitor0"
# HorizSync 10.0 - 300.0
# VertRefresh 10.0 - 200.0
# DisplaySize 4335 1084
Bagian Akhir

## Xdummy: ##
Bagian "Layar"
  Identifier "Screen0"
  Perangkat "Videocard0"
  Monitor "Monitor0"
Bagian Akhir



Bagian "ServerLayout"
  Identifier "dummy_layout"
  Layar 0 "Layar Default"
  Layar 1 "layar0" sebelah kanan "Layar Default"
    Opsi "Xinerama" "1"
Bagian Akhir

Kemudian login ke sesi X dan jalankan:

x11vnc -clip 1024x768+1280+0
fatamorgana
sumber
Adakah cara untuk melakukan ini tanpa xorg.conf? Jika saya membuat satu di komputer saya maka gambar saya benar-benar kacau.
Daboross
Apakah Xinerama masih didukung? Bagaimana dengan xrandr?
Gringo Suave
1

Petunjuk ini untuk membuat layar "tambahan" untuk mesin linux Anda menggunakan tablet atau komputer apa pun melalui klien VNC.

Saya membuat langkah-langkah ini di Mageia3 32Bit (belum mencoba 64bit) tetapi harus serupa untuk distro lain juga (yaitu Ubuntu).

Pastikan Anda memiliki semua paket yang diperlukan dengan perintah terminal berikut:

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

Setelah Anda memiliki semua paket di atas, keluarkan perintah ini:

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

Jika Anda tidak mendapatkan kesalahan, tambal Xdmx (sederhananya, sudah "rusak" untuk beberapa waktu):

buka /usr/share/x11-server-sources/hw/dmx/input/dmxevents.c, dan ubah baris 730: ubah ini:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

untuk ini:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

JIKA baris 730 berbeda gunakan bagian ini untuk menemukan garis yang benar: Bagian asli - baris untuk berubah ditandai dengan *

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

Periksa versi Xdmx dengan menjalankan ./configure --versiondi /usr/share/x11-server-source/, untuk Xdmx 1,13 dan lebih tua Anda juga harus membuat perubahan ini (untuk 1,14 dan yang lebih baru Anda dapat melompat ke "membuat" langkah di bawah ini):

buka /usr/share/x11-server-sources/dix/getevents.c, baris 1395: ubah ini:

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

Untuk ini:

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

(Bagian asli - baris untuk mengubah ditandai dengan *)

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

buka /usr/share/x11-server-sources/Xext/xtest.c, baris 311: ubah ini:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

untuk ini:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(bagian asli - baris untuk mengubah ditandai dengan *)

       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, baris 73: Tambahkan baris ini setelah baris dimulai dengan #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Setelah melakukan perubahan di atas, jalankan kembali (dalam /usr/share/x11-server-sources/):

make

Anda harus memiliki file Xdmx baru di /usr/share/x11-server-sources/hw/dmx/. Kami perlu menginstalnya secara global agar mudah, jadi saya sarankan mengganti nama yang sudah ada:

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

dan salin yang baru sebagai gantinya:

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

Sekarang Anda siap untuk melakukan uji coba pertama Anda, perintah berikut memungkinkan Anda untuk menjaga tampilan utama / yang ada ( :0) berjalan dan membuka tampilan baru dengan dukungan multi-monitor. Saya menggunakan icewm dengan perintah-perintah ini untuk membuatnya sedikit lebih ringan (saya menggunakan KDE pada tampilan utama saya :0dan membuka aplikasi multi-monitor besar di tampilan multi-head baru). Anda dapat dengan mudah menuliskan perintah-perintah ini untuk kemudahan penggunaan (ini yang saya lakukan) - Setiap perintah ini dapat dieksekusi pada konsol dan / atau jendela terminal dari tampilan apa pun, satu-satunya syarat adalah perintah tersebut dijalankan secara berurutan.

Perintah ini membuat tampilan baru Anda sebagai penyangga bingkai untuk tampilan VNC Anda :2(sesuaikan ukuran layar sesuai keinginan):

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

Ini memulai sesi X ringan baru pada tampilan fisik Anda sebagai tampilan :1(ada berbagai cara untuk melakukan ini):

startx 'icewm' -- :1

Perintah ini memulai multi-display antara layar fisik Anda dan layar virtual dan memulai icewm untuk window manager:

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

Sekarang buka jendela terminal dan mulai server vnc (ubah kata sandi seperti yang diinginkan):

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

Satu-satunya hal yang harus dilakukan sekarang adalah menjalankan klien VNC Anda dan terhubung ke VNC Anda - Anda mungkin perlu menonaktifkan atau menambahkan pengecualian ke firewall Anda ke port 5900 sehingga Anda dapat terhubung dengannya. Satu hal yang perlu diingat adalah bahwa beberapa klien VNC tidak menampilkan posisi kursor jarak jauh, saya menyatakan bahwa "Mocha VNC" untuk iOS berfungsi dengan baik jika Anda mematikan opsi "mouse lokal".

Nikmati menyeret jendela antara monitor utama dan monitor kedua virtual baru Anda (sambil juga dapat menggunakan tablet untuk mengklik / mengetikkan hal-hal di monitor kedua).

Untuk menutup Xdmx, tekan Ctrl+ Alt+ Backspacedua kali.

Otomatisasi:

Saya menggunakan skrip bash ini untuk memulai seluruh proses (juga membunuh Xvfb saat keluar):

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

Maka saya memiliki ~/.xinitrcfile khusus dengan ini:

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

Penyelesaian masalah:

  • Saat menjalankan Xdmx jika Anda mendapatkan kesalahan yang mengatakan sh: /usr/local/bin/xkbcomp: No such file or directoryAnda perlu melakukan eksekusi cd /usr/local/bin" and "ln -s /bin/xkbcomp:, lalu coba Xdmx lagi.

  • Ctrl+ Alt+ F1through F7seharusnya bekerja di Xdmx untuk beralih ke konsol lain / xsessions tetapi karena alasan tertentu tidak berfungsi, yang saya lakukan hanyalah menjalankan sudo chvt X(di mana X adalah konsol / nomor xsession) untuk beralih ke tampilan utama saya. Juga ketika Anda beralih kembali ke Xdmx Anda mungkin mendapatkan beberapa masalah menggambar pada setiap jendela yang terbuka, saya cukup klik pada taskbar untuk menyembunyikan / menampilkan jendela lagi memaksa redraw.

LinuxNewb
sumber
0

Terima kasih untuk teman-teman tutorialnya, saya akan membagikan apa yang berhasil untuk saya di Ubuntu 14.04

Dapatkan AndroidVNC di sini untuk tablet Anda

Dapatkan x11vnc untuk komputer Ubuntu Anda dengan menjalankan

sudo apt-get install x11vnc

Saya harus menggunakan metode driver dummy Xorg. Begini tampilan file /etc/X11/xorg.conf saya:

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

Anda mungkin tidak memerlukan semua yang ada di sana, jalankan X -configure untuk mendapatkan sistem autoconfig Anda dan tambahkan bagian dummy (barang-barang di antara tanda bintang) ke file Anda. Resolusi untuk layar boneka di xorg.conf harus menjadi lebar monitor utama Anda + lebar resolusi tablet Anda, dalam kasus saya 1680 + 1024 = 2704 pertahankan ketinggian monitor utama Anda, 1050 dalam kasus saya. Mulai ulang server X / steker ulang / steker daya tarik, apa pun lebih cocok untuk Anda :).

Jalankan x11vnc dengan melakukan

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

Di sini resolusinya harus lebar tablet Anda x tinggi tablet + Lebar tampilan utama + 0

Hubungkan ke PC Anda menggunakan klien androidVNC, pastikan untuk mengaktifkan opsi localmouse. Seharusnya begitu, sekarang rasakan keanehan memiliki linux yang dijalankan di android :)

Mathieu Grenier
sumber
0

Saya memiliki banyak masalah dengan teknik-teknik lain yang tercantum di sini. Saya berharap saya memiliki solusi yang lebih baik, tetapi solusi saya yang lambat dan sederhana adalah tempat awal yang baik.

Untuk server VNC, saya mencoba vncserverpaketnya tetapi layarnya menjadi hitam dan saya harus memulai ulang gdmagar semuanya berfungsi kembali. Saya beralih ke tightvncserverdan itu bekerja pertama kali tanpa konfigurasi.

Untuk berbagi mouse / keyboard antara layar saya menggunakan x2vnc . Ini juga dapat digunakan dengan win2vnc untuk membagikan mouse / keyboard dengan PC Windows di sebelah PC Linux Anda.

Perintah terakhir:

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

Pada titik ini Anda harus dapat membuka layar kedua dalam program VNC dengan menghubungkan ke YOUR_IP_ADDRESS:1. Untuk memulai program pada layar VNC, buka terminal, atur DISPLAY, lalu jalankan perintah. Misalnya, untuk membuka xterm"layar" VNC, jalankan:

export DISPLAY=:1
xterm

Menggunakan pendekatan ini, layar kedua cukup lambat. Namun, banyak opsi lain yang saya coba mengalami jalan buntu, dan ini bekerja tanpa konfigurasi sama sekali.

orang ketiga
sumber
0

Bagi siapa pun yang masih bertanya-tanya tentang topik ini: klip xrandr dan x11vnc berhasil; untuk mengaktifkan mouse ke sana, Anda perlu menggunakan argumen panning untuk mengatur area pelacakan mouse:

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

Kemudian saat menjalankan penggunaan xvnc:

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

Itu menghentikan VNC dari upaya untuk menggunakan pelacakan kursor itu sendiri dan mengecat kursor sebagai bagian dari gambar layar.

Saya membuat catatan di sini http://mikescodeoddities.blogspot.ae/2015/04/android-tablet-as-second-ubuntu-screen.html

Mike Dawson
sumber
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 &

Sekarang, cukup klik pada jendela yang ingin Anda bagikan.


LENGKAP :

Saya memiliki sebuah iPad dan Chromebook dan saya ingin menggunakannya sebagai monitor saya, hanya untuk USO beberapa perintah terminal htop, iptstate, nmon, dll. Jadi, saya pria yang malas dan membuatnya menggunakan:

  1. Instalasi paket: sudo apt-get install x11vnc
  2. Buka beberapa terminal dan masukkan xwininfo | awk '/Window.id/{print $4}'dan klik di jendela yang ingin Anda bagikan. Outputnya akan seperti:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Sekarang Anda dapat memulai x11vncsesi Anda :

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Ubah ukuran jendela (0x4402f34) untuk mendapatkan gambar sebaik mungkin.

Pikiran yang terkait pelabuhan dari Anda sesi : 5900 -> :0, 5901 -:1, 5902 -> :2...

Selain itu, berfungsi baik dengan aplikasi X11: Firefox, OpenOffice, dll.

Antonio Feitosa
sumber
0

Gunakan vnc_virtual_display_linker

Alat ini menyiapkan monitor virtual kedua untuk terhubung dengan VNC seperti yang dijelaskan dalam banyak jawaban sebelumnya. Bahkan mendukung koneksi dari perangkat Android menggunakan kabel USB.

Falko Menge
sumber