• Ghostty-web एक ब्राउज़र में चलने वाला VT100 संगत टर्मिनल इम्यूलेटर है, जिसे xterm.js API की तरह ही इस्तेमाल किया जा सकता है
  • यह WASM में कंपाइल किया गया Ghostty parser उपयोग करके नेटिव ऐप के समान कोड बेस देता है और इसमें कोई रनटाइम निर्भरता नहीं
  • मौजूदा xterm.js प्रोजेक्ट में सिर्फ @xterm/xterm को ghostty-web से बदलने पर ही माइग्रेशन हो सकता है
  • जटिल स्क्रिप्ट रेंडरिंग और XTPUSHSGR/XTPOPSGR sequence support जैसे मामलों में यह xterm.js से अधिक सटीक हैंडलिंग देता है
  • ब्राउज़र-आधारित डेवलपमेंट एनवायरनमेंट या cloud IDE में हाई-परफॉर्मेंस टर्मिनल इम्प्लीमेंटेशन को सरल बना सकता है

अवलोकन

  • ghostty-web Ghostty के टर्मिनल इम्यूलेटर को वेब वातावरण में पोर्ट करने वाला प्रोजेक्ट है, जो xterm.js API compatibility बनाए रखता है
    • ब्राउज़र में सटीक VT100 implementation देता है
    • पहले से xterm.js उपयोग करने वाले उपयोगकर्ता आसानी से स्विच कर सकते हैं
  • यह WASM में कंपाइल्ड Ghostty parser का उपयोग करता है और नेटिव ऐप के समान कोड रन करता है
    • इसमें runtime dependency नहीं है, लगभग 400KB आकार के WASM bundle के साथ
  • यह पहले Mux (एक अलग-थलग समानांतर विकास डेस्कटॉप ऐप) के लिए बनाया गया था, लेकिन कई अलग-अलग environments में उपयोग किया जा सकता है

डेमो और रन

  • लाइव डेमो ghostty.ondis.co पर उपलब्ध है
  • लोकल एनवायरनमेंट में इसे इस कमांड से रन किया जा सकता है
    npx @ghostty-web/demo@next  
    
    • वास्तविक shell http://localhost:8080 पर चलता है
    • Linux और macOS पर ऑप्टिमाइज्ड तरीके से काम करता है

xterm.js के साथ तुलना

  • xterm.js VS Code, Hyper आदि कई environments में इस्तेमाल होता है, लेकिन इसमें rendering issues और unsupported features मौजूद हैं
    • जटिल स्क्रिप्ट (Devanagari, Arabic आदि) प्रोसेस करते समय rendering errors दिख सकते हैं
    • XTPUSHSGR/XTPOPSGR sequences support नहीं है
  • ghostty-web इन समस्याओं को हल करते हुए सटीक grapheme handling और पूरी sequence support देता है
  • जबकि xterm.js में टर्मिनल इम्यूलेशन का पूरा लॉजिक JavaScript में फिर से implement किया गया है, ghostty-web सीधे validated native Ghostty code का उपयोग करता है

इंस्टॉलेशन और उपयोग

  • इंस्टॉलेशन कमांड
    npm install ghostty-web  
    
  • xterm.js जैसी ही API से उपयोग करें
    import { init, Terminal } from 'ghostty-web';  
    await init();  
    const term = new Terminal({ fontSize: 14, theme: { background: '#1a1b26', foreground: '#a9b1d6' } });  
    term.open(document.getElementById('terminal'));  
    term.onData((data) => websocket.send(data));  
    websocket.onmessage = (e) => term.write(e.data);  
    
  • क्लाइंट–सर्वर communication उदाहरण के लिए demo/index.html देखें

डेवलपमेंट और बिल्ड

  • Ghostty स्रोत कोड से build करते हुए अतिरिक्त फीचर एक्सपोज़ करने के लिए patch (ghostty-wasm-api.patch) शामिल है
  • Zig और Bun की जरूरत है
    bun run build  
    
  • Ghostty के निर्माता Mitchell Hashimoto द्वारा बनाए जा रहे libghostty की वजह से patch छोटा रहा
  • आगे चलकर official Ghostty WASM रिलीज़ के आधार पर, xterm.js-compatible API compatibility बनाए रखने की योजना है
  • इस प्रोजेक्ट का विकास Coder टीम ने Ghostty को support देने के लिए किया

लाइसेंस

  • MIT लाइसेंस लागू

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

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