- Ghostty-web, tarayıcıda çalışan bir VT100 uyumlu terminal emülatörüdür ve xterm.js API'siyle aynı şekilde kullanılabilir.
- WASM ile derlenmiş Ghostty ayrıştırıcısı kullanılarak, yerel uygulamalarla aynı kod tabanı sunulur ve çalışma zamanı bağımlılığı yoktur.
- Mevcut xterm.js projeleri yalnızca
@xterm/xtermi ghostty-web ile değiştirerek geçiş yapabilir.
- Karmaşık betik renderleme ve XTPUSHSGR/XTPOPSGR dizisi desteği gibi durumlarda xterm.js'ten daha doğru davranış sunar.
- Tarayıcı tabanlı geliştirme ortamlarında veya bulut IDE'lerde yüksek performanslı bir terminali daha basit şekilde uygulamaya yardımcı olur.
Genel Bakış
- ghostty-web, Ghostty terminal emülatörünü web ortamına taşımayı amaçlayan bir projedir ve xterm.js API uyumluluğunu korur.
- Tarayıcıda doğru VT100 uygulaması sağlar.
- Mevcut xterm.js kullanıcıları kolayca geçiş yapabilir.
- WASM ile derlenmiş Ghostty ayrıştırıcısı kullanılır ve yerel uygulamayla aynı kod çalıştırılır.
- Çalışma zamanı bağımlılığı yoktur, yaklaşık 400KB boyutunda bir WASM paketi ile gelir.
- Orijinal olarak Mux (izole paralel geliştirme için masaüstü uygulaması) için yapılmış olsa da, birçok ortamda kullanılabilir.
Demo ve Çalıştırma
xterm.js ile Karşılaştırma
- xterm.js, VS Code, Hyper ve diğer çeşitli ortamlarda kullanılsa da renderlama sorunları ve eksik özellikler bulunuyor.
- Karmaşık yazı sistemleri (Devanagari, Arapça vb.) işlerken renderleme hataları oluşuyor.
- XTPUSHSGR/XTPOPSGR dizileri desteklenmiyor.
- ghostty-web bu sorunları çözüyor ve doğru grapheme işleme ile tam dizi desteği sağlıyor.
- xterm.js tüm emülasyonu JavaScript ile yeniden uygulamışken, ghostty-web doğrulanmış yerel Ghostty kodunu doğrudan kullanıyor.
Kurulum ve Kullanım
- Kurulum komutu
npm install ghostty-web
- xterm.js ile aynı API kullanılarak çalışır:
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);
- İstemci–sunucu iletişimi için örnek, demo/index.html dosyasında bulunabilir.
Geliştirme ve Derleme
- Ghostty kaynağından derlenir ve ek özellik açığa çıkarma için bir yama (
ghostty-wasm-api.patch) eklenir.
- Zig ve Bun gereklidir.
bun run build
- Ghostty geliştiricisi Mitchell Hashimoto tarafından geliştirilen
libghostty sayesinde yama boyutu küçüktür.
- Gelecekte, resmi Ghostty WASM dağıtımı temel alınarak xterm.js uyumlu API'nin korunması hedefleniyor.
- Proje, Ghostty'ye desteklerini gösteren Coder ekibi tarafından geliştiriliyor.
Lisans
Henüz yorum yok.