Saya hanya ingin membuat Emacs terlihat cantik – menggunakan warna 24-bit di terminal
(chadaustin.me)- Untuk melihat tema seperti Solarized dengan benar di Emacs terminal, yang penting bukan hanya warna 24-bit itu sendiri, melainkan apakah terminal, terminfo, tmux, dan mosh memahami kemampuan warna yang sama hingga ujung rantai
- Warna RGB banyak digunakan dalam bentuk
ESC[38;2;<r>;<g>;<b>m, tetapi sintaks titik dua yang lebih dekat ke standar dan sintaks titik koma yang menyebar dalam implementasi nyata sama-sama tetap ada, sehingga kompatibilitas menjadi rumit xterm-256colordanxterm-directmasing-masing mengiklankan palet 256 warna dan 16.777.216 warna, tetapi model terminfo yang berpusat pada palet tidak dapat merepresentasikan warna RGB langsung dengan rapi- Dalam lingkungan nyata, nilai TERM alternatif seperti entri
-directdarincurses-term,tmux-direct, mosh seri 1.4, danvscode-directmungkin diperlukan, sementara sebagian lapisan masih hanya menerima format titik koma - Untuk memakai kemampuan terminal modern secara stabil, TERM dan terminfo saja tidak cukup; diperlukan cara representasi terpisah yang memperbarui kemampuan berdasarkan nama dan versi terminal dengan lebih cepat
Mengapa warna 24-bit diperlukan di Emacs terminal
- Emacs di lingkungan grafis otomatis mendukung warna 24-bit, sehingga dapat menampilkan tema seperti Solarized dan font dengan benar
- Jika tema yang sama digunakan di terminal, ekspresi warna bisa terbatas sehingga tampilan layar menjadi kurang enak dilihat
- Terminal populer sudah lama mendukung warna 24-bit, tetapi agar program dapat memakainya, deteksi kemampuan dan pengaturannya harus sama-sama tepat
- Tujuannya ada dua
- Menemukan cara mengaktifkan dukungan truecolor di lingkungan terminal saat ini
- Memeriksa bagaimana masalah warna Emacs terkait dengan standar terminal dari era 1970–1990-an
ANSI escape code dan sejarah perluasan warna
- Terminal perangkat keras awal memakai sistem kode kontrol yang berbeda-beda, dan standardisasi ANSI diperlukan untuk membuat perangkat lunak portabel
- ANSI escape codes sudah ada sejak 1970-an, dan dalam hal warna, SGR(Select Graphics Rendition) adalah intinya
- Tebal atau kecerahan
- Italic
- Berkedip
- Warna latar depan dan latar belakang
- Atribut tampilan karakter lainnya
- Pada awalnya warna adalah warna 3-bit yang sesuai dengan 8 titik sudut kubus RGB
- Mencakup hitam, putih, warna primer aditif, dan warna primer subtraktif
- Kemudian bit warna cerah atau tebal ditambahkan sehingga diperluas menjadi 16 warna
- “bright black” setara dengan abu-abu gelap
- Pada 1999 Todd Larason menambahkan patch dukungan 256 warna ke xterm
- Sampling kubus warna RGB 6x6x6
- Ramp grayscale 24 tingkat
- Ada juga varian 88 warna yang jarang, tetapi masih didukung
Jalur terbentuknya sintaks warna 24-bit
- Warna 8-bit dan warna 24-bit disetel dalam bentuk berikut pada terminal yang kompatibel
ESC[38;5;<n>m: mengatur nomor warnanpada palet sebagai warna latar depanESC[38;2;<r>;<g>;<b>m: mengatur nilai RGBr,g,bsebagai warna latar depan
- Angka
5dan2terkait dengan mode warna perluasan ISO 8613-6, yaitu ITU T.4162: warna langsung dalam ruang RGB5: warna berindeks
- Alur standardisasinya sebagai berikut
- 1970-an: ANSI menstandardisasi urutan escape terminal, yang berlanjut menjadi ANSI X3.64 dan ECMA-48
- 1979: ECMA-48 edisi ke-2 menetapkan SGR 30~37 dan 40~47 untuk warna latar depan dan latar belakang 3-bit
- 1984: ECMA-48 edisi ke-3 memperkenalkan konsep warna latar depan dan latar belakang default serta menetapkan 39 dan 49
- 1991: ECMA-48 edisi ke-5 menyisakan 38 dan 48 untuk “standardisasi masa depan” dan memberi petunjuk ke ISO 8613-6
- 1993: ISO 8613-6 mendefinisikan 38 dan 48 sebagai mode latar depan dan latar belakang yang diperluas
- Untuk pemisah subparameter, penggunaan titik dua lebih dekat ke standar, tetapi implementasi nyata banyak mengadopsi titik koma
ESC[38;5;3mdapat ditafsirkan oleh terminal yang tidak mengenal SGR 38 sebagai parameter terpisah38,5, dan3- FAQ xterm Thomas Dickey menjelaskan bahwa salinan ITU T.416 saat itu mahal, dan memisahkan nilai RGB dengan titik koma seperti parameter SGR lain adalah kesalahan
- Linimasa terkaitnya sebagai berikut
- 1999: Thomas Dickey menggabungkan patch 256 warna Todd Larason ke xterm, dan sintaks titik koma yang ambigu ikut masuk
- 2006: Konsole mendukung 256 warna dan truecolor 24-bit dengan sintaks titik koma yang sama seperti xterm
- 2012: xterm dimodifikasi agar juga menerima sintaks titik dua yang lebih dekat ke standar
- 2016: Konsol bawaan Windows 10 mendukung ANSI escape code dan warna 24-bit, tetapi memakai sintaks titik koma
- 2019: Windows Terminal juga mendukung ANSI escape code, tetapi memakai sintaks titik koma
- 2022: Microsoft mengumumkan transisi ekosistem dari subsistem konsol gaya VGA legacy ke emulasi terminal ANSI
- 2022: Konsole mendukung sintaks titik dua yang kompatibel dengan standar
Cara terminfo merepresentasikan kemampuan warna
- terminfo menyediakan basis data kemampuan terminal dan fungsi untuk menghasilkan urutan escape yang sesuai
- Variabel lingkungan
TERMmenunjuk ke record terminfo yang akan digunakan program, dan juga otomatis diteruskan pada koneksissh toemenampilkan daftar record terminfo yang terpasang, daninfocmpdigunakan untuk memeriksa kemampuan record tertentu- Ada tiga kemampuan penting terkait warna
colors: jumlah warna yang didukung terminalsetaf: mengatur warna latar depansetab: mengatur warna latar belakang
setafpadaxterm-256colormengeluarkan urutan berbeda sesuai nomor warna- 0~7: memakai parameter SGR ANSI 30~37
- 8~15: memakai warna cerah nonstandar 90~97
- Di atas itu: memakai palet 256 warna dalam bentuk
38;5;<n>
xterm-directadalah entri terminfo untuk RGB 24-bit yang mengiklankancolorssebagai 16.777.216- Mematikan
ccc, yang menunjukkan bahwa nilai RGB baru tidak dapat diberikan ke indeks warna - Entri terkait perubahan warna saat runtime seperti
initc,oc, danrs1juga tidak ada setafdansetabmemakai bentuk berbasis titik dua38:2::...
- Mematikan
Batasan model warna langsung di terminfo
- Model pemrograman terminfo dan ncurses pada dasarnya berpusat pada entri palet
- Ada N entri palet
- Setiap entri memiliki nilai RGB default
- Model ini mengasumsikan terminal dapat mengubah nilai tersebut
- Terminal
-directmerepresentasikan warna 24-bit seolah-olah memiliki 16.777.216 entri palet- Setiap entri sesuai dengan kubus RGB 8:8:8
- Nilainya tidak dapat diubah
- Demi kompatibilitas, pendekatan
xterm-directmemakai 7 warna biru tergelap untuk kompatibilitas dengan 8 warna ANSI dasar- Hitam dikecualikan
- Ini adalah mekanisme untuk menghindari program lama yang berasumsi soal makna
setaflalu mencetak warna biru tua yang hampir tidak terlihat
- Karena itu, pendekatan
-directdan-256colortidak saling kompatibel- Program harus tahu bahwa 256 warna adalah warna berindeks dan 16.777.216 warna adalah warna langsung
- Ada juga pengecualian untuk menghindari 7 warna biru tergelap
- Dalam masalah terkait termwiz, program mengharapkan palet xterm-256color tetapi sebenarnya mencetak rangkaian biru tua yang sulit dibaca
- Issue tersebut masih terbuka pada saat penulisan, tetapi @quark-zju memasukkan perbaikan sehingga kini termwiz berjalan secara masuk akal
- Intinya lebih dekat ke batasan terminfo daripada terminal itu sendiri
- Terminal yang mendukung warna 24-bit tampaknya juga mendukung palet 256 warna xterm dan perubahan dinamis nilai RGB
- terminfo tidak cukup untuk merepresentasikan ekosistem emulator terminal modern secara akurat dan cepat
Pengaturan TERM dan kompatibilitas titik koma
- Karena banyak program memakai terminfo, nilai
TERMharus diatur dengan benar - Sekalipun ingin menyeragamkan ke sintaks SGR berbasis titik dua, banyak lingkungan masih hanya mendukung sintaks titik koma
- Entri terminfo tersusun dari building block
xterm+direct: sintaks titik dua yang lebih dekat ke standarxterm+indirect: untuk terminal legacy yang hanya mendukung titik koma
- Dari hasil pencarian
xterm+indirect,vscode-directtampak paling cocok- Karena menargetkan terminal Microsoft, dinilai cukup dekat dengan Windows Terminal dan Windows Console
- Tidak semua kemampuannya diaudit, tetapi berfungsi
- Banyak server mungkin tidak memasang entri terminfo
-direct- Di sebagian besar sistem, basis data terminfo default ada dalam paket
ncurses-base - Entri terminal tambahan membutuhkan paket
ncurses-term
- Di sebagian besar sistem, basis data terminfo default ada dalam paket
- Saat tulisan dibuat, ncurses menambahkan entri terminfo
winconsole, tetapi belum mendukung warna 24-bit dan belum dirilis di versi ncurses mana pun
Cara Emacs mendeteksi truecolor
- Emacs mendokumentasikan cara mendeteksi dukungan truecolor di TTY
- Jika menjalankan
(display-color-cells)diM-x eval-expression, Anda dapat memeriksa apakah Emacs mengenali 16.777.216 warna - Dokumentasi Emacs juga membahas batasan terminfo dalam mode
-direct- Terminal dengan kemampuan
RGBdapat memperlakukan#000001hingga#000007seperti warna berindeks, bukan RGB langsung - Ini untuk menjaga kompatibilitas mundur dengan aplikasi yang tidak mengenal direct color
- Jika menjadi masalah, definisi terminal kustom dengan
setb24dansetf24dapat digunakan
- Terminal dengan kemampuan
- Emacs pertama-tama mencari string
setf24dansetb24; jika tidak ada, ia memakaiRGBsebagai kemampuan pengganti - Entri terminfo pada sistem yang diperiksa tidak menyertakan
setf24
Semua lapisan harus cocok di terminal bertumpuk
- Alur kerja umum menumpuk beberapa lapisan terminal
- Membuka emulator terminal grafis di desktop lokal
- Masuk ke mesin jarak jauh atau VM melalui mosh
- Memulai tmux
- Menggunakan tambahan seperti terminal internal Emacs, Asciinema, GNU Screen, dan lain-lain
- Setiap lapisan mengimplementasikan state machine ANSI escape sequence sendiri
- Agar warna 24-bit berfungsi, semua lapisan harus memahami urutan escape yang dihasilkan dari terminfo nilai
TERMdi sisi dalam, lalu meneruskannya secara tepat sesuai terminfo di sisi luar - Karena itu perangkat lunak terkait harus cukup baru
- Ubuntu LTS saat ini menyediakan mosh 1.3, sehingga PPA mosh-dev perlu diaktifkan
TERMdi dalam setiap lapisan juga harus tepat- Di dalam tmux, gunakan
tmux-direct - Karena mosh tidak memiliki terminfo standar, perlu memilih nilai yang cukup mendekati
- Di dalam tmux, gunakan
Pengaturan per lingkungan
-
Emulator terminal grafis
- Sebagian besar terminal menetapkan
TERMdefault yang sesuai atau memungkinkan pengguna menimpanya - Konsole memiliki opsi untuk memilih nilai
TERM
- Sebagian besar terminal menetapkan
-
ssh
sshmeneruskan nilaiTERMke shell baru- Jika host jarak jauh memiliki record terminfo yang sama, pengaturannya relatif sederhana
-
tmux
- Saat menjalankan tmux,
TERMbisa disetel menjadiscreen - Ini diatasi dengan mengganti terminal default di
~/.tmux.conf
set -g default-terminal "tmux-direct"- Bisa juga mempertimbangkan cara yang hanya menetapkan
tmux-directsecara kondisional ketikaTERMluar mendukung warna 24-bit; jika tidak, tetap memakaiscreenatautmux-256color
- Saat menjalankan tmux,
-
mosh
- mosh terbaru mendukung warna 24-bit, tetapi secara internal hanya mengiklankan 8 warna atau 256 warna
- Karena itu pengguna harus menyetel
TERMdengan sesuai - mosh menargetkan kompatibilitas xterm, tetapi hanya mendukung sintaks titik koma pada SGR 38 dan 48
TERM=xterm-directtidak berfungsivscode-directdigunakan sebagai alternatif yang paling dekat denganxterm-direct- Karena tidak ada variabel praktis yang menunjukkan apakah mosh sedang berjalan, skrip
detect-mosh.rsdibuat dan dipanggil dari.bashrc - Caranya adalah memeriksa apakah proses shell merupakan anak dari
mosh-server - Belum dipastikan apakah mengompilasi Rust di jalur login cocok untuk host berkinerja rendah
Hasil akhir dan masalah yang tersisa
- Setelah pengaturan, tema juga ditampilkan dengan warna 24-bit di Emacs dalam tmux dan mosh
- Masalah yang tersisa dapat dirangkum menjadi tiga
- Terminal-terminal belum sepenuhnya sepakat soal sintaks dan kemampuan
- terminfo adalah jalur standar untuk query kemampuan
- terminfo terbatas dan kadang tidak akurat, serta rilis versi barunya tidak sering keluar
Arah setelah terminfo
- Perangkat lunak yang ingin memanfaatkan kemampuan terminal modern secara memadai perlu beranjak dari terminfo
- Arah yang memungkinkan adalah sebagai berikut
- Tetap memakai variabel
TERMyang didukung luas - Tidak hanya bergantung pada terminfo lama dari sistem operasi atau distribusi, melainkan memungkinkan program mengetahui kemampuan terminal secara independen
- Menyimpan informasi emulator terminal sekitar 10 tahun terakhir berdasarkan nama dan versi dalam pustaka yang sering diperbarui
- Tidak memasukkan dukungan untuk terminal perangkat keras yang kini sulit digunakan
- Tetap mendukung file terminfo yang disediakan OS dan format file terminfo, tetapi menyediakan protokol untuk menentukan informasi mana yang paling mutakhir
- Membedakan perbedaan kemampuan berdasarkan versi seperti Konsole 2022 dan Konsole 2023 dengan
TERMVERSIONopsional - Merepresentasikan kemampuan modern seperti warna 24-bit, animasi palet 256 warna, tautan URL, dan protokol grafis Kitty tanpa ambiguitas
- Tetap memakai variabel
- Cara kompatibilitas mundur untuk program legacy juga dimungkinkan
- Program yang dijalankan dari
.bashrcmemakaiTERMdanTERMVERSIONuntuk membuat file terminfo biner di$HOME/.terminfo/ - Membuat kemampuan warna 24-bit yang jelas seperti
RGB,setf24, dansetb24 - Program yang tidak mengenal RGB dianggap mengasumsikan palet 256 warna, sehingga
colors#0x100,initc, danocdipertahankan
- Program yang dijalankan dari
1 komentar
Opini Hacker News
Mengutak-atik terminfo terasa seperti menyinari hieroglif dengan obor yang berkedip-kedip di katakomba yang dalam
Rasanya aneh kalau memikirkan betapa banyak kompleksitas yang masuk ke satu aplikasi terminal, dan itu membuat saya makin berterima kasih kepada para pengembang terminal seperti iTerm dan Kitty
Saya mengumpulkan fungsi-fungsi untuk mengatur warna tab di iTerm+zsh: https://gist.github.com/aclarknexient/84ebe33c1879f921685304...
Dibandingkan cara lama menyambung ke HTTP atau SMTP lewat telnet, teksnya sendiri memang sederhana, tetapi sisi yang menampilkan teks itu adalah aplikasi kompleks yang mendukung segala macam fitur
Sekarang pilihan itu mungkin karena pengguna terminal tersebut pada dasarnya hanya saya sendiri, tetapi terminal modern mendukung subset bersama yang cukup banyak sehingga ini tidak terlalu menyakitkan daripada aplikasi tidak mengenali nilai
TERMyang asing lalu kebingunganTentu saja, kalau tidak sering SSH ke sistem baru, ini bukan masalah yang terlalu penting
Bukan emulator terminal tercepat, tetapi tampilannya jelas paling bagus
Menyesuaikan palet 16 warna di berbagai aplikasi terminal ternyata lebih mudah daripada mencocokkan kode terminal di sisi aplikasi dengan tepat
Saya mengatur warna rxvt-unicode di
~/.Xdefaults, lalu di tema Emacs.elsaya memakai nama warna berbeda tergantung apakah tampilan grafis tersedia, kemudian menerapkannya ke berbagai faceBonusnya, keluaran
lsyang berwarna juga jadi lebih enak dilihat. Palet 16 warna bawaan sering kali terlalu jenuh dan kontrasnya buruk(if (display-graphic-p)adalah kuncinyaEmacs mendukung output grafis sungguhan, dan di X11/Cocoa/Win32 Esc benar-benar berfungsi sebagai Esc; binding Ctrl+Shift atau Cmd, penggunaan beberapa font sekaligus, penampilan gambar, perubahan bentuk kursor, dan sebagainya juga dimungkinkan
Rasanya seperti mesin waktu yang membawa kita ke 1989, 20 tahun setelahnya
Garis merah hanya bisa merah kuat atau mati, dan jika garis intensity ditambahkan, hasilnya menjadi merah 100%
DIRCOLORS,lsjuga sebenarnya mendukung warna 24-bitWarna bawaan terlalu gelap dibanding latar belakang gelap, jadi saya menaikkan luminans semua warna
Sepertinya penulis akan jauh lebih sedikit bersusah payah kalau tahu
export COLORTERM=truecolorIni juga muncul di catatan kaki deteksi truecolor pada dokumentasi Emacs yang ditautkan dan terlihat di screenshot Konsole, tetapi mungkin saja hilang di dalam beberapa lapis multiplexer terminal
Dengan mengatur nilai ini, aplikasi langsung memahami bahwa terminal menginginkan truecolor, sehingga bagian sulitnya bisa dilewati, dan database terminfo juga tidak diperlukan
RGBNamun, tidak semua program menghormati COLORTERM, jadi saya pernah meng-unset
COLORTERMdi.bashrcketikalinux | screen*, dan mengeksporCOLORTERM=truecoloruntuk sisanyaScreen sekarang mendukung warna 24-bit, jadi mungkin itu konfigurasi zaman Ubuntu 18
trampatausshfsDi sisi lain, ini juga karena maintainer ncurses cukup konservatif, sementara pengembang terminal baru ingin bergerak cepat
Pada Emacs yang lebih lama, database terminfo tetap diperlukan
Kebanyakan waktu tidak perlu didefinisikan, tetapi kalau
COLORTERM=truecolortersetel dalam sesi screen, tiba-tiba tampilan menjadi sangat aneh; jika variabel lingkungan itu dihapus, tampilannya kembali normalSaat berinteraksi dengan Emacs, tidak harus selalu memakai terminal
Anda bisa memakai frontend grafis untuk MacOS, Windows, X.org, dan Wayland
Jika toolbar dimatikan, Emacs grafis sangat mirip dengan Emacs yang berjalan di terminal, sehingga orang yang tidak mengenal Emacs bisa mudah salah mengira jendela Emacs grafis di komputer rekan kerja sebagai jendela terminal
Dalam survei pengguna Emacs, 80% menjawab memakai frontend grafis
xterm-mouse-modesaja sudah memberi 80% manfaatnyaDengan menambahkan
mouse,xterm-mouse-mode,mouse-wheel-mode, pengaturan scroll, dan semacamnya, itu cukup layak dipakai, danauto-save-defaultdibiarkannilsesuai kehendak TuhanSemua program terminal dijalankan di buffer shell-mode Emacs grafis, dan hanya program langka yang membutuhkan kontrol layar penuh yang memakai term-mode
Memang bukan yang paling kaya fitur atau paling cepat, tetapi bisa dipindah-pindah seperti buffer lain dan ditangani mulus bersama konten yang sedang diedit
Jika tidak bisa membuka Emacs grafis di komputer remote, saya mengedit file remote dengan tramp, atau menjalankan server Emacs headless lalu terhubung dengan emacsclient grafis
Saya tidak pernah mempertimbangkan bahwa orang mungkin mengira saya menjalankan Emacs di terminal
Emacs grafis jauh lebih baik, tetapi tetap luar biasa bahwa di terminal pun sekitar 90% berperilaku dan terlihat dengan cara yang sama
Rasanya seringan terminal dan bukan seperti VNC
Ada keuntungan seperti font, penggunaan beberapa font sekaligus, menu, mouse, warna, serta beberapa frame/jendela
Jika grafis dijalankan secara lokal dan mengakses sistem remote dengan tramp, pada dasarnya file konfigurasi router berbasis Linux remote yang hanya punya busybox pun bisa diedit dengan segala macam fitur kenyamanan
Saya memakai X11 sesekali sejak era 90-an, tetapi untuk font sampai sekarang pun masih pada level mencari-cari lalu kebetulan menemukan perintah yang jalan dan membiarkannya apa adanya
Performa tampilan sebagian besar program terminal masih terasa jelas lebih cepat daripada konfigurasi X11 yang harus dipakai di lingkungan korporat
Sekarang cukup pasang Emacs terbaru, buka terminal yang mendukung xterm 24-bit, lalu jalankan
emacs -nwJika setelah tema diterapkan tampilannya baik-baik saja, selesai; jika tidak, tambahkan
export COLORTERM=truecolorke.bashrc,.zshrc,.fishrc, atau semacamnya, lalu muat ulang shell atau jalankan baris itu saja dan mulai ulangemacs -nwTulisan ini membuatnya tampak seperti harus menggali terminfo, tetapi biasanya tidak perlu. Mungkin 10 tahun lalu iya, tetapi sekarang tidak
Saya cepat-cepat mengecek ulang di iTerm di MacOS serta Alacritty, Kitty, dan Gnome Terminal di Linux, dan sekarang dukungan xterm 24-bit sudah umum
Hari ini saya baru tahu bahwa ANSI escape sequence standar juga berfungsi di Command Prompt Windows 10
Warna 24-bit juga berfungsi dengan baik
Jika menjalankan
echo ^[[48;2;255;0;0mHello^[[0m, Hello akan dicetak dengan latar merahRGB(255,0,0), dan^[[0mmengembalikan warna seperti semula^[harus dimasukkan denganCTRL-[, bukan mengetik^dan[secara terpisah\x1batau alias\ebersama perintah yang menerima kode escapeMisalnya bisa seperti
echo -e '\e[48;2;255;0;0mHello\e[0m'Namun dalam skrip,
echo -etidak standar danechobiasa pun berbeda pada kasus-kasus tepi, jadi sebaiknya selalu gunakanprintf '\e[48;2;255;0;0mHello\e[0m\n'DEVICE=C:\DOS\ANSI.SYSke fileC:\CONFIG.SYSDibandingkan vim/neovim, hal terbaik dari Emacs adalah adanya dukungan GUI kelas satu, bukan sekadar emulator terminal di dalam jendela
Saya tahu ada gVim dan banyak frontend neovim yang tanggung, tetapi cara eksekusi default Emacs adalah GUI sungguhan, dan saya menyukai hal itu
Terminal juga oke, tetapi terlalu banyak residu historis dan batasan, dan banyak hal yang sudah tidak masuk akal di zaman sekarang
Jika menjalankan Emacs di server remote adalah masalahnya, ada TRAMP dan emacsclient
Menyebalkan ketika aplikasi GUI tidak mengizinkan teks yang sedang ditampilkannya disalin sehingga harus diketik ulang secara manual
https://github.com/neovim/neovim/wiki/Related-projects#gui
Saya sangat menyukai penyuntingan modal dan vim, tetapi sulit menoleransi solusi setengah-setengah yang diberikan editor terminal
Kalau ada platform grafis yang kaya, mengapa tidak memakainya?
Misalnya saya memakai vim hampir hanya untuk mengedit file, sementara alat eksternal seperti
git, linter, formatter, debugger, dan manipulasi pohon file saya pakai dengan kembali ke shellJadi aplikasi utama saya memang sudah emulator terminal, dan dalam alur kerja ini ketiadaan GUI khusus hampir tidak penting
Justru saya ingin Emacs saya terlihat seperti ini: https://imgur.com/a/h0jA1ro
Bukan serius, cuma bercanda. Cool Retro Term hanya saya pakai saat presentasi
Ternyata Emacs saya menjalankan warna 24-bit secara default: https://imgur.com/a/BM5OTxp
Hanya saja penyorotan sintaksnya agak mengganggu
Cool Retro Term itu bagus, dan saya juga ingin mencobanya dalam presentasi
Secara pribadi, terminal retro lain tidak terlihat sebagus ini
Sangat memalukan bahwa standar dikurung di balik harga semahal itu
Orang sampai harus mencari jalan memutar sejauh ini agar tidak membelinya, dan hasil seperti ini pun bisa terjadi
Kalau itu standar, seharusnya bisa diakses. Pada masa ketika hanya tersedia sebagai buku, mungkin masuk akal memungut biaya cetak, tetapi sulit dipercaya PDF seadanya pernah berharga 200 dolar
Saya menulis patch warna 24-bit untuk xterm, tetapi baru hari ini tahu cara menjalankan ncurses dengan
xterm-directSaya sudah memakai pustaka terminal sendiri yang dibuat dengan Lisp, tetapi tetap berguna bisa memiliki jalur alternatif dengan ncurses
Terima kasih kepada Mr. Dickey yang menjawab pertanyaan di Stack Overflow dan kepada Chad yang mengangkat topik ini