विंडोज़ से लिनक्स में जाना: अंडरस्टैंडिंग - एक्स विंडो सिस्टम, एक्स सर्वर, एक्सगोर, एक्सफ्री 86


10

मैं एक विंडोज़ डेवलपर (Win32api) हूँ जो विंडोज़ से लिनक्स पर चल रहा है। लिनक्स स्थापित करते समय X11, X विंडो सिस्टम, X सर्वर, Xorg, Xfree86 और क्या नहीं के बारे में जानने के लिए बहुत सारी चीजें हैं।

कैसे हम खिड़कियों में ऐसी चीजों के बारे में पता नहीं है? इन पर विकी लेख मुझे डराता है। क्या कोई इन बातों को समझा सकता है? वे कैसे काम करते हैं? यह लिनक्स में इतना जटिल क्यों है और खिड़कियों में नहीं है?

किसी भी अच्छे संदर्भ की सराहना भी की जाती है।

पुनश्च: मुझे इंटर्नल जानना बहुत पसंद है, गहराई में जाने में संकोच न करें।


1
उत्तर पढ़ने के बाद इस लेख को पढ़ें "विचार और एक्स प्रोटोकॉल पर जुमला
claws

1
लिंक के रूप में julien.danjou.info/blog/2010/…
fstamour

जवाबों:


13

विंडोज़ आपको एकल एपीआई / फ्रेमवर्क के एकल कार्यान्वयन के शीर्ष पर एकल डेस्कटॉप का एक एकल कार्यान्वयन देता है, जो सभी Microsoft द्वारा किया जाता है।

यूनिक्स प्रणालियों पर, आपको एक एपीआई / ढांचा (X11 / X विंडो सिस्टम) मिलता है, जिसके लिए कई कार्यान्वयन (Xorg, Xfree86) मौजूद हैं, जिनमें से शीर्ष पर आपको विभिन्न "उच्च स्तर" API / चौखटे (GTK +, Qt, ... ) क्योंकि कच्चा एक्स 11 इतना आदिम है, जिसके शीर्ष पर आपको विभिन्न डेस्कटॉप (ग्नोम, केडीई, ...) मिलते हैं, जो सभी अलग-अलग लोगों द्वारा किए जाते हैं।

इसके अलावा, X11 प्रणाली को जमीन से दूरस्थ GUI के साथ ध्यान में रखते हुए तैयार किया गया है - यानी, दूरस्थ रूप से चल रहे एप्लिकेशन के GUI को प्रदर्शित करने वाली एक लोकल मशीन - जो एक "X सर्वर" और "X क्लाइंट" की अवधारणाओं का परिचय देती है।

फिर एक नामकरण होता है जो नए लोगों के लिए गलत तरीके से "महसूस करता है": आपकी स्थानीय मशीन "X सर्वर" चला रही है जो "डिस्प्ले GUI" सेवा प्रदान कर रही है, जबकि रिमोट मशीन "X क्लाइंट" है जो सेवाओं का उपयोग कर रही है GUI प्रदर्शित करने के लिए आपकी मशीन पर।

खैर, यह त्वरित अवलोकन है; एक बार जब आप इस तरह से हल हो जाते हैं, तो विषय पर किसी भी लेख / मंच पोस्ट को समझना बहुत आसान हो जाना चाहिए।

संपादित करें: ओपी की पहली दो टिप्पणियों का उत्तर देने के लिए।

हां, "X11" केवल एक प्रोटोकॉल है, और Xorg / XFree86 दो कार्यान्वयन हैं। अपने मूल स्तर पर, X11 केवल रेखाओं और बिंदुओं को खींचने के बारे में है, जो यदि आप GUI करना चाहते हैं, तो बहुत उपयोगी नहीं है।

X11 प्रोटोकॉल के शीर्ष पर, लोगों ने कई चीजों को लागू किया, और विंडोज के साथ तुलना 1: 1 करना बहुत मुश्किल है क्योंकि Microsoft ने कभी चीजों को अलग रखने की जहमत नहीं उठाई। इसके अलावा, मैं एक जीयूआई प्रकार डेवलपर नहीं कर रहा हूँ, यानी के साथ अपने वास्तविक अनुभव या तो प्रणाली कम से कम किया गया है।

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

"विजेट टूलसेट" आपको अपने GUI के निर्माण के लिए बटन, स्लाइडर, टेक्स्ट फ़ील्ड आदि प्रदान करता है। यह वही है जो आप (एक एप्लिकेशन डेवलपर के रूप में) वास्तव में "देखने", एपीआई वार करने के लिए प्राप्त करते हैं, और जो आपके आवेदन के अधिकांश "लुक एंड फील" का फैसला करता है।

एक "डेस्कटॉप" एक निरंतर लुक और फील प्रदान करने के लिए एक निश्चित विजेट टूलसेट / विंडो मैनेजर संयोजन के शीर्ष पर कई एप्लिकेशन बनाता है। जब तक आप वास्तव में स्वयं डेस्कटॉप विकसित नहीं करना चाहते हैं, तब तक आपको इनसे परेशान नहीं होना पड़ेगा।

डेस्कटॉप "गनोम" विंडो मैनेजर "मेटासिटी" के शीर्ष पर विजेट टूलसेट "GTK +" का उपयोग करता है।

डेस्कटॉप "केडीई" विंडो मैनेजर "केविन" के शीर्ष पर विजेट टूलसेट "क्यूटी" का उपयोग करता है।

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

