• libghostty C API पर आधारित न्यूनतम फीचर वाला टर्मिनल डेमो, जो एक ही C फ़ाइल और Raylib rendering का उपयोग करके चलता है
  • libghostty-vt की क्षमताओं को सत्यापित करने के लिए बनाई गई संरचना, जो GPU rendering के बजाय 2D graphics आधारित टर्मिनल implementation दिखाती है
  • text reflow, 24-bit color, Unicode handling, mouse·keyboard protocols जैसी वास्तविक टर्मिनल-स्तरीय सुविधाओं का समर्थन करता है
  • Kitty Graphics Protocol और OSC clipboard·title setting जैसी कुछ सुविधाएँ अभी लागू नहीं हैं, और Windows support भी शामिल नहीं है
  • libghostty के core का उपयोग करके विभिन्न applications को अपना GUI या renderer जोड़ने की extensibility प्रदान करता है

Ghostling का अवलोकन

  • Ghostling एक न्यूनतम फीचर वाला टर्मिनल डेमो प्रोजेक्ट है, जो libghostty C API पर आधारित है और एक single C file से बना उदाहरण है
  • यह Raylib का उपयोग window management और rendering के लिए करता है, और single-threaded संरचना में चलता है
  • libghostty-vt की flexibility दिखाने के लिए यह direct GPU rendering के बजाय 2D graphics renderer का उपयोग करता है
  • यह पूरी तरह रोज़मर्रा के उपयोग वाला टर्मिनल नहीं, बल्कि minimum viable terminal implementation का उदाहरण है, इसलिए कोड की सटीकता का सत्यापन सीमित है

Libghostty परिचय

  • Libghostty, Ghostty के core से निकाली गई एक embedded terminal emulation library है, जो C और Zig API प्रदान करती है
  • libghostty-vt एक dependency-free library है, जो VT sequence parsing, cursor position, style, scrollback जैसे terminal state management को संभालती है
    • इसमें rendering या window management code शामिल नहीं है, इसलिए इसका उपयोग करने वाले applications को इन्हें स्वयं implement करना होगा
  • Ghostty GUI में सत्यापित codebase पर आधारित होकर यह accurate और complete terminal emulation, SIMD-optimized parsing, advanced Unicode support, efficient memory use, और extensive test-based stability प्रदान करता है

मुख्य सुविधाएँ

  • text reflow सहित window resizing का समर्थन
  • 24-bit color और 256-color palette, bold·italic·inverse styles का समर्थन
  • Unicode और multi-codepoint grapheme handling (लेकिन shaping·layout नहीं)
  • Shift, Ctrl, Alt, Super जैसे modifier key input का समर्थन
  • Kitty keyboard protocol, mouse tracking (X10, normal, button, any-event), कई mouse reporting formats (SGR, URxvt, UTF8, X10) का समर्थन
  • scroll wheel और drag scrollbar, focus reporting (CSI I / CSI O) का समर्थन
  • Ghostty GUI के समान स्तर की अधिकांश terminal emulation सुविधाएँ शामिल

नियोजित सुविधाएँ

  • वे सुविधाएँ जो अभी libghostty-vt में पूरी तरह expose नहीं हुई हैं
    • Kitty Graphics Protocol

    • OSC clipboard support

      • OSC title setting
      • Windows support libghostty-vt में संभव है, लेकिन Ghostling में अभी लागू नहीं है
      • भविष्य में जैसे-जैसे नई अतिरिक्त सुविधाएँ मिलेंगी, यह सूची बढ़ाई जाएगी

जो सुविधाएँ प्रदान नहीं की जातीं

  • libghostty टर्मिनल emulation core पर केंद्रित है, इसलिए इसमें GUI layer की सुविधाएँ शामिल नहीं हैं
    • tabs, multi-window, split screen, session management, config file, GUI, search UI आदि शामिल नहीं हैं
  • ऐसी सुविधाएँ libghostty का उपयोग करने वाले applications को स्वयं implement करनी होंगी
  • Ghostling, न्यूनतम उदाहरण बनाए रखने के लिए, जानबूझकर इन सुविधाओं को शामिल नहीं करता

Build करने का तरीका

  • आवश्यकताएँ: CMake 3.19 या उससे ऊपर, C compiler, PATH में Zig 0.15.x
  • अगर Raylib इंस्टॉल नहीं है, तो इसे CMake के FetchContent से अपने आप डाउनलोड किया जाएगा
  • मूल build प्रक्रिया
    cmake -B build -G Ninja  
    cmake --build build  
    ./build/ghostling  
    
  • ध्यान दें: debug build, safety checks की वजह से बहुत धीमा होता है और benchmarking के लिए उपयुक्त नहीं है
  • Release build
    cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release  
    cmake --build build  
    
  • शुरुआती setup के बाद केवल cmake --build build चलाना पर्याप्त है

FAQ

  • Zig की जगह C क्यों इस्तेमाल किया गया

    • libghostty-vt** पूरा Zig API देता है, लेकिन** C API अधिक व्यापक रूप से इस्तेमाल होता है और अधिक सुलभ है

      • Ghostling, न्यूनतम C API usage example दिखाने के लिए एक डेमो है
  • Rust जैसी अन्य भाषाओं का समर्थन

    • libghostty-vt C API के माध्यम से zero dependency के साथ चल सकता है
    • अधिकांश भाषाओं में इसे thin binding के साथ उपयोग किया जा सकता है, और official bindings C और Zig पर केंद्रित हैं
    • उम्मीद है कि community विभिन्न language bindings विकसित और maintain करेगी
  • क्या Raylib अनिवार्य है

    • नहीं. libghostty पर renderer या GUI framework को लेकर कोई बाध्यता नहीं है
    • यह WASM environment में भी स्वतंत्र रूप से चल सकता है
    • यह render state API प्रदान करता है, इसलिए Metal·OpenGL·Raylib जैसे किसी भी renderer के साथ जोड़ा जा सकता है
  • CMake और Raylib क्यों चुने गए

    • यह किसी विशेष तकनीक पर निर्भर नहीं है, और CMake एक सामान्य-purpose build system है जिसे व्यापक support प्राप्त है
    • Raylib** एक सरल और आसानी से configure होने वाली** 2D window·rendering library है

      • प्रोजेक्ट का उद्देश्य तकनीकी चयन से अधिक libghostty के उपयोग का उदाहरण दिखाना है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.