2010-10-27 9 views
6

मैं * एनआईक्स सिस्टम पर जीयूआई बनाने के बारे में और जानना चाहता हूं, लेकिन यह सुनिश्चित नहीं है कि अनुसंधान कहां से शुरू किया जाए। मेरी समझ से, एक्स सर्वर सभी दृश्यों को संभव बनाता है, और इसके अलावा केडीई, जीनोम और अन्य जैसे विभिन्न UI वातावरण हैं।* एनआईक्स जीयूआई कैसे काम करता है?

लेकिन, उदाहरण के लिए, मैं हमेशा सोचा है कि प्रोग्राम हैं जो कि पर्यावरण का उपयोग करने की आप प्रतिबंधित कुछ UI वातावरण के तहत चल रहा है, जब तक मुझे एहसास हुआ कि मैं Gnome और इसके विपरीत के तहत केडीई उपयोगिताओं और सॉफ्टवेयर का उपयोग करने में सक्षम हूँ, जो बनाए रखने उनके मूल पर्यावरण की देखो।

क्या एक अच्छी जगह इस विषय के बारे में सीखने शुरू करने के लिए हो सकता है?

उत्तर

6

अनिवार्य रूप से, जीयूआई बिट्स अलग-अलग पुस्तकालय होते हैं जिनमें क्रोम (आपके प्रोग्राम की खिड़की के आस-पास की सामग्री) शामिल होती है, और आमतौर पर डेस्कटॉप टूलबार जैसे अन्य सामानों का समूह शामिल होता है। गनोम और केडीई डेस्कटॉप वातावरण उदाहरण हैं।

उनमें से प्रत्येक में एक विंडो प्रबंधक शामिल है, जो थोड़ा सा प्रोग्राम है जो आपके प्रोग्राम को सटीक रूप से कहां आकर्षित करता है, और क्रोम को कैसे आकर्षित किया जाता है।

नीचे, आपको एक्स फ्रेमवर्क मिला है, जो एपीआई प्रदान करता है कि विंडो प्रबंधक आपकी स्क्रीन पर पेंट करने के लिए उपयोग करते हैं। तो एक्स आपके ग्राफिक्स ड्राइवरों पर निर्भर करता है, जो बताता है कि अपने हार्डवेयर से कैसे बातचीत करें।

अपने विंडो प्रबंधकों से ऊपर, आप अपने वास्तविक कार्यक्रमों मिल गया है। उनमें से प्रत्येक विंडो प्रबंधक को जेनेरिक चीजें करने के लिए कॉल करता है जैसे "मुझे एक करीबी बटन के साथ 50x50 विंडो दें"।

प्रोग्राम द्वारा खींचे गए वास्तविक विजेट आमतौर पर एक ग्राफिक्स टूलकिट का उपयोग करते हैं जैसे कि गनोम के साथ शामिल है। केडीई में क्यूटी टूलकिट शामिल है।

वहाँ wm का एक अच्छा चयन है यहाँ http://xwinman.org/

+0

एक्स स्तर पर कुछ गलतता है, लेकिन अन्यथा सही है। –

+1

कृपया इसे ठीक करें। आपको यह करने के लिए प्रतिनिधि मिल गया है :) –

7

मैं पॉल के जवाब थोड़ा शब्दजाल भारी हो सकता है महसूस हो रहा है इसलिए यहाँ मेरी प्रयास है,।

डिस्प्ले डिवाइस (वीजीए मॉनीटर, समग्र वीडियो, एचडीएमआई इत्यादि) लोड करते हैं और इन्हें सीधे हार्डवेयर में संभाला जाता है, उदाहरण के लिए। एक समर्पित ग्राफिक्स प्रोसेसर (जीपीयू) में।

हमारे अनुप्रयोगों सीधे इस हार्डवेयर से बात होने के बजाय, हम ड्राइवरों (जो हमारे ऑपरेटिंग सिस्टम कर्नेल के अंदर रहते हैं) का उपयोग करें। विभिन्न हार्डवेयर विभिन्न ड्राइवरों की जरूरत है, लेकिन ड्राइवरों के सभी एक ही इंटरफ़ेस का उपयोग कर निर्देश दिया जा सकता है उदाहरण के लिए ओपन,:

App --OpenGL--> Driver --> Hardware --VGA--> Screen 
बेशक

