GDE के तहत KDE एप्लिकेशन कैसे चलते हैं?


19

यदि Gnome GTK + का उपयोग करता है और KDE Qt का उपयोग करता है, तो GDE के तहत KDE एप्लिकेशन कैसे चल सकते हैं?

जवाबों:


30

जीटीके और क्यूटी दोनों ग्राफिकल इंटरफेस के निर्माण के लिए टूलकिट हैं । प्रत्येक यूआई टूलकिट विगेट्स (बटन, टेक्स्टबॉक्स ...) बनाने के लिए कार्यक्रमों के लिए अपने स्वयं के फ़ंक्शन प्रदान करता है और पुस्तकालयों के रूप में आता है जो ग्राफ़िकल प्रोग्राम के खिलाफ लिंक करता है। GNOME के ​​लिए लिखा गया प्रोग्राम GTK ( libgdkऔर libgtk) का उपयोग करेगा , जबकि KDE प्रोग्राम Qt ( libQtCoreऔर libQtGui) का उपयोग करते हैं, ज्ञानवर्धक प्रोग्राम EFL का उपयोग करते हैं, और इसी तरह।

हालाँकि, ये सभी टूलकिट समान X विंडो सिस्टम और समान X11 प्रोटोकॉल का उपयोग करते हैं । चीजों को स्क्रीन पर प्रदर्शित करने के लिए, टूलकिट चल रहे एक्स सर्वर (आमतौर पर Xorg, जिसे पहले XFree86 कहा जाता है) से जुड़ता है, X11 कमांड भेजता है (विंडो बनाएँ, विंडो में कुछ बनाएं), और X11 इनपुट इवेंट (माउस, कीबोर्ड, विंडो) प्राप्त करता है , और c) वापस।

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

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

तंत्र, नीति नहीं

बहु-टूलकिट स्थिति एक्स के लिए अद्वितीय नहीं है - उदाहरण के लिए, आपको मानक के साथ-साथ comctl32WPF, .NET WinForms, क्रोम के आभा, फ़ायरफ़ॉक्स के XUL और यहां तक ​​कि समान GTK या Qt का उपयोग करके विंडोज प्रोग्राम मिलेंगे । अधिकांश गेम अपने स्वयं के स्टाइल नियंत्रण का उपयोग करते हैं। वास्तव में, यह किसी भी ग्राफिक्स सिस्टम पर संभव है जो आपको पूरे विंडो में एक छवि बनाने देता है।

हालांकि, एक्स के सिद्धांतों में से एक "तंत्र था, न कि नीति"। इसका मतलब यह है कि एक्स सर्वर केवल अपने क्लाइंट (चित्रमय कार्यक्रमों) को विभिन्न चीजें करने के लिए तंत्र प्रदान करता है, लेकिन आवश्यक के रूप में कुछ नियम लागू करता है । दूसरे शब्दों में, एक्स इसे किसी भी अन्य ग्राफिक्स सिस्टम की तुलना में अधिक सीमा तक ले जाता है।

उदाहरण के लिए, ग्राफिक्स सिस्टम के अभिन्न हिस्सों में से एक विंडो प्रबंधन है - प्रत्येक खिड़की के चारों ओर फ्रेम (उर्फ सजावट) की ड्राइंग, खिड़कियों को स्थानांतरित करने और आकार बदलने की क्षमता, और इसी तरह। विंडोज और ओएस एक्स में सिस्टम में निर्मित एक विंडो मैनेजर है, लेकिन एक्स में यह एक अलग प्रोग्राम के रूप में चलता है - एक्स ऑर्ग सूट एक न्यूनतम के साथ आता है twm, लेकिन लगभग सभी डेस्कटॉप वातावरण अपने स्वयं के विंडो प्रबंधकों को जहाज करते हैं (गनोम में सॉफिश, मेटेसिटी, gnome-shell; KDE में KWin है) जो संबंधित डेस्कटॉप वातावरण के साथ एकीकरण प्रदान करता है।

(टूलकिट की तरह, आधुनिक "कंपोज़िंग" विंडो प्रबंधक वास्तव में अंतिम स्क्रीन छवि पर सभी खिड़कियों की रचना करने के Xorg का काम संभालते हैं, छाया या प्रभाव जैसी चीजों को जोड़ने की अनुमति देते हैं।)

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

पक्षीय लेख

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

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

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


1
Qt का ईवेंट लूप GTK का लपेटता है, इसलिए आप Qt और GTK कोड को एक ही एप्लिकेशन में जोड़ सकते हैं (आमतौर पर यह केवल प्लगइन्स, जैसे, प्लगइन्स के साथ आता है)।
एलेक्स पी

@ एलेक्स: क्या आपका मतलब है कि "क्यूप" उस क्यूटी के इवेंट लूप में GTK को इवेंट दे सकता है, या आप कह रहे थे कि Qt वास्तव में इवेंट लूप के लिए GLib पर निर्भर है?
ग्रैविटी

1
Qt अपने स्वयं के शुद्ध ईवेंट लूप कार्यान्वयन का उपयोग कर सकता है, लेकिन यह Glib की डिफ़ॉल्ट रूप से लपेटता है (कम से कम, Qt4 में - मैंने यह नहीं देखा कि Qt5 यह कैसे करता है)। वहाँ एक छिपा हुआ झंडा ($ qt_NO_GLIB) है जो इसे रनटाइम पर नियंत्रित करता है।
एलेक्स पी

7

उत्तर का हिस्सा यह है कि अग्रणी डेस्कटॉप वातावरण (गनोम, केडीई, एक्सएफसीई, शायद अन्य) एक साथ काम करते हैं http://freedesktop.org के तहत इस तरह के अंतर्संबंध को संभव बनाने के लिए। FD.o द्वारा प्रकाशित विनिर्देशों में से एक है EWMH है, जो (आधुनिक सुविधाओं, न सिर्फ बुनियादी विंडो प्रबंधन के लिए) खिड़की प्रबंधकों के बीच अनुकूलता का एक निश्चित स्तर सुनिश्चित करता है।


4

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.