55 puan yazan GN⁺ 2025-09-11 | 9 yorum | 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"
Reklam

Ç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
      Reklam
    • 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

9 yorum

 
iolothebard 2025-09-14

Gereksizin de gereksizi

 
ifmkl 2025-09-11

İşte gerçekten geekçe olan şey bu :)

 
hybridego 2025-09-11

Bende neden sadece logo görünüyor ve çalışmıyor??

 
bus710 2025-09-11

Ben şirket Mac’imden kişisel Mac’imi kontrol etmek için Synergy kullanıyordum. Şimdi ise kişisel Mac’imi elden çıkarıp sadece Linux kullandığım için iş akışım daha zahmetli hale geldi.

Ama bu aracı kullanırsam şirket Mac’inin terminalinden kişisel Linux masaüstüme bağlanıp istediğim gibi çeşitli işler yapabileceğim anlamına mı geliyor?

Güvenlik ekibinin bundan pek hoşlanmayacağı kesin gibi.

 
coremaker 2025-09-11

Ben de eski kurtlardan sayılırım ama buna gerçekten ihtiyaç var mı?

 
cgl00 2025-09-11

Sunucuda web ile ilgili deneyler yaparken (localhost üzerinden) faydalı olabilir gibi görünüyor.

 
coremaker 2025-09-11

Yerelde çözmek ve dağıtımdan önce test etmek istediğiniz durumlardan bahsediyorsunuz, değil mi?
Uzak konumda çalışmak, iç ağa erişimin zor olduğu kısıtlı bir ortamdayken...

 
t7vonn 2025-09-11

