- 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 में उपयोग किया जा सकता है
डेमो और रन
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 देने के लिए किया
लाइसेंस
अभी कोई टिप्पणी नहीं है.