, वहाँ वास्तव में विभिन्न लोगों की एक पूरी गुच्छा रहे हैं सबसे अधिक मानकों की तरह! अधिकांश ऑपरेटिंग सिस्टम पर ओपनजीएल अधिकांश ड्राइवरों द्वारा समर्थित है; इसका "ओपनजीएल ईएस" उप-सेट मोबाइल फोन पर अच्छी तरह से काम करता है और "सॉफ्टवेयर ड्राइवर" हैं जो ओपनजीएल निर्देशों (और सभी ड्राइवरों के आधार पर छवियां खींच सकते हैं, हालांकि वास्तविक ओपनजीएल समर्थन होने से बहुत धीमी है)। ओपनजीएल के लिए एक बड़ा प्रतिद्वंद्वी डायरेक्टएक्स है, लेकिन यह केवल विंडोज और एक्सबॉक्स पर काम करता है।

ओपन के लिए प्रतिपादन एक पूर्ण स्क्रीन 3 डी खेल की तरह कुछ के लिए ठीक है, लेकिन * NIX ग्राफिक्स प्रणाली ("एक्स" के रूप में जाना जाता है) उसके ऊपर दो प्रमुख विशेषताएं प्रदान करता है: ड्राइंग कई एक ही स्क्रीन पर अनुप्रयोगों और नेटवर्क पर ड्राइंग।ऐसा करने के लिए, एक सर्वर प्रक्रिया स्क्रीन पर ले जाती है, और अनुप्रयोग ("ग्राहकों") "X11 प्रोटोकॉल" का उपयोग कर इस सर्वर से बात ("11" सिर्फ संस्करण संख्या है):

App A ----------OpenGL-------+ 
          | 
App B --+     | 
     |     | 
     +--X11--> X server --+----> Driver --> Hardware --> Screen 
     | 
App C --+ 
     | 
    ...network ... 
     | 
App D --+ 

एक्स ओपनजीएल की तुलना में लंबे समय तक चलने के बाद से ड्राइवरों तक सीधी पहुंच होती है, लेकिन यह बहुत महत्वपूर्ण नहीं है।

एक्स 11 प्रोटोकॉल अनुप्रयोगों को विंडोज बनाने के द्वारा काम करता है, जिन्हें उन्हें आकर्षित करने की अनुमति है। एक्स इन खिड़कियों को स्क्रीन पर व्यवस्थित कर सकते हैं, जिसमें ओवरलैपिंग भी शामिल है। ओपनजीएल का उपयोग करने वाले अनुप्रयोगों में उनके आदेश "एक्स से सीधे" ड्राइवर तक जा सकते हैं, और एक्स अभी भी किसी भी अन्य की तरह विंडो की व्यवस्था करेगा ( नेटवर्क पर काम नहीं करेगा, क्योंकि यह X11 की नेटवर्किंग क्षमताओं को छोड़ रहा है)।

हमारे पास आमतौर पर हमारे लिए विंडोज़ को व्यवस्थित करने, छिपाने/दिखाने और बंद करने के लिए समर्पित एक एप्लीकेशन है, जिसे विंडो प्रबंधक कहा जाता है। वैकल्पिक रूप से, एक विंडो मैनेजर दूसरों के किनारों के चारों ओर कुछ पतली खिड़कियां बना सकता है, ताकि यह शीर्षक सलाखों को आकार दे सके, हैंडल का आकार बदल सके, आदि

एक्स 11 प्रोटोकॉल में आकार, प्रतिपादन फोंट इत्यादि के लिए आदेश शामिल हैं और वहां जो इन सीधे उदाहरण के लिए उपयोग करते हैं, xterm कार्यक्रम और twm विंडो प्रबंधक अनुप्रयोगों हैं:

xterm --+ 
     | 
     +--X11--> X --> Driver --> ... 
     | 
twm --+ 

हालांकि, सबसे आधुनिक अनुप्रयोगों कच्चे X11 बहुत कठिन लगता है; रेखाओं और आकारों को चित्रित करने के बजाय, हम पूरे विजेट (बटन, मेनू, आइकन इत्यादि) को आकर्षित करेंगे। ऐसा करने के लिए, टूलकिट बनाए गए हैं। दो सबसे मशहूर क्यूटी और जीटीके + (जीआईएमपी टूल किट, क्योंकि मूल रूप से जीआईएमपी के लिए बनाया गया था) कहा जाता है; अन्य में मोटीफ, लेसस्टिफ़, ईटीके, टीई और एफएलटीके शामिल हैं। हम टूलकिट से एक बटन खींचने के लिए कह सकते हैं और यह एक बटन खींचने के लिए सभी आवश्यक एक्स 11 कमांड भेजेगा, साथ ही यह आकार और स्थिति का ख्याल रखेगा, रीफ्रेशिंग ड्राइंग अगर कुछ ओवरले करता है तो उसे दूर चला जाता है, हमें बताता है कोड क्लिक किया गया है जब कोड क्लिक किया गया है, और कुछ टूलकिट विषयों का उपयोग कर विजेट्स को बदलने की अनुमति भी देते हैं। कुछ उपकरणकिटें भी पार मंच हैं, इसलिए वे X11 लिनक्स पर आदेश भेज देंगे, Windows, OSX, आदि पर विभिन्न आदेश

