প্রকল্প সম্পর্কে

hana (花) হলো Zig-এ লেখা একটি প্রাথমিক-উন্নয়ন পর্যায়ের X11 উইন্ডো ম্যানেজার, যা মডুলারিটি, নমনীয়তা এবং আরামদায়ক কনফিগারেশনকে কেন্দ্র করে তৈরি। এটি ডাইনামিক টাইলিং এবং ফ্লোটিং উইন্ডো—উভয় প্যারাডাইম সমর্থন করে, এবং WM-এর সাথে সমন্বিত নিজস্ব ঐচ্ছিক বার সরবরাহ করে। কোরের বাইরে কোনো ফিচার কঠোরভাবে আবশ্যক নয়: সাবসিস্টেম ও তাদের মডিউলগুলো সোর্স থেকে মুছে ফেলে প্রজেক্টটি ভিন্ন বাইনারিতে পুনঃকম্পাইল করা যায়। মডুলারিটিই ঘোষিত শীর্ষ অগ্রাধিকার। ঐচ্ছিক লজিক নিজস্ব ফাইলে থাকে, এবং কোর খোলা কনট্র্যাক্ট (Surfaces, WindowModule, Segment, Layout) ও বিল্ড-জেনারেটেড রেজিস্ট্রির মাধ্যমে সাবসিস্টেমের উপস্থিতি বা অনুপস্থিতির সাথে খাপ খায়, তাই কোর কখনো নাম ধরে কোনো ঐচ্ছিক মডিউল ইমপোর্ট করে না। একটি মডিউল মুছে ফেললে স্টাব না রেখে একটি অ্যারে ছোট হয়ে যায়। dev/plugin-template/-এর অধীনে ড্রপ-ইন টেমপ্লেটগুলো নতুন টাইলিং লেআউট, উইন্ডো সাবসিস্টেম এবং বার সেগমেন্ট কভার করে, এবং zig build check দ্বারা কনট্র্যাক্টের বিপরীতে কম্পাইল হয়। উইন্ডো ম্যানেজমেন্ট ফিচারের মধ্যে রয়েছে টাইলিং লেআউট (master-stack, monocle, grid, fibonacci, scroll, leaf, কিছু ভ্যারিয়েন্টসহ), প্রতি-উইন্ডো টাইলিং/ফ্লোটিং টগল ও ফ্লোট রুল, ফুলস্ক্রিনিং ও মিনিমাইজিং, ট্যাগিং ও পিনিংসহ ওয়ার্কস্পেস, প্রতি-প্রোগ্রাম ও প্রতি-ওয়ার্কস্পেস উইন্ডো রুল, এবং স্ন্যাপিংসহ ড্র্যাগ-অ্যান্ড-ড্রপ প্লেসমেন্ট। বারটি ওয়ার্কস্পেস, টাইটেল, লেআউট ইন্ডিকেটর, ক্লক, সিস্টেম স্ট্যাটাস এবং ভলিউম/ব্রাইটনেস স্লাইডারের মতো উইজেট দেয়, সাথে একটি টাইটেল ক্যারোসেল এবং vim-মোডাল মোশনসহ একটি ইনলাইন কমান্ড প্রম্পট। কনফিগারেশনে হট-রিলোডিংসহ TOML ব্যবহৃত হয়, যার মধ্যে বিদ্যমান X সেশন সংরক্ষণকারী বাইনারি হট-রিলোডও রয়েছে। কনফিগ একাধিক ফাইলে ভাগ করা যায় যা স্বয়ংক্রিয়ভাবে যুক্ত হয়; একটি কার্যকর কনফিগ এবং config/themes/-এর অধীনে বদলযোগ্য থিমই ডিফল্ট বিভাজন। বাইন্ডিং গ্লোব এক্সপ্যানশন, রেঞ্জড কী, মাল্টি-অ্যাকশন অ্যারে, মাউস বাইন্ডিং এবং প্লেসহোল্ডার সাবস্টিটিউশন সমর্থন করে। স্কেলিং DPI-সচেতন। সেশন ইন্টিগ্রেশন EWMH/ICCCM সহযোগিতা, রিস্টার্ট জুড়ে উইন্ডো পার্সিস্টেন্স, একটি পরিচ্ছন্ন re-exec, SIGUSR2-এ ক্র্যাশ ব্যাকট্রেস ডাম্প, এবং RandR-এর মাধ্যমে মনিটর রিফ্রেশ-রেট ডিটেকশন কভার করে। ব্রাইটনেস কন্ট্রোল udev রুল ও video গ্রুপ মেম্বারশিপ কনফিগার করা থাকলে sysfs-এ লেখে, অন্যথায় থ্রটলড 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-এ। একটি রোডম্যাপে এক্সটার্নাল বার সাপোর্ট, একটি রিভার্সড রেশিও স্পেলিং, সূক্ষ্ম রুল-চালিত উইন্ডো প্রপার্টি এবং প্রতি-মনিটর স্কেলিং পলিশকে এখনো শিপ হয়নি বলে তালিকাভুক্ত করা হয়েছে।