55 puan yazan GN⁺ 2025-09-11 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Linux için bir CLI programı; GUI uygulamalarını doğrudan terminalden çalıştırmayı mümkün kılar
  • Monitör yerine GUI çıktısını terminale iletmek için kendi geliştirdiği Wayland compositor'ını kullanır
  • ssh ortamında da çalışabilir; web tarayıcısı, dosya yöneticisi, hatta Doom oyunu bile terminal içinde çalıştırılabilir
  • Çıktı kalitesi terminal çözünürlüğüne (satır/sütun sayısı) göre değişir; iTerm2 ve kitty gibi görüntü destekli terminallerde tam çözünürlüklü render da desteklenir
  • Typescript ve bun tabanlı geliştirilmiştir, bazı C++ kodları içerir; şu anda yalnızca bazı uygulamaları desteklese de hedefi “Term everything❗” doğrultusunda genişlemektir

Projenin önemi ve karşılaştırmalı üstünlükleri

  • Term.everything, mevcut terminal dosya görüntüleyicileri veya basit görsel çıktı araçlarından farklı olarak, “tüm” GUI uygulamalarını terminal içinde çalıştırabilir
  • SSH dahil ağ ortamlarında da GUI arayüzü kullanılabildiği için sunucu yönetimi ve uzaktan geliştirme açısından güçlüdür
  • kitty, iTerm2 gibi modern terminallerin görüntü özelliklerini azami ölçüde kullanır ve çözünürlük/kare hızı iyileştirme seçenekleri sunar

Genel bakış

  • Term.everything bir Linux CLI programıdır ve terminalde GUI pencerelerini doğrudan çalıştırabilmesiyle öne çıkar
  • Kendi geliştirdiği Wayland tabanlı compositor temel bileşendir; normal monitör yerine GUI’yi terminale render eder
  • Hem X11 hem Wayland tabanlı uygulamaları destekler ve ssh üzerinden uzaktan da kullanılabilir
  • Terminalin sınırlı satır/sütun yapısı pencere kalitesini etkiler; terminal çözünürlüğü artırılırsa kalite yükselebilir (ancak performans düşebilir)

Başlıca kullanım örnekleri

  • Oyun çalıştırma: Terminal içinde Fontemon gibi oyunlar veya Doom (shareware bölümü) çalıştırılabilir
  • Video oynatma: Wing It! filmi oynatılabilir; çözünürlük ayarıyla kare hızı ve görüntü kalitesi arasında denge kurulabilir
  • Tarayıcı çalıştırma: iTerm2 + ssh ortamında Ubuntu’ya bağlanıp Firefox çalıştırılabilir
  • Dosya görüntüleyici alternatifi: Terminale özel bir dosya görüntüleyici yapmak yerine, mevcut GUI dosya yöneticileri doğrudan terminalde kullanılabilir
  • Özyinelemeli çalıştırma: Terminal içinde başka bir terminal çalıştıran "terminal in a terminal"

Çalışma prensibi ve geliştirme bilgileri

  • Temel kavram

    • Geçmişte bir programın ekrana bir şey çizmesi için RAM'in belirli bir alanına doğrudan yazabilmesi mümkündü
    • Modern sistemlerde Display Server giriş/çıkışı yönetir; fare/klavye gibi girdiler ile grafik/görüntü çıktısını koordine eder
    • Linux ortamında çoğunlukla Wayland protokolü veya X11 kullanılır; Term.everything ise Wayland tabanlı çalışır
  • Wayland protokolü

    • Wayland, display server'ın kendisi değil; sunucu ile program arasındaki iletişimi tanımlayan bir protokoldür
    • Programlar doğrudan render ettikleri çıktıyı display server'a iletir, sunucu da bunu ekrana basar
    • Önemli nokta, bir render modelinin zorunlu tutulmamasıdır → programlar istedikleri yöntemle çizim yapabilir
    • Bu sayede çıktı ekrana değil, başka bir yere de (ör. terminale) gönderilebilir
  • Term.everything’in çıktı işleme süreci

    • Wayland istemcisinin (çalıştırılan GUI uygulamasının) çizdiği görüntüyü alıp terminal karakter çıktısına dönüştürür
    • Dönüştürme süreci:
      • 1. İstemcinin ilettiği görüntü verisini alır
      • 2. Bunu UTF-8 karakterler + ANSI escape kodları biçimine dönüştürür
      • 3. Dönüşümde pikselleri terminal karakterlerine eşlemek için chafa kütüphanesi kullanılır
    • Girdi tarafında, stdin üzerinden gelen klavye ve fare olaylarını Wayland istemcisine iletir
  • Gerçek uygulama

    • Temel fikir basit olsa da, gerçek uygulama için yaklaşık 10 bin satır kod gerekir
    • Typescript (bun tabanlı) ve kısmen C++ ile yazılmıştır; özel bir Wayland display server rolünü üstlenir
    • Kaynak kod src/ dizininde görülebilir
  • Genişleme potansiyeli

    • Term.everything yalnızca GUI’yi terminalde çalıştırmanın ötesini hedefler
    • Wayland tabanlı özel bir display server ile başka deneysel fikirlerin de uygulanma potansiyeli vardır
    • Örneğin çıktı aygıtını terminal yerine tamamen farklı bir ortama (ör. yazıcı, fiziksel sanat eseri vb.) bağlamak mümkün olabilir

Henüz yorum yok.

Henüz yorum yok.