iTerm içinde term.everything ile iTerm'i açarsanız.. olur mu?

 
GN⁺ 2025-09-11
Hacker News görüşleri
  • Bunun tamamen gereksiz ama bir o kadar da harika bir proje olduğunu düşünüyorum; programlama ile sanatın sınırında duruyor. Bu projenin son derece keyifli bir öğrenme deneyimi olduğuna inanıyorum, gerçekten çok iyi iş çıkarmışlar.
    • %100 gereksiz olduğunu sanmıyorum. Docker container içinde çalışan uygulamalar için faydalı olabilir diye düşünüyorum. Normalde container içinde GUI uygulaması çalıştırmanın yolları var ama bu daha kolay olabilir. Gerçi Docker'da GUI uygulaması çalıştırmak düşündüğümden daha kolaymış; şu rehbere bakıp yarın test etmeyi planlıyorum, Windows'ta da çalışıp çalışmadığını merak ediyorum.
    • Bu projenin beni neden bu kadar mutlu ettiğini açıklamak zor ama pratikte çok sık kullanmayacak olsam da bunu düşününce yüzümde aptalca bir gülümseme beliriyor.
  • Bu, sınırın nerede olduğunu kestirmeyi imkânsız kılan bir proje. Gerçekten harika ve sonsuza kadar övünmek isteyeceğim türden bir iş. Müthiş olduğunu düşünüyorum ve ekipte VDI'ı gelecekte nasıl uygulamamız gerektiğini sorgulamama neden oluyor. "ghost in the shell" ifadesine yeni bir anlam katıyor gibi. Bu arada, acaba doom da çalıştırılabiliyor mu?
    • Merak edenler doom'un çalıştığını görebilir. term.everything girdiyi yalnızca stdin üzerinden aldığı için birkaç satır değiştirip çalıştırdım. SSH üzerinden çeşitli terminallerde uyumluluğu yüksek.
      1. Control tuşunu başka bir tuşa eşledim (normalde sinyal göndermek için kullanılıyor).
      2. Girdi zaman aşımını ayarlamam gerekti. stdin tabanlı girdi yalnızca keydown olaylarını alıyor, keyup olayları oluşmuyor. Bu yüzden kullanıcının tuşu ne zaman bıraktığını tahmin etmek gerekiyor ve normalde hemen keyup göndermek yeterli olsa da doom'da tuş debounce işlemi nedeniyle yaklaşık 50~100 ms beklemek gerekti. Oyunda ileri gitmek için normalde yukarı ok tuşunu basılı tutmak yeterlidir ama bu yöntemde tekrar tekrar basmak gerekiyor; biraz rahatsız edici olsa da çalışıyor ve oynanabiliyor.
    • aaquake, bu tür projelerden çok önce ASCII terminal ortamında zaten çalıştırılmış bir oyundu.
  • Bence bu proje gerçekten çok havalı. Şahsen Wayland tabanında bunun gibi daha fazla ilginç kullanım örneği çıkacağını düşünüyorum. greenfield projesi gibi şeyler de ilgimi çekiyor.
  • Geçmişte carbonyl projesinde Chromium'un terminalde çalıştığını gördüğümde gerçekten heyecanlanmıştım (buraya bakın), ama şu anda bakımı yapılmıyor. Bu proje bana o fikrin bir seviye ilerletilmiş hâli gibi geliyor. İçtenlikle çok etkileyici bir sonuç olduğunu düşünüyorum.
  • bash_completion'ın gerçekten kolay kullanılabilir hâle getirilmesi gerektiğini düşünüyorum. Aslında yazması göründüğünden daha zor; basit kopyala-yapıştır bile zahmetli. Akıllı geliştiriciler en baştan bash_completion ile iyi çalışan uygulamalar yapıyor. Örneğin ilk temel argüman bash dostuysa, mycli myfunc ... gibi bir yapı sayesinde tek bir Tab ile tüm işlevler hemen görülebiliyor. Yeni özelliklerin ayrıca duyurulmasına da gerek kalmıyor. Completion'dan çıkararak eski script'leri bozmadan özellikleri doğal biçimde kullanımdan kaldırmak da mümkün. Sonuçta birisi önceden emek verdiği için CLI içinde her şey yerini bulmuş oluyor.
  • Benim gibi build machine üzerinde bazen doğrudan masaüstüne ya da tarayıcıya erişip iş yapmak zorunda kalanlar için VNC veya diğer masaüstü paylaşım yöntemleri ya pratik olmuyor ya da güvenlik açısından sorunlu oluyor. Bu projenin böyle durumlarda çok yardımcı olacağını düşünüyorum.
  • Bence gerçekten kullanışlı bir proje. Uzaktan tek seferlik işler yapmak gerektiğinde iyi olabilir. Çalışan bir programa uzaktan bağlanıp sonra ayrılma ya da ekran yansıtma kısmı konusunda emin değilim. SSH ile masaüstüne bağlanıp çalışan Discord gibi istemcileri kontrol etmek mümkünse kullanışlı olurdu. Bu arada uzaktan uygulama çalıştırmaya dair RDP özelliklerine de bakmak isterim.
    • Doğrudan CLI için bir Discord istemcisi kullanabilir ya da Bitlbee sunucusuna bağlanan bir IRC istemcisi çalıştırabilirsin.
  • <i>Terminalde</i> kısmını not etmek lazım; bunun metin modunda çalışmayacağını kendime hatırlatıyorum.
    • Ama ilk örnek (çizgi roman örneği) metin modu değil miydi?
  • Projenin gelişmeye devam etmesini diliyorum, umarım asla durmaz.
  • Gerçekten inanılmaz olduğunu düşünüyorum! Herkesin kendine özgü kullanım senaryoları olacaktır ama benim için en heyecan verici tarafı, VSCode'u iPad'de çalıştırma ihtimali. Umarım bir gün iPadOS desteği de gelir.
    • Ben uzaktan geliştirme için genelde code-server kullanıyorum ve bu bana yeterli geliyor.
    • iPad için SSH istemcileri var, dolayısıyla mümkün olduğunu düşünüyorum. Bunu hemen denemeyi planlıyorum.