55 poin oleh GN⁺ 2025-09-11 | Belum ada komentar. | Bagikan ke WhatsApp
  • Program CLI untuk Linux yang memungkinkan menjalankan aplikasi GUI langsung dari terminal
  • Menggunakan kompositor Wayland buatannya sendiri untuk mengirim output GUI ke terminal alih-alih ke monitor
  • Dapat dijalankan juga di lingkungan ssh, dan browser web, file manager, bahkan game Doom bisa dijalankan di dalam terminal
  • Kualitas output bergantung pada resolusi terminal (jumlah baris·kolom), dan pada terminal dengan dukungan gambar seperti iTerm2·kitty juga mendukung rendering resolusi penuh
  • Dikembangkan berbasis Typescript dan bun dengan sebagian kode C++, saat ini baru mendukung sebagian aplikasi tetapi sedang diperluas dengan tujuan “Term everything❗”

Pentingnya proyek dan keunggulan perbandingan

  • Berbeda dari penampil file terminal atau alat output gambar sederhana yang sudah ada, Term.everything dapat menjalankan aplikasi GUI “apa pun” di dalam terminal
  • Antarmuka GUI tetap dapat digunakan bahkan di lingkungan jaringan termasuk SSH, sehingga unggul untuk administrasi server dan pengembangan jarak jauh
  • Memanfaatkan semaksimal mungkin fitur gambar pada terminal modern seperti kitty dan iterm2, serta menyediakan opsi peningkatan resolusi dan frame rate

Ikhtisar

  • Term.everything adalah program CLI Linux, dengan ciri utama mampu menjalankan jendela GUI langsung di terminal
  • Inti teknologinya adalah kompositor berbasis Wayland yang dikembangkan sendiri, yang merender GUI ke terminal alih-alih ke monitor biasa
  • Mendukung lingkungan berbasis x11 maupun Wayland, dan bisa digunakan dari jarak jauh melalui ssh
  • Jumlah baris/kolom terminal yang terbatas memengaruhi kualitas jendela, dan kualitas dapat ditingkatkan dengan menaikkan resolusi terminal (meski ada kemungkinan penurunan performa)

Contoh penggunaan utama

  • Menjalankan game: dapat menjalankan game seperti Fontemon atau Doom (episode shareware) di dalam terminal
  • Memutar video: memutar film Wing It!, dengan pengaturan keseimbangan frame rate dan kualitas gambar melalui penyesuaian resolusi
  • Menjalankan browser: di lingkungan iTerm2 + ssh, dapat terhubung ke Ubuntu dan menjalankan Firefox
  • Pengganti penampil file: tanpa perlu membuat penampil file khusus terminal, file manager GUI yang sudah ada bisa langsung digunakan di terminal
  • Eksekusi rekursif: menjalankan terminal lain di dalam terminal, yaitu "terminal in a terminal"

Cara kerja dan informasi pengembangan

  • Konsep dasar

    • Di masa lalu, agar program dapat menggambar sesuatu ke layar, program bisa menulis langsung ke area tertentu di RAM
    • Pada sistem modern, display server mengelola input/output dan mengoordinasikan input seperti mouse/keyboard serta output grafis/gambar
    • Di lingkungan Linux, yang umum digunakan adalah protokol Wayland atau X11, dan Term.everything beroperasi berbasis Wayland
  • Protokol Wayland

    • Wayland bukan display server itu sendiri, melainkan protokol yang mendefinisikan komunikasi antara server dan program
    • Program mengirim hasil render yang dibuatnya sendiri ke display server, lalu server menampilkannya ke layar
    • Poin pentingnya adalah model rendering tidak dipaksakan → program dapat menggambar dengan cara yang diinginkan
    • Berkat itu, hasil output dapat dikirim ke tempat lain selain layar (misalnya terminal)
  • Pemrosesan output di Term.everything

    • Menerima gambar yang digambar oleh klien Wayland (aplikasi GUI yang dijalankan), lalu mengubahnya menjadi output karakter terminal
    • Proses konversi:
      • 1. Menerima data gambar yang dikirim klien
      • 2. Mengubahnya menjadi karakter UTF-8 + kode escape ANSI
      • 3. Dalam konversi ini digunakan library chafa untuk memetakan piksel ke karakter terminal
    • Untuk input, event keyboard dan mouse yang diteruskan melalui stdin dikirim ke klien Wayland
  • Implementasi nyata

    • Ide intinya sederhana, tetapi implementasi nyatanya memerlukan sekitar sepuluh ribu baris kode
    • Ditulis dengan Typescript (berbasis bun) dan sebagian C++, serta berperan sebagai display server Wayland kustom
    • Kode sumber dapat dilihat di direktori src/
  • Potensi pengembangan

    • Term.everything tidak hanya menargetkan menjalankan GUI di terminal semata
    • Dengan display server kustom berbasis Wayland, ada kemungkinan untuk mewujudkan ide-ide eksperimental lain juga
    • Contoh: menghubungkan perangkat output bukan ke terminal, melainkan ke media yang sama sekali berbeda (misalnya printer, karya seni fisik, dll.)

Belum ada komentar.

Belum ada komentar.