यह पूरी तरह से संभव है कि Kn डेस्कटॉप पर Gnome डेस्कटॉप या GTK + ऐप्स पर Qt ऐप्स का उपयोग करें (यह हमेशा ऐसा नहीं था), इसलिए आपको संगतता के बारे में थोड़ा चिंता करना होगा। तुलनीय कार्यक्षमता के दो ऐप्स के बीच एक विकल्प को देखते हुए, लोग आमतौर पर अपनी पसंद के डेस्कटॉप के "देशी" विगेट्स का उपयोग करके ऐप को पसंद करेंगे, लेकिन मुझे इस बारे में चिंता नहीं होगी।

अन्य, "विजेट टूलसेट" की पसंद में अधिक महत्वपूर्ण बुलेट बिंदु: लाइसेंसिंग शर्तें, अपनी पसंद की भाषा के लिए समर्थन, क्रॉस-प्लेटफॉर्म संगतता।


पोस्ट स्क्रिप्टम : कई वर्षों बाद वापस आ रहा है, मैंने अपने स्वयं के कुछ जीयूआई प्रोग्रामिंग अनुभव को उठाया है, और उपरोक्त विवरण में एक बात का एहसास होता है कि क्या आप "सलाह लेने के लिए एक रास्ता" की तलाश कर रहे हैं: wxWidgets । यह एक ऐसा ढाँचा है जो आप जो भी उपयोग कर रहे हैं उसके शीर्ष पर बनाता है , और पारदर्शी रूप से पोर्टेबल जीयूआई विकास की अनुमति देता है , प्रदर्शन का त्याग किए बिना या किसी भी लाइसेंस प्राप्त तार से जुड़ा हुआ है। C ++ API। यह वह रास्ता है जिसे मैंने अपनी GUI जरूरतों के लिए चुना है, और मुझे लगा कि इसे पूर्णता के लिए उल्लेख किया जाना चाहिए।


+1 और ध्यान दें कि यदि आप एक फ्रेमवर्क चुनना चाहते हैं (उदाहरण के लिए Qt) तो आपको सभी एक्स सामान (कुछ हालांकि) के बारे में इतना ध्यान रखने की आवश्यकता नहीं होगी।
पीटर जरिक

Windows API का +1 और इसलिए GUI भाग Qt & GTK + के बराबर है। फिर विंडोज़ में एक्स विंडो सिस्टम के बराबर क्या है? क्यों और कैसे केडीई और सूक्ति मौजूद है?
पंजे

@DevSolar: आप सही रास्ते पर हैं। कृपया थोड़ा और वर्णनात्मक बनें। X11 POSIX की तरह ही विशिष्टताओं है? और xorg & xfree86 इसके दो कार्यान्वयन हैं? यदि GTK + & Qt है, तो Gnome & KDE की क्या आवश्यकता थी? कृपया प्रत्येक चरण / स्तर की खिड़कियों से तुलना करें। मेरे लिए यह समझना आसान है।
पंजे

At the bottom, a "window manager"विंडो मैनेजर X विंडो सिस्टम पर बनाता है? यदि ऐसा है, तो विंडोज़ सिस्टम नीचे दाईं ओर होगा? आप मुझे विंडो मैनेजर और विंडो सिस्टम के साथ भ्रमित कर रहे हैं।
पंजे

"X11" / "XFree86" द्वारा कार्यान्वित "X11" / "X विंडो (सिस्टम)", बहुत नीचे हैं और डॉट्स और लाइनें प्रदान करते हैं। एक "विंडो मैनेजर" ("मेटासिटी" / "केविन") विंडोज (फ्रेम, ड्रैगिंग, रिसाइज, क्लोजिंग आदि) प्रदान करता है।
देवसोलर

3

मुझे समझ में नहीं आता कि आपको http://en.wikipedia.org/wiki/X_Window_System द्वारा प्रदान की गई व्याख्या को समझना कितना मुश्किल है, लेकिन किसी भी तरह:

X विंडो सिस्टम में आमतौर पर 2 भाग होते हैं:

  • एक सर्वर (जिसे XServer कहा जाता है)
  • ग्राहकों (बुलाया .. XClients :))

सर्वर हार्डवेयर (ग्राफिक कार्ड, इनपुट डिवाइस) से जुड़ता है और क्लाइंट को इन संसाधनों का उपयोग करने की अनुमति देता है। क्लाइंट xserver से कनेक्ट होते हैं और दिए गए संसाधनों का उपयोग करते हैं।

यूनिक्स के लिए सर्वर मौजूद हैं (Xorg, मैक लोगों के पास अपने खुद के आदि हैं) और विंडोज के लिए (हमिंगबर्ड, साइगविन के Xorg के पोर्ट आदि)।

आप एक OS पर क्लाइंट्स को दूसरे OS पर चलने वाले सर्वर से कनेक्ट कर सकते हैं।

सर्वर और ग्राहकों के बीच संचार या तो के माध्यम से किया जाता है Xlib-एपीआई या (और अधिक आधुनिक) XCB-एपीआई

एक साधारण अनुप्रयोग बनाने के लिए आप सामान्य रूप से ऐसा करते हैं:

  • xserver से कनेक्ट करें
  • एक विंडो बनाने के लिए xserver से अनुरोध करें (जो आपको "हैंडल" देगा)
  • xserver को विंडो को ऊपर लाने के लिए कहें
  • प्रक्रिया ईवेंट (माउस, कीबोर्ड, एक्सपोज़र, मोशन आदि)
  • खिड़की से सामान खींचें (पाठ, ग्राफिक्स आदि)
  • सभी संसाधनों को जारी करने के लिए xserver बताकर ऐप को छोड़ दें

और हो गया।

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