4 puan yazan GN⁺ 2025-12-02 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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

  • Canlı demo ghostty.ondis.co'de çalışır.
  • Yerelde aşağıdaki komutla başlatılabilir:
    npx @ghostty-web/demo@next
    
    • Gerçek bir shell'i http://localhost:8080 adresinde çalıştırır.
    • Linux ve macOS'ta en iyi şekilde çalışır.

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

  • MIT lisansı uygulanır.

Henüz yorum yok.

Henüz yorum yok.