ये निर्देश एक VNC क्लाइंट के माध्यम से टैबलेट या किसी भी कंप्यूटर का उपयोग करके आपके लिनक्स मशीन के लिए "अतिरिक्त" स्क्रीन बनाने के लिए हैं।
मैंने 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.c
, और लाइन 730 बदलें: इसे बदलें:
POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
इसके लिए:
POINTER_RELATIVE | POINTER_DESKTOP, &mask);
IF लाइन 730 इस लाइन का उपयोग सही लाइन खोजने के लिए करती है: Orginal section - लाइन को बदलने के लिए * के साथ चिह्नित
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);
खुली /usr/share/x11-server-sources/Xext/xtest.c
, पंक्ति 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 का उपयोग कर रहा हूं ताकि इसे थोड़ा और हल्का बनाया जा सके (मैं अपने मुख्य प्रदर्शन पर केडीई का उपयोग करता हूं :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 के लिए "मोचा VNC" बढ़िया काम करता है यदि आप "स्थानीय माउस" विकल्प को बंद कर देते हैं।
अपने मुख्य मॉनीटर और अपने नए वर्चुअल सेकंड मॉनीटर के बीच खिड़कियों को खींचने का आनंद लें (जबकि दूसरे मॉनीटर में चीजों पर क्लिक करने / टाइप करने के लिए टैबलेट का उपयोग करने में सक्षम होने के कारण)।
Xdmx प्रेस बंद करने के लिए Ctrl+ Alt+ Backspaceदो बार।
स्वचालन:
मैं इस बैश स्क्रिप्ट का उपयोग पूरी प्रक्रिया को शुरू करने के लिए करता हूं (एक्सवेफ़ब को बाहर निकलने पर भी मारता है):
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/xkbcomp
फिर से XDMx आज़माएं।
Ctrl+ Alt+ के F1माध्यम F7से XDMx में काम करने के लिए माना जाता है कि अन्य कंसोल / xsession पर स्विच करें लेकिन किसी कारण से यह काम नहीं करता है, जो मैं करता हूं वह बस sudo chvt X
मेरे मुख्य प्रदर्शन पर स्विच करने के लिए निष्पादित होता है (जहां एक्स एक कंसोल / xsession संख्या है)। जब आप एक्सडीएमएक्स पर वापस जाते हैं, तो आपको किसी भी खुली खिड़कियों पर कुछ ड्राइंग मुद्दे मिल सकते हैं, मैं बस फिर से एक redraw मजबूर खिड़की को छिपाने / दिखाने के लिए टास्कबार पर क्लिक करता हूं।