2011-06-08 26 views
5

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

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

इसके लिए एक अच्छा उदाहरण ड्राइंग के लिए अतिरिक्त libcario समर्थन के साथ conky होगा। मैं जीटीके + या क्यूटी जैसे बड़े गुई टूलकिट भी चुनूंगा। अधिक जटिल एक्स 11 एपीआई इंटरफेस के लिए डायरेक्ट यूज भी एक विकल्प होगा। पसंदीदा भाषाएं सी और सी ++ हैं।

मुझे खुशी होगी अगर कोई व्यक्ति अपना ज्ञान साझा कर सकता है अगर उसके पास उस क्षेत्र में पहले से ही कुछ समान अनुभव हैं।

उत्तर

1

आपने यह नहीं कहा कि आप किस ओएस को लक्षित कर रहे हैं, लेकिन मैं लिनक्स डिस्ट्रो मान रहा हूं।

आपके सभी विंडो प्रबंधक को सीमाहीन और अवांछित विंडो का समर्थन करना है।

फिर आपको भाषा चुनने की आवश्यकता है (सी और सी ++ पूरी तरह अलग हैं)। यदि आप सी ++ का चयन करते हैं, तो क्यूटी सीम एक स्पष्ट पसंद की तरह है।

क्यूटी के लिए, यह सीमारहित विंडो बनाने के लिए आसान है: Making a borderless window with for Qt

+0

एक्स सर्वर कभी सीमाओं और सजावट की परवाह नहीं करता है। यदि खिड़की को सीमा और/या सजावट मिलती है, तो क्या होता है, कि खिड़की प्रबंधक सीमाओं और सजावट के लिए अतिरिक्त आकार के साथ बनाता है, इस खिड़की को सजाए गए ग्राहक की खिड़की के माता-पिता को दोहराता है और ग्राहक के चारों ओर सजावट और सीमा खींचता है। यह है, जिसे एक रिपेयरिंग विंडो प्रबंधक कहा जाता है और क्लाइंट द्वारा ओवरराइड-रीडायरेक्ट ध्वज के माध्यम से रोका जा सकता है। – datenwolf

+0

हां यह लिनक्स के लिए है और पोर्टेबिलिटी मुद्दों को संभालने के लिए यह आवश्यक नहीं है। इससे कोई फर्क नहीं पड़ता कि मैं किस भाषा का मुख्य रूप से उपयोग करता हूं। मैं दोनों के साथ familar हूँ। मैं समर्थित एपीआई के साथ सभी अलग-अलग टूलकिट्स या एक्स-सर्वर प्रदान करता हूं। इसलिए यह लिंक भी बहुत ही आशाजनक है। Thx – Ruun

2

वहाँ सीमारहित खिड़की का निर्माण करने के दो तरीके हैं: (1) पूरी तरह से खिड़की-प्रबंधक को दरकिनार, और (2) विंडो प्रबंधक का उपयोग कर।

पहला वाला सरल है, लेकिन सीमित है (आपको वर्चुअल डेस्कटॉप पर विंडो विंडो ड्रैगिंग और प्लेसमेंट प्रबंधित करना होगा)। यह override-redirect ध्वज के साथ एक विंडो बनाकर किया जाता है।

दूसरी विधि में विंडो गुणों को सेट करना शामिल है (जैसा कि xprop में) डब्लूएम संकेत के रूप में जाना जाता है। यदि आप इसे कच्चे एक्सलिब के साथ करना चाहते हैं, तो आपको इसके लिए ICCCM का अध्ययन करना होगा। Gtk + जैसे अधिकांश टूलकिट्स में डब्ल्यूएम संकेत सेट करने के लिए एपीआई हैं।

सरल हाँ-या-नहीं "पारदर्शिता" के लिए XShape एपीआई है (यह तकनीकी रूप से एक विस्तार है, यानी एक्स 11 का एक वैकल्पिक हिस्सा है, लेकिन यह लगभग हर जगह मौजूद है)। या आप बस पृष्ठभूमि सेट के साथ None पर एक विंडो बना सकते हैं (हालांकि इस दृष्टिकोण में कंपोजिटिंग विंडो मैनेजर, यानी कंपिज़ के साथ समस्याएं हो सकती हैं)। या आप केवल एप्लिकेशन विंडोज़ को पूरी तरह से छोड़ सकते हैं और सीधे (वर्चुअल) रूट विंडो पर पेंट कर सकते हैं। संभवतः libcairo आपको ऐसा करने देगा, लेकिन मैं इससे परिचित नहीं हूं।

उम्मीद है कि इससे मदद मिलती है।

+0

यह बहुत उपयोगी है, मैं इसकी जांच करूंगा। Libcairo इंटरफ़ेस के साथ रूट विंडो पर चित्रकारी बहुत अच्छा होगा, क्योंकि मुझे केवल एक खिड़की (मेरे चित्रकला क्षेत्र) की आवश्यकता है। – Ruun

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