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.c
ve 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 --version
iç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 :0
ve 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 ~/.xinitrc
dosya 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 X
benim 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.