इस प्रोजेक्ट के बारे में

hana (花) एक प्रारंभिक-विकास X11 विंडो मैनेजर है जो Zig में लिखा गया है, जो मॉड्यूलरिटी, लचीलेपन और आरामदायक कॉन्फ़िगरेशन के आसपास बनाया गया है। यह डायनामिक टाइलिंग और फ्लोटिंग विंडो पैराडाइम दोनों का समर्थन करता है, और WM में एकीकृत अपना वैकल्पिक बार भेजता है। कोर से परे कोई भी सुविधा सख्ती से आवश्यक नहीं है: सबसिस्टम और उनके मॉड्यूल स्रोत से हटाए जा सकते हैं और प्रोजेक्ट को एक अलग बाइनरी में पुनः संकलित किया जा सकता है। मॉड्यूलरिटी बताई गई शीर्ष प्राथमिकता है। वैकल्पिक लॉजिक अपनी फाइलों में रहता है, और कोर खुले कॉन्ट्रैक्ट (Surfaces, WindowModule, Segment, Layout) और बिल्ड-जनरेटेड रजिस्ट्री के माध्यम से सबसिस्टम की उपस्थिति या अनुपस्थिति के अनुकूल होता है, इसलिए कोर कभी भी नाम से वैकल्पिक मॉड्यूल आयात नहीं करता है। मॉड्यूल हटाने से स्टब छोड़ने के बजाय एक ऐरे छोटा हो जाता है। dev/plugin-template/ के तहत ड्रॉप-इन टेम्पलेट नए टाइलिंग लेआउट, विंडो सबसिस्टम और बार सेगमेंट को कवर करते हैं, और zig build check द्वारा कॉन्ट्रैक्ट के विरुद्ध संकलित किए जाते हैं। विंडो प्रबंधन सुविधाओं में टाइलिंग लेआउट (master-stack, monocle, grid, fibonacci, scroll, leaf, कुछ वेरिएंट के साथ), प्रति-विंडो टाइलिंग/फ्लोटिंग टॉगल और फ्लोट नियम, फुलस्क्रीनिंग और मिनिमाइज़िंग, टैगिंग और पिनिंग के साथ वर्कस्पेस, प्रति-प्रोग्राम और प्रति-वर्कस्पेस विंडो नियम, और स्नैपिंग के साथ ड्रैग-एंड-ड्रॉप प्लेसमेंट शामिल हैं। बार वर्कस्पेस, टाइटल, लेआउट इंडिकेटर, क्लॉक, सिस्टम स्टेटस और वॉल्यूम/ब्राइटनेस स्लाइडर जैसे विजेट प्रदान करता है, साथ ही एक टाइटल कैरोसेल और vim-मोडल मोशन के साथ एक इनलाइन कमांड प्रॉम्प्ट। कॉन्फ़िगरेशन TOML का उपयोग हॉट-रीलोडिंग के साथ करता है, जिसमें बाइनरी हॉट-रीलोड शामिल है जो मौजूदा X सत्र को संरक्षित करता है। कॉन्फ़िग को कई फाइलों में विभाजित किया जा सकता है जो स्वचालित रूप से जोड़ी जाती हैं; एक कार्यात्मक कॉन्फ़िग और config/themes/ के तहत स्वैपेबल थीम डिफ़ॉल्ट विभाजन हैं। बाइंडिंग glob विस्तार, रेंज्ड की, मल्टी-एक्शन ऐरे, माउस बाइंडिंग और प्लेसहोल्डर प्रतिस्थापन का समर्थन करती हैं। स्केलिंग DPI-जागरूक है। सत्र एकीकरण EWMH/ICCCM सहयोग, पुनः आरंभ के दौरान विंडो दृढ़ता, एक साफ re-exec, SIGUSR2 पर क्रैश बैकट्रेस डंप, और RandR के माध्यम से मॉनिटर रिफ्रेश-रेट डिटेक्शन को कवर करता है। ब्राइटनेस नियंत्रण sysfs के माध्यम से लिखता है जब udev नियम और video समूह सदस्यता कॉन्फ़िगर की जाती है, अन्यथा थ्रॉटल्ड brightnessctl सबप्रोसेस पर वापस आ जाता है। बिल्ड आवश्यकताएं Zig 0.16.0, एक X सर्वर, randr/XKB एक्सटेंशन के साथ libxcb, xcb-util-cursor, xcb-util-keysyms, xkbcommon और xkbcommon-x11, साथ ही cairo और pango/pangocairo हैं। ये बिना शर्त लिंक किए जाते हैं, इसलिए बार हटाए जाने पर भी डेवलपमेंट हेडर की आवश्यकता होती है। इंस्टॉलेशन अनिवार्य रूप से zig build है; Ubuntu/Debian, Arch और Fedora के लिए डिस्ट्रो पैकेज कमांड दिए गए हैं। डेवलपमेंट टूलिंग में लेयर चेक, एक मॉड्यूलरिटी मैट्रिक्स जो प्रत्येक मॉड्यूल को अलगाव में बनाता है, ऑप्ट-इन लेटेंसी बेंचमार्क, dev/harness/ के तहत गोल्डन स्नैपशॉट के साथ एंड-टू-एंड X परिदृश्य, और src/test/ के तहत यूनिट टेस्ट शामिल हैं। README नोट करता है कि प्रोजेक्ट प्रारंभिक चरण में है, एक स्थिर main ब्रांच की योजना है और dev पर ब्लीडिंग-एज काम है। एक रोडमैप बाहरी बार समर्थन, एक उलटा अनुपात स्पेलिंग, बेहतर नियम-संचालित विंडो प्रॉपर्टी और प्रति-मॉनिटर स्केलिंग पॉलिश को अभी तक शिप नहीं किए गए के रूप में सूचीबद्ध करता है।