2 poin oleh GN⁺ 2024-01-31 | 1 komentar | Bagikan ke WhatsApp

Saya hanya ingin membuat Emacs terlihat cantik — menggunakan warna 24-bit di terminal

  • Komunitas Emacs aktif, dan melalui LSP menyediakan fitur pelengkapan otomatis modern serta pemeriksaan tipe inline.
  • Di lingkungan grafis, Emacs secara otomatis mendukung warna 24-bit, tetapi di terminal tidak demikian.

Kode escape ANSI

  • Terminal perangkat keras awal menyediakan kode kontrol yang tidak saling kompatibel, dan ANSI menstandarkannya.
  • Melalui SGR (Select Graphics Rendition), berbagai atribut tampilan karakter dapat diatur.

Warna 3-, 4-, dan 8-bit

  • Saat warna diperkenalkan, ada 8 warna dasar, lalu kemudian warna terang ditambahkan sehingga totalnya menjadi 16 warna.
  • Pada 1999, Todd Larason menambahkan patch ke xterm untuk mendukung 256 warna.

Dari mana dukungan warna 24-bit berasal?

  • Cara mengirim warna 8-bit dan 24-bit ke terminal yang kompatibel sudah terdokumentasi dengan baik.
  • Melalui proses standardisasi ANSI pada tahun 70-an dan ISO 8613-6 (ITU T.416) pada tahun 90-an, 38 dan 48 didefinisikan sebagai mode warna foreground dan background yang diperluas.

Terminfo

  • Terminfo menyediakan basis data kemampuan terminal, dan melalui variabel lingkungan TERM, program diberi tahu rekaman terminfo mana yang harus digunakan.
  • xterm-256color dan xterm-direct masing-masing mendukung 256 warna dan warna RGB.

Pengaturan TERM: masalah titik koma

  • Karena banyak terminal hanya mendukung sintaks titik koma, Anda perlu memastikan TERM telah diatur dengan benar.

Pengaturan Emacs

  • Emacs mendokumentasikan cara mendeteksi dukungan truecolor.
  • RGB adalah fitur warna bawaan Emacs, dan terlebih dahulu mencari string setf24 dan setb24.

Terminal bertingkat

  • Alur kerja umum menggunakan beberapa terminal yang saling bertingkat.
  • Semua lapisan harus memahami warna 24-bit dan mengonversinya dengan akurat.

Emulator terminal grafis

  • Sebagian besar terminal menetapkan TERM ke nilai bawaan yang masuk akal atau memungkinkan override.

ssh

  • ssh meneruskan nilai TERM ke host jarak jauh.

tmux

  • Di dalam tmux, TERM perlu diatur ke nilai seperti tmux-direct.

Pendapat GN⁺

  • Hal terpenting dari tulisan ini adalah kebutuhan pengguna yang ingin memakai warna berkualitas tinggi bahkan di lingkungan terminal, serta perkembangan teknis yang memungkinkan hal itu.
  • Dukungan warna 24-bit adalah fitur penting yang memungkinkan pengembang memberikan pengalaman pengguna yang lebih baik, terutama sangat meningkatkan kenyamanan visual pada alat seperti editor kode.
  • Tulisan ini akan menarik dan bermanfaat bagi pengguna terminal dan Emacs, serta memberikan informasi berguna bagi mereka yang mengejar pengalaman visual yang unggul bahkan di lingkungan kerja berbasis terminal.

