2 poin oleh GN⁺ 2024-10-04 | 1 komentar | Bagikan ke WhatsApp
  • Masalah warna terminal lebih berkaitan dengan ketiadaan standar dan perbedaan implementasi daripada sekadar selera, sehingga output perintah yang sama bisa menjadi sulit dibaca tergantung kombinasi terminal, tema, dan aplikasi
  • 16 warna ANSI dasar, 256 warna, dan warna hex 24-bit digunakan bersamaan, tetapi warna seperti apa yang sebenarnya ditampilkan oleh sebuah nomor warna berbeda-beda di tiap emulator terminal
  • Benturan kontras seperti teks biru/latar hitam, kuning terang/latar putih, pemetaan abu-abu di Solarized, atau warna latar ngrok muncul ketika asumsi program tidak sejalan dengan tema pengguna
  • Cara mengatasinya terbagi ke beberapa lapisan, seperti mengatur ulang palet, base16-shell, LS_COLORS, NO_COLOR=true, --color=always, unbuffer, serta dukungan warna 24-bit di Vim/Neovim
  • Fitur minimum contrast di iTerm2, tabby, kitty, Ghostty, dan Windows Terminal bukan solusi sempurna, tetapi mengurangi risiko munculnya output yang tidak terbaca

Warna ANSI dan perbedaan antar-terminal

  • Terminal biasanya memiliki 16 warna ANSI yang terdiri dari hitam, merah, hijau, kuning, biru, magenta, sian, putih, serta versi terang dari masing-masing warna tersebut
  • Program menentukan warna dengan mencetak ANSI escape code
    • Misalnya, nomor warna foreground dapat ditentukan dalam bentuk \033[38;5;{num}m
  • Masalahnya adalah tidak ada standar yang konsisten tentang nomor warna ANSI dipetakan ke warna hex apa dalam praktiknya
    • Setiap emulator terminal memilih warnanya sendiri
    • Bahkan pada tabel warna ANSI escape code di Wikipedia, perbedaan antar-implementasi cukup besar
  • Karena perbedaan ini, warna biru yang digunakan ls untuk direktori bisa tidak terlihat jelas di latar hitam
  • Kombinasi kuning terang dan latar putih juga hampir tidak terbaca, dan masalah serupa bisa muncul pada warna lain seperti hijau terang

Cara mengatur ulang palet warna

  • Jika warna ANSI bawaan tidak sesuai selera atau ada masalah kontras, Anda bisa menanganinya dengan mengatur ulang palet
  • Mengatur di emulator terminal

    • Sebagian besar emulator terminal modern menyediakan fitur untuk mengatur ulang warna
    • Beberapa menyediakan tema bawaan
    • Semakin populer sebuah emulator terminal, biasanya semakin banyak tema yang bisa dipilih
  • Mengatur dengan skrip shell

    • Anda dapat mengubah palet warna emulator terminal dengan mencetak ANSI escape code
    • Skrip Solarized Light dari base16-shell menggunakan konvensi escape code yang berbeda untuk berbagai terminal
    • Skrip mencoba memilih gaya escape code yang sesuai berdasarkan variabel lingkungan TERM
    • Pendekatan skrip shell memudahkan mempertahankan pengaturan warna yang sama meskipun Anda mengganti emulator terminal
    • Namun, tidak semua emulator terminal mendukung perubahan palet dengan cara ini, dan meskipun mendukung, hasilnya bisa sedikit berbeda

256 warna, warna 24-bit, dan tema per alat

  • Banyak terminal mendukung 3 cara penentuan warna
    • 16 warna ANSI
    • 256 warna yang diperluas
    • Warna hex 24-bit seperti #ffea03
  • fd menggunakan escape code seperti ^[[38;5;48m pada outputnya untuk menentukan warna foreground nomor 48
    • Warna ini bisa terlihat seperti warna lime yang tidak ada di tabel warna terminal umum
    • Kontrasnya bisa buruk dengan tabel warna yang sedang digunakan
  • bat juga menggunakan warna dengan cara serupa, tetapi output bawaannya tampak ditujukan agar bekerja di berbagai tema terminal
  • Beberapa alat terminal modern seperti fd, bat, dan delta mendukung tema kustom bebas
    • Tema bawaan dapat berbenturan dengan latar terminal
    • Sebagai gantinya, Anda dapat mengontrol tema output alat secara lebih rinci dibanding hanya memilih dari 16 warna ANSI
  • Dengan bat --theme ansi, bat akan menggunakan warna ANSI yang ditetapkan pada tabel warna terminal umum

Benturan yang muncul di Solarized dan base16

  • Solarized Light dapat menampilkan pemetaan warna bright yang berbeda tergantung implementasinya
  • Tema Solarized Light bawaan iTerm memetakan warna nomor 9–14, yaitu “bright blue”, “bright red”, dan seterusnya, ke nuansa abu-abu seperti desain Solarized asli
    • Jika ls menggunakan warna bright untuk direktori dan file executable, keduanya bisa terlihat abu-abu
  • base16 Solarized Light dapat digunakan sebagai varian yang mempertahankan warna bright sebagai warna sungguhan, bukan abu-abu
  • Perbedaan ini tampaknya merupakan akibat dari desain Solarized asli agar skema warna Vim Solarized dapat menggunakan abu-abu
  • base16-shell mengatur warna 16–21 untuk menyediakan warna tambahan bagi base16-vim
    • Ketika ngrok mencoba menetapkan latar ke warna 16 “black”, jika warna tersebut telah dipetakan ulang menjadi oranye terang, latarnya akan terlihat sangat aneh
    • Benturan seperti ini mudah terjadi ketika program menetapkan warna latar ANSI dan pengguna memetakan ulang warna tersebut ke makna lain

Mengurangi masalah kontras dengan minimum contrast

  • Sebagian terminal memiliki fitur minimum contrast yang otomatis menyesuaikan warna ketika kontras antara foreground dan background tidak memadai
  • iTerm2, tabby, text_fg_override_threshold di kitty, Ghostty, dan Windows Terminal menyediakan fitur ini
  • Jika nilai minimum contrast di iTerm diatur ke 40, output yang sulit dibaca seperti benturan warna latar ngrok juga menjadi lebih mudah dibaca
  • Ketika pengaturan warna keliru atau program berbenturan dengan tema, minimum contrast adalah jaring pengaman praktis untuk mengurangi masalah keterbacaan yang tidak disengaja

TERM, pipe, dan menonaktifkan warna

  • Jika sistem yang diakses lewat SSH tidak mendukung nilai variabel lingkungan TERM lokal, warna mungkin tidak bekerja dengan benar
  • Sistem menggunakan basis data terminfo, dan jika nilai TERM tidak ada di basis data tersebut, sulit untuk mengetahui output warna yang sesuai dengan terminal
  • Meski tidak ada lingkungan yang dapat direproduksi, sebuah jawaban Stack Overflow menyarankan bentuk seperti TERM=xterm ssh alih-alih ssh
  • Saat perintah dihubungkan dengan pipe, warna kadang dinonaktifkan
    • fd | less dapat menghasilkan output tanpa warna
    • Secara umum, ketika diteruskan ke alat seperti grep, keluaran teks polos tanpa escape code memang berguna
  • Jika ingin mempertahankan warna, Anda dapat menggunakan unbuffer fd | less -r
    • unbuffer membuka tty agar perintah menganggap dirinya menulis ke TTY
    • Ini juga mengatasi masalah output program yang di-buffer saat menulis ke pipe
  • Beberapa perintah, seperti fd, dapat selalu mencetak warna dengan flag --color=always

Mematikan atau mengubah warna ls

  • Sebagian pengguna tidak menginginkan output berwarna dari ls
    • Karena warna biru sulit dibaca di latar hitam
    • Karena tidak ingin menyesuaikan tabel warna terminal
    • Atau karena warna itu sendiri mungkin tidak membantu
  • Ada beberapa opsi
    • Warna dapat dimatikan dengan ls --color=never
    • Warna yang digunakan ls dapat dikustomisasi dengan variabel lingkungan LS_COLORS
    • Beberapa program mendukung NO_COLOR=true, dan daftarnya tersedia di no-color.org
  • Sebagai contoh, pengaturan seperti LS_COLORS="fi=0:di=0:ln=0:pi=0:so=0:bd=0:cd=0:or=0:ex=0" ls dapat menyetel gaya warna berbagai jenis file menjadi 0

Perubahan di Vim dan Neovim

  • Pengaturan warna Vim dulu sering bermasalah karena tabel warna terminal dan skema warna Vim harus diselaraskan
  • Ada 2 cara utama mengatur skema warna Vim di dalam terminal
    • Memetakan kelas warna Vim ke nomor warna ANSI
    • Skema warna menggunakan langsung warna hex 24-bit seperti #faea99
  • Dua puluh tahun lalu, terminal yang mendukung warna hex 24-bit belum umum, dan Vim juga belum mendukung penggunaan warna 24-bit di terminal
  • Vim menambahkan dukungan warna 24-bit pada 2016
  • Neovim 0.10 dirilis pada Mei 2024, dan pada terminal yang mendukung warna 24-bit, termguicolors aktif secara default
  • Jika pada 2024 Anda tidak berencana menggunakan terminal yang tidak mendukung warna 24-bit, beban untuk wajib menyinkronkan tabel warna terminal dan skema warna Vim pun hilang
  • Perubahan ini mengurangi kebutuhan base16-shell untuk mengatur warna 16–21 secara khusus demi integrasi Vim
    • Jika bagian itu dihapus, benturan seperti latar oranye pada ngrok dapat dihindari

Pengalaman menggunakan base16 dan batasannya

  • Menggunakan base16-shell bersama base16-vim memudahkan penyelarasan warna terminal dan Vim
  • Pengaturannya dapat dilakukan dengan menambahkan beberapa baris ke konfigurasi fish dan beberapa baris ke .vimrc
  • base16 tidak cocok untuk semua orang
    • Jumlah tema bawaan terbatas dan mungkin tidak ada tema yang disukai
    • Tema Solarized base16 menyetel warna ANSI bright sama dengan warna biasa, dan ini dapat bermasalah untuk kasus penggunaan yang membutuhkan warna bright berbeda
    • Cara mengatur warna 16–21 untuk menyediakan lebih banyak warna bagi base16-vim mungkin tidak diperlukan di lingkungan yang hanya menggunakan terminal dengan dukungan warna 24-bit
    • Pengaturan warna 16–21 dapat menimbulkan masalah pada terminal yang tidak mendukung 256 warna, seperti Linux framebuffer terminal
  • Ada fork komunitas base16 bernama tinted-theming

Alat skema warna dan tema populer

Masalah yang masih tersisa

  • Titik pertemuan beberapa program, seperti kombinasi tmux, SSH, dan Vim, dapat memunculkan masalah warna tambahan
  • Memilih skema warna yang bagus pun sulit
    • Pengguna dengan buta warna atau gangguan persepsi warna dapat kesulitan menemukan skema warna yang sesuai
    • Jika warna latar terlalu mirip dengan warna kursor atau area pilihan, posisi bisa sulit ditemukan
    • Sulit menemukan warna yang bekerja dengan baik di semua program, dan benturan seperti kasus ngrok dapat terjadi
  • Program yang mengharapkan tampilan “klasik” tertentu berbasis warna ANSI bawaan, seperti Nethack atau Midnight Commander, dapat terasa asing pada tema seperti Solarized
  • Salah satu cara menanganinya adalah mengubah palet ANSI tepat sebelum menjalankan program
    • Misalnya, sebelum menjalankan Nethack, warna kuning dapat dipetakan ulang menjadi kuning yang lebih terang
  • Bagi pengguna yang hanya ingin warna bekerja dengan baik, banyaknya pengaturan manual terasa memberatkan, sehingga nilai bawaan yang masuk akal dan fitur seperti minimum contrast menjadi penting

1 komentar

 
GN⁺ 2024-10-04
Komentar Hacker News
  • Saat mencoba membuat tema warna terang yang benar-benar baik untuk sistem, saya mengalami semua masalah ini dan lebih banyak lagi; ada dua hal yang khususnya menarik
    Kalau dipikir lagi, memang wajar, tetapi saya terkejut bahwa tema terang tampak berubah jauh lebih halus dibanding tema gelap ketika layarnya berbeda. Pengaturan hardware dan software memang menimbulkan perbedaan keluaran warna, tetapi perubahan yang berpusat pada area terang dipersepsikan jauh lebih besar daripada perubahan pada area gelap
    Selain itu, kadang kita harus turun ke lingkungan dengan dukungan font dan warna mencolok yang terbatas, seperti konsol Linux atau BSD. Dalam kondisi itu, fd atau exa/lsd/whatever bisa menjadi tidak nyaman atau bahkan tidak bisa dipakai, apalagi jika yang terakhir dipetakan ke ls. Setelah lama mengutak-atik, saya menyiapkan fbterm agar bisa memakai fungsi terminal yang cukup layak tanpa X, tetapi fbterm juga punya masalahnya sendiri. Saat mengatur skema warna Vim, Anda perlu menyiapkan tema alternatif untuk konsol yang fiturnya minim, atau banyak berlatih mengetik perintah Vim tanpa melihatnya :D
    Edit: bukan untuk pekerjaan serius, tetapi ini layar fbterm yang diberi styling untuk menunjukkan apa yang bisa dilakukan tanpa X: https://i.imgur.com/RbDRgtD.png

    • Tidak mengejutkan bahwa tema terang tampak berbeda lebih halus dari layar ke layar. Saya membuat cetakan hitam-putih analog dengan film, dan sudah diketahui bahwa mata manusia jauh lebih peka terhadap perubahan tonal kecil di area terang pada cetakan dibanding area gelap
      Karena itu, saat menyesuaikan eksposur dan kontras yang tepat, saya menghabiskan cukup banyak waktu untuk mengatur highlight agar terlihat “pas”. Saya tidak membuat cetakan digital, tetapi sepertinya prinsip yang sama berlaku
    • Biasanya kita semestinya bisa mengandalkan variabel TERM yang dikonfigurasi dengan benar, dan utilitas command line juga semestinya menghormati kemampuan yang dapat diketahui dari variabel TERM
      Sayangnya, framework alat command line “modern” yang sering ditulis dengan JavaScript cenderung mengabaikan hal ini
      https://www.gnu.org/software/gettext/manual/html_node/The-TE...
    • Baru-baru ini di grafik Excel saya mencoba menampilkan banyak seri data dengan warna yang berbeda-beda, dan pilihan terbaik untuk membedakan banyak warna dengan mudah adalah warna pelangi spektrum monokromatik di atas latar hitam
      Ada juga pengaturan yang memberi efek “cahaya menyebar” lemah dengan warna yang sama pada titik data, sehingga terlihat seperti titik yang menyala. Dari sudut pandang saturasi warna, yaitu dari rasio signal-to-noise di seluruh spektrum, masuk akal bahwa latar hitam lebih baik
      Sekitar 10 warna berbeda bisa dipakai hampir tanpa masalah. Selain itu, warna kuning berada di antara merah dan hijau, oranye di antara merah dan kuning, sehingga ada keuntungan untuk menyampaikan informasi urutan/jarak, yang membuat subdivisi dan penafsiran seberapa dekat dua warna menjadi lebih mudah
    • Meski ada font keren dan tema warna yang enak dilihat, semuanya bisa rusak hanya karena satu latar belakang yang membuat beberapa huruf sulit dibaca
  • Sebenarnya menurut saya ini tidak sesulit itu
    Langkah 1: sebagian besar emulator terminal punya palet warna bawaan yang buruk, jadi tinggal diganti. Secara pribadi saya suka Solarized, terutama tema gelapnya, tetapi tema terangnya juga oke. Kalaupun bukan Solarized, ada banyak tema yang membuat warna apa pun tetap terbaca di atas latar default
    Langkah 2: sebaiknya hindari alat baris perintah yang secara default memakai escape sequence warna 8-bit atau 24-bit. Ini mungkin kontroversial, tetapi secara pribadi saya menganggapnya tidak ramah pengguna. Saya sudah memilih palet warna terminal terbaik yang sesuai dengan kebutuhan keterbacaan saya; pengembang yang menganggap dirinya semacam desainer palsu lalu menimpanya itu tidak membantu. Boleh saja menyediakan opsi untuk mengaktifkan tema di dalam alat, tetapi itu harus bersifat opsional, bukan nilai default
    Sebagai orang yang menghabiskan sebagian besar hidup di terminal, hanya dengan mengikuti dua aturan ini saja kita bisa membuat lingkungan terminal yang konsisten dan mudah dibaca dengan hampir tanpa beban konfigurasi. Masalah sebenarnya adalah kita terlalu membiarkan pengembang memakai kode escape warna 8-bit dan 24-bit

    • Ini berkaitan dengan masalah default yang baik. Jika pengguna harus mengonfigurasi, mereka terlebih dahulu harus tahu bahwa itu bisa dikonfigurasi dan benar-benar melakukan konfigurasinya. Itu hambatan besar, dan hanya sangat sedikit pengguna yang melakukannya
      Setelah bertahun-tahun, saya sampai pada kesimpulan bahwa fitur baru harus disodorkan ke depan mata pengguna, dan default yang baik harus didorong kuat. Kalau tidak, fitur hampir tidak akan dipakai
      Warna 8-bit dan 24-bit sudah merupakan fitur yang dipakai secara opsional dan juga bisa dikonfigurasi. Pada program terminal yang bekerja dengan baik, variabel lingkungan TERM dan COLORTERM menentukan apakah warna seperti itu akan digunakan
    • Khususnya Solarized Dark tidak terlalu cocok untuk penggunaan terminal. Sebab pembuatnya menetapkan “bright black” sebagai warna yang hampir sama dengan latar belakang
      Banyak aplikasi mengharapkan teks “bright black” terlihat di atas latar belakang. Ada banyak contohnya di sini: https://github.com/altercation/solarized/issues/220
      Hampir semua palet warna lain menampilkan “bright black” sebagai abu-abu yang dapat dibaca di atas latar hitam
    • Walaupun ada tema yang membuat warna apa pun terbaca di atas latar default, ada aplikasi yang menetapkan warna teks dan latar sekaligus
      Misalnya pamix menetapkan latarnya menjadi hitam, dan status bar tmux atau ngrok juga serupa. Lalu kita jadi masuk ke lubang kelinci untuk menanganinya
    • Kita harus bertanya lebih dulu, “cara penanganan terbaik itu apa?”, dan di sini perlu mendefinisikan apa itu baik. Secara pribadi saya lebih suka prinsip bahwa kustomisasi pengguna harus berada di satu tempat, dan dampaknya terhadap program harus seminimal mungkin, misalnya dari sisi jumlah baris kode
      Keduanya mengisyaratkan bahwa solusinya harus ada di terminal. Program terminal harus lebih dulu punya warna default yang masuk akal; biru harus bisa dikenali sebagai biru, dan gangguan penglihatan warna yang umum juga perlu dipertimbangkan. Misalnya merah murni di atas latar hitam sulit dibaca, jadi sebaiknya jangan hanya memakai ff0000, melainkan campurkan sedikit warna lain
      Begitu terminal punya default yang masuk akal, program baris perintah cukup memakai 16 warna standar. Upaya memakai warna 24-bit di sini lebih mirip pernyataan bahwa “saya menyerah mengharapkan sisi terminal menyediakan kewajaran” atau “saya yang paling tahu”, dan akhirnya pengguna harus mengonfigurasi N program satu per satu. Menurut saya, pilihan terbaik adalah tidak mendefinisikan tema di dalam aplikasi baris perintah
      Saya melihat situs web dan font dengan cara yang mirip. Konten sebaiknya disediakan sebagai HTML agar pengguna bisa melihatnya dengan cara yang mereka inginkan, dan tata letak halaman juga sebaiknya mengalir, bukan dikunci seperti layout majalah
      Pada perangkat lunak desktop juga serupa. Kompositor Wayland semestinya mengingat posisi jendela. Pada X, setiap program menyimpan dan memulihkan posisi jendelanya sendiri; itu konyol. Wayland mengatakan bahwa mengetahui informasi lingkungan adalah masalah keamanan, dan saya setuju, tetapi kalau begitu ingatan itu menjadi urusan lingkungan desktop. Kode tersebut juga bisa dihapus dari semua aplikasi
      Pertanyaan “di bagian mana dari tumpukan perangkat lunak hal ini harus ditangani?” berulang di banyak bidang. Saat memilih di mana menaruhnya, kita harus lebih dulu menjawab apa tujuannya, dan jawaban saya selalu condong ke kesederhanaan dan kemudahan pemeliharaan
    • Saya penasaran seberapa sulit sebenarnya menghindari alat baris perintah yang secara default memakai escape sequence warna 8-bit atau 24-bit
      Tulisan Julia juga menyebut ide ini, tetapi tidak sampai membahas kesulitan konkretnya. Terkait itu, saya juga penasaran apakah palet warna terminal hanya menangani 16 warna dasar, atau juga menyentuh area RGB dan grayscale. Warna 8-bit dan 16-bit pun semestinya bisa disesuaikan dengan kebutuhan keterbacaan
  • Kalau berada di posisi memilih warna, ada baiknya memeriksanya dengan algoritma APCA (Advanced Perception of Colour) yang baru
    APCA rencananya akan menggantikan metode kontras x:y yang ada saat ini di WCAG 3.0, meski mungkin masih butuh beberapa tahun lagi. Katanya algoritma ini mempertimbangkan ukuran font, ketebalan, latar depan/latar belakang, bahkan pencahayaan dan lingkungan sekitar, serta penggunaan yang dimaksudkan
    Sepertinya cukup bagus kalau emulator terminal bisa memakai sensor cahaya perangkat untuk mengoptimalkan kontras sesuai faktor lingkungan

    • Palet warna terminal yang saya pakai sekarang saya sesuaikan sendiri dengan cara seperti ini. Sebab saya tidak bisa menemukan satu pun tema siap pakai yang memenuhi kebutuhan kontras pribadi saya untuk semua warna ANSI
  • Ada juga orang-orang benar-benar “gila” yang ingin mematikan warna sama sekali[0]. Aku sendiri juga ingin mencobanya, tapi aku juga suka warna yang cantik
    [0] https://no-color.org/

    • :syntax off adalah satu-satunya konfigurasi Vim-ku. Sebab set warna terminal dirancang oleh programmer komputer, insinyur listrik, dan orang-orang yang tidak tahu bahwa hal penting dalam warna bukanlah warna itu sendiri, melainkan kecerahan
    • Setelah terbiasa dengan terminal monokrom, kamu mulai merasa sebagian besar warna itu mengganggu dan merebut perhatian
      Aku penasaran apakah ada korelasi antara orang yang tidak menginginkan warna di terminal dan orang yang memakai pemblokir iklan yang kuat di browser atau sering memakai mode baca
    • Sekuens warna tidak portabel dan dikenal menimbulkan masalah. Misalnya, ada kasus sesi Jupyter mati karena laporan pytest yang berwarna
      Saat output dialirkan lewat pipe, warna sama sekali tidak memberi keuntungan dan hanya menjadi liabilitas. Intinya lebih ke soal adanya pilihan
    • Aku juga ada di kubu itu. Terutama saat coding, menurutku hampir semua pewarnaan itu mengganggu dan kontraproduktif
      Ini makin parah kalau bolak-balik antara Linux dan Windows. Penggunaan warna default di banyak tool nyaris tidak bisa dipakai, atau benar-benar membuatnya tidak bisa dipakai
      Beberapa tool menyediakan opsi --color=never, dan cukup banyak tool menghormati NO_COLOR. Sayangnya tidak semuanya, dan bahkan tool yang melakukannya kadang berasumsi mode itu hanya akan dipakai untuk pipeline atau antarmuka pemrograman. Akibatnya muncul segala macam perilaku yang menyebalkan
    • Aku juga makin menuju ke arah itu. Setelah melihat zenbones, akhirnya aku menetap di https://github.com/savq/melange-nvim
      Ia punya konsep palet warna yang konsisten berupa temperatur warna yang bermakna, dan condong ke sisi hangat agar mata tidak terlalu lelah menatap terlalu banyak nuansa biru. Palet warna alacritty juga disertakan
  • Sejak lama aku ingin memakai tema terang di terminal, tapi selalu menyerah karena terlalu banyak program memakai warna kustom non-ANSI yang dioptimalkan untuk latar terminal gelap
    Sebagian program bisa dikonfigurasi warnanya, tetapi mengatur semua program satu per satu terasa terlalu merepotkan. Jadi sekarang aku memakai latar terminal gelap, tetapi memilih sendiri tema ANSI yang semua warnanya punya rasio kontras yang cukup menurut standarku dan juga lolos pemeriksaan kontras APCA/WCAG 3. Aku puas :)

    • Bagi orang dengan aberasi visual tingkat tinggi, mode gelap sejak awal memang bukan pilihan. Sebaliknya, bagi sebagian orang dengan katarak, mode terang bisa jadi begitu
      Dengan sekuens kontrol OSC 11, program bisa mengetahui warna latar, tetapi hampir tidak ada program yang peduli. Biasanya, begitu seseorang merasa pesan peringatan kuning terlihat keren, selesai sudah
      Ini juga mengarah ke masalah lain. Ada terminal populer yang tidak kompatibel dengan xterm tetapi secara default menetapkan TERM=xterm256-color
      Edit: baru saja menemukan xtermcontrol, yang bisa mengabstraksikan pemeriksaan latar di skrip dan tersedia di semua package manager utama
    • Untuk beberapa waktu, demi menghindari neraka konfigurasi ini, aku berpura-pura memakai terminal 16 warna tanpa dukungan 256 warna. Karena menurutku tidak ada warna lebih baik daripada warna yang buruk, aku juga mencoba https://no-color.org/
      Belakangan ini aku menyerah dan mengatur sebagian besar aplikasi secara manual agar memakai warna ANSI. Misalnya, fzf punya switch command-line untuk itu. Aku hanya membiarkan Vim dan Emacs sebagai aplikasi non-ANSI, lalu mengaturnya agar cocok dengan palet warna yang kupakai di terminal lain. Kalau mau, bisa melangkah lebih jauh dengan sesuatu seperti vim-dim
    • Banyak terminal, misalnya konsole di trinity/tde3, memungkinkan kita menyesuaikan warna dasar secara langsung, dan itu membantu
    • Di macOS, iTerm dan program-program yang kupakai, misalnya neovim, tidak bermasalah, dan bahkan dalam kondisi default terlihat baik-baik saja
  • Emacs punya frame-background-mode[0] yang agak sulit ditemukan, yang pada praktiknya bernilai salah satu dari light atau dark
    Saat bertanya-tanya mengapa Emacs memilih warna aneh untuk suatu item, biasanya penyebabnya sering kali frame-background-mode yang salah
    [0]https://doc.endlessparentheses.com/Var/frame-background-mode...

  • Selama hampir 10 tahun aku memakai palet warna FlatUI yang sedikit dimodifikasi, dan hampir tidak pernah ada situasi yang benar-benar menjadi masalah
    File png: https://drive.google.com/file/d/1mkMESeGf7MNdKa-rPDx7Yf9BDit...
    Tautan imgur: https://imgur.com/a/flatui-7mqVZAY
    Dasar: https://flatuicolors.com/palette/defo

    • Terlihat mirip dengan tema One Dark yang seingatku berasal dari editor Atom
      Aku juga sudah memakai temaku sendiri hampir 10 tahun. Berjalan baik di iTerm, vim, Emacs, vscode, dan lainnya
  • Saya sudah lama memakai Apple Terminal, dan dulu ada kumpulan skema warna yang lumayan bernama “Terminal Fructose”, jadi saya sering memakai warna latar berbeda untuk tiap jenis pekerjaan. Pada suatu titik Apple juga memasukkannya sebagai tema bawaan
    Namun Apple membiarkan dukungan Terminal terbengkalai; tidak mendukung lebih dari 256 warna dan juga kekurangan fitur yang lebih modern. Ia juga tidak terlalu cocok dengan konfigurasi Neovim+LazyVim
    Saya sempat bolak-balik mencoba iTerm2, Kitty, Alacritty, dan Wezterm untuk mencari terminal yang lebih baik. Semuanya memang lebih modern, tetapi tampaknya tidak punya opsi dasar “New Window with Profile ...” untuk membuka jendela dengan beberapa warna latar/tema secara cepat. Setidaknya tidak tanpa sedikit utak-atik
    Sekarang saya menetap di Wezterm, terutama karena ia juga berjalan di Windows dan konfigurasi wezterm.lua bisa dibagikan. Sebagai catatan, Windows Terminal juga sebenarnya cukup bagus. Meski begitu, untuk pekerjaan cepat—misalnya memakai python3 sebagai REPL untuk menghitung atau menguji heksadesimal/biner—saya masih sering menjalankan Apple Terminal

    • iTerm punya persis fitur itu
    • Aneh. Saya sangat cepat meninggalkan Apple Terminal dan pindah ke iTerm2 justru karena dukungan “new tab with profile”
    • Ada dua alasan saya terus memakai Wezterm. Konfigurasi mudah dibagikan di berbagai platform, dan bahasa konfigurasinya adalah Lua
      Memang ada beberapa fitur iTerm2 yang saya rindukan, sebagian besar terkait mouse. Selain itu, saya mengaturnya sesuai keinginan dalam beberapa malam, dan setelah membuat cmd-n membuka jendela baru di direktori default, bukan direktori saat ini, saya cukup puas memakainya
    • Jika ingin menambahkan “New Window with Profile...” ke WezTerm, sepertinya bisa diakali lewat launch_menu [1] untuk memulai shell lain atau augment-command-palette [2] untuk menambahkan item ke command palette
      [1] https://wezfurlong.org/wezterm/config/lua/config/launch_menu...
      [2] https://wezfurlong.org/wezterm/config/lua/window-events/augm...
      Benar, perlu sedikit utak-atik. Namun memprogram fitur yang sangat spesifik persis seperti yang diinginkan adalah puncak dari pengalaman khas WezTerm
    • Konsole, terminal KDE, mendukung ini. Bisa lewat menu atau dengan menekan lama ikon tab baru. Setahu saya juga bisa dipakai di MacOS
  • Bukan hanya terminal; pada papan neon atau papan LED pun, warna biru adalah yang paling berat bagi mata pada malam hari
    Dari jauh selalu terlihat buram dan tidak fokus. Ketika melihat perusahaan besar memasang papan raksasa dengan lampu biru, rasanya heran mereka menghabiskan banyak uang tanpa menyadari bahwa orang-orang tidak bisa membacanya

  • Di laptop saya, saya mengatur mode terang/gelap berganti otomatis mengikuti siklus siang hari, dan jumlah aplikasi keluaran berwarna yang rusak saat beralih ke mode latar terang dengan teks gelap ternyata mengejutkan
    Jika membuat tool command-line dan memang harus memakai warna, sebaiknya gunakan hanya 16 warna ANSI, atau biarkan pengguna akhir mengubah skema warnanya