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 --version
di /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 :0
dan 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 ~/.xinitrc
file 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 directory
Anda 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.