1 komentar

 
GN⁺ 2024-01-31
Komentar Hacker News
  • Mengungkapkan keterkejutan atas kompleksitas aplikasi terminal, serta menyampaikan terima kasih kepada para pengembang aplikasi terminal seperti iTerm dan Kitty.

    • Membagikan tautan yang mengumpulkan fungsi pengaturan warna tab untuk iTerm dan zsh.
    • Menunjukkan kompleksitas antarmuka berbasis teks dengan membandingkan terminfo dan cara terhubung ke HTTP atau SMTP melalui telnet lama.
  • Secara pribadi merasa menyesuaikan palet 16 warna di tiap aplikasi terminal lebih mudah daripada mencocokkan kode terminal di sisi aplikasi secara tepat.

    • Memberikan contoh kode untuk mengatur warna di file .Xdefaults dan file tema kustom .el.
    • Menyebutkan bahwa dengan cara ini warna output seperti ls juga menjadi lebih baik.
  • Menduga penulis akan mendapat pengalaman yang lebih baik jika mengetahui export COLORTERM=truecolor.

    • Menunjukkan bahwa hal ini disebut dalam catatan kaki dokumentasi Emacs tentang deteksi dukungan truecolor, dan juga muncul di tangkapan layar Konsole, tetapi bisa terlewat di tengah banyak lapisan terminal multiplexer.
    • Menjelaskan bahwa dengan pengaturan ini, seseorang bisa melewati konfigurasi rumit dan langsung membuat aplikasi memahami bahwa true color diinginkan.
  • Menekankan bahwa saat memakai Emacs, tidak wajib menggunakan terminal, karena bisa memakai frontend "grafis" untuk MacOS, Windows, X.org, atau Wayland.

    • Menyebutkan bahwa Emacs grafis memang terlihat seperti berjalan di terminal, tetapi sebenarnya memiliki beragam fitur termasuk penampil gambar.
    • Menyatakan bahwa dalam survei pengguna Emacs, 80% menjawab menggunakan frontend grafis.
  • Menunjukkan bahwa komputasi mungkin telah kehilangan arah melalui sistem produksi yang memakai emulator terminal, editor, dan versi sistem operasi dari tahun 1970-an.

    • Mengkritik bahwa meskipun komputer kini jutaan kali lebih kuat, kita masih melakukan pekerjaan dengan cara yang sama seperti setengah abad lalu.
  • Bercanda bahwa ia ingin membuat Emacs terlihat lebih keren dengan memakai Cool Retro Term.

    • Menjelaskan bahwa sebenarnya Cool Retro Term hanya dipakai untuk presentasi.
    • Menyebutkan bahwa ia menemukan Emacs miliknya mendukung warna 24-bit secara langsung, dan merasa syntax highlighting sedikit mengganggu.
  • Menemukan bahwa di command prompt Windows 10, urutan escape ANSI standar berfungsi, dan warna 24-bit juga bekerja dengan baik.

    • Memberikan contoh kode yang menampilkan "Hello" dengan latar belakang merah.
  • Menyebutkan bahwa hal terbaik dari Emacs dibandingkan vim/neovim adalah dukungan GUI diperlakukan sebagai warga kelas satu.

    • Mengatakan bahwa meskipun ada gVim dan banyak frontend neovim yang belum matang, ia lebih menyukai bahwa Emacs pada dasarnya berjalan melalui GUI sungguhan.
    • Menunjukkan bahwa terminal memiliki banyak peninggalan sejarah dan keterbatasan yang di era modern sudah tidak perlu.
    • Menyebutkan bahwa jika ada masalah menjalankan Emacs di server jarak jauh, seseorang bisa memakai TRAMP dan emacsclient (apakah bekerja lewat TCP atau tidak).
  • Mengatakan bahwa ia mungkin tidak akan memakai fitur ini karena menggunakan konfigurasi Emacs dengan penggunaan warna yang minimal, tetapi tetap sangat menikmati bacaan tersebut.

    • Menyebutkan bahwa ia sudah terbiasa dengan hijau terang tmux dan warna Emacs merah kecokelatan seperti karat.
  • Mengkritik bahwa sungguh memalukan standar dikunci di balik harga tinggi sehingga orang terpaksa menempuh jalan sepanjang ini tanpa membelinya.

    • Menegaskan bahwa standar seharusnya tersedia secara terbuka, dan walaupun dulu masuk akal mengenakan biaya cetak, PDF seharga $200 terasa tidak masuk akal.