Rhythmbox --> GTK+ --+ 
        | 
GIMP  --> GTK+ --+ 
        | 
Amarok --> Qt --+--X11--> X --> Driver --> ... 
        | 
Skype  --> Qt --+ 
        | 
aMSN  --> Tk --+ 

कुछ उपकरणकिटें दूसरों के शीर्ष पर सुविधाओं प्रदान करते हैं; उदाहरण के लिए wxWidgets अपने ड्राइंग करने के लिए क्यूटी हो जाता है (लिनक्स पर, Windows और OSX "मूल" कर रहे हैं), XUL फ़ायरफ़ॉक्स द्वारा इस्तेमाल किया और जीटीके + का उपयोग करता है अपने ड्राइंग करने के लिए:

Audacity --> wxWidgets --> Qt --+ 
            | 
Firefox --> XUL  --> GTK+ --+--X11--> X --> Driver --> ... 
            | 
GIMP  ----------------> GTK+ --+ 

एक महत्वपूर्ण बात का उल्लेख है कि है आकार- और X11 के टेक्स्ट-ड्राइंग कमांड वास्तव में बहुत अधिक उपयोग नहीं किए जाते हैं, क्योंकि वे बहुत प्राचीन हैं। कई टूलकिट वास्तव में छवियों के रूप में अपने विजेट प्रस्तुत करते हैं, फिर उन छवियों को आकर्षित करने के लिए एक्स प्राप्त करें। नया वेलैंड सिस्टम ड्रॉइंग कमांड को फेंकने और एप्लिकेशन और टूलकिट को ओपनजीएल का उपयोग करने के लिए एक्स को प्रतिस्थापित करने की कोशिश कर रहा है, जिससे चीजों को और तेज़ी से बनाना चाहिए।

आपने विभिन्न डेस्कटॉप वातावरण जैसे कि गनोम और केडीई का उल्लेख किया है, और क्या वे एक साथ काम करते हैं। वे मूल रूप से एक साथ काम करने के लिए लिखे गए अनुप्रयोगों के बड़े संग्रह हैं।ऐसा लगता है कि गनोम एप्लिकेशन सभी जीटीके + के साथ लिखे गए हैं, जबकि केडीई अनुप्रयोग सभी क्यूटी के साथ लिखे गए हैं।

यदि आप उपरोक्त मेरे आरेखों में तीरों को देखते हैं, तो आप देखेंगे कि प्रत्येक क्यूटी एप्लिकेशन अलग से एक्स से बात करता है, प्रत्येक जीटीके + एप्लिकेशन एक्स से अलग से बात करता है, आदि; न केवल क्यूटी और जीटीके + एप्लिकेशन काम-दर-पक्ष काम कर सकते हैं, जहां तक ​​एक्स का संबंध है, यह दो क्यूटी अनुप्रयोगों या दो जीटीके + अनुप्रयोगों के समान है!

डेस्कटॉप मिश्रण करते समय चिंता करने की एकमात्र चीज यह है कि क्या दो अनुप्रयोग एक ही काम करने के लिए प्रतिस्पर्धा कर रहे हैं, उदाहरण के लिए यदि आप दो विंडो प्रबंधक या दो डेस्कटॉप पैनल चलाने की कोशिश कर रहे हैं। ध्यान दें कि यह ग्राफिक्स, टूलकिट इत्यादि का मुद्दा नहीं है, क्योंकि मुझे पर बनाए गए दो डेस्कटॉप का उपयोग किया गया था, उसी टूलकिट (उदाहरण के लिए। Lxpanel और gnome-panel दोनों जीटीके + के साथ लिखे गए हैं लेकिन वे अभी भी एक-दूसरे के रास्ते में आ जाएगा!)

संबंधित मुद्दे