2 puan yazan GN⁺ 2024-01-31 | 1 yorum | WhatsApp'ta paylaş

Emacs'i güzelleştirmek istedim — terminalde 24 bit renk kullanımı

  • Emacs topluluğu aktif durumda ve LSP aracılığıyla modern otomatik tamamlama ile satır içi tür denetimi özellikleri sunuyor.
  • Grafik ortamında Emacs otomatik olarak 24 bit renkleri destekler, ancak terminalde durum böyle değildir.

ANSI kaçış kodları

  • İlk donanım terminalleri birbiriyle uyumlu olmayan denetim kodları sunuyordu ve ANSI bunu standartlaştırdı.
  • SGR (Select Graphics Rendition) aracılığıyla çeşitli karakter görüntüleme özellikleri ayarlanabilir.

3, 4 ve 8 bit renkler

  • Renkler ilk eklendiğinde 8 temel renk vardı; daha sonra parlak renkler eklenerek toplam 16 renge çıkıldı.
  • 1999'da Todd Larason, xterm'e 256 renk desteği ekleyen bir yama sundu.

24 bit renk desteği nereden geldi?

  • 8 bit ve 24 bit renklerin uyumlu terminallere nasıl gönderileceği iyi belgelenmiştir.
  • 70'lerdeki ANSI standartlaştırma süreci ve 90'lardaki ISO 8613-6 (ITU T.416) ile 38 ve 48, genişletilmiş ön plan ve arka plan renk modları olarak tanımlandı.

Terminfo

  • Terminfo, terminal yetenekleri için bir veritabanı sağlar ve TERM ortam değişkeni programlara hangi terminfo kaydını kullanacaklarını söyler.
  • xterm-256color ve xterm-direct, sırasıyla 256 renk ve RGB renklerini destekler.

TERM ayarı: noktalı virgül sorunu

  • Birçok terminal yalnızca noktalı virgüllü sözdizimini desteklediği için TERM değerinin doğru ayarlandığından emin olunmalıdır.

Emacs ayarları

  • Emacs, truecolor desteğinin nasıl algılanacağını belgelendirir.
  • RGB, Emacs'in yerleşik renk özelliğidir ve önce setf24 ile setb24 dizelerini arar.

İç içe geçmiş terminaller

  • Yaygın iş akışlarında birden fazla terminal iç içe kullanılır.
  • Tüm katmanların 24 bit renkleri anlaması ve bunları doğru şekilde dönüştürmesi gerekir.

Grafik terminal emülatörü

  • Çoğu terminal, TERM için makul bir varsayılan değer ayarlar veya bunun üzerine yazılmasına izin verir.

ssh

  • ssh, TERM değerini uzak ana makineye iletir.

tmux

  • tmux içinde tmux-direct gibi bir TERM değeri ayarlanmalıdır.

GN⁺ görüşü

  • Bu yazıdaki en önemli nokta, terminal ortamında da yüksek kaliteli renkler kullanmak isteyen kullanıcı talebi ve bunu mümkün kılan teknik gelişmelerdir.
  • 24 bit renk desteği, geliştiricilerin daha iyi bir kullanıcı deneyimi sunmasını sağlayan önemli bir özelliktir; özellikle kod düzenleyicileri gibi araçlarda görsel kullanım rahatlığını büyük ölçüde artırır.
  • Bu yazı, terminal ve Emacs kullanıcıları için ilgi çekici ve faydalı olacaktır; ayrıca terminal tabanlı çalışma ortamlarında da üstün bir görsel deneyim arayan kullanıcılara yararlı bilgiler sunar.

1 yorum

 
GN⁺ 2024-01-31
Hacker News görüşleri
  • Terminal uygulamalarının karmaşıklığı karşısında şaşkınlık ifade ediyor ve iTerm ile Kitty gibi terminal uygulamalarının geliştiricilerine teşekkür ediyor.

    • iTerm ve zsh için sekme rengi ayarlama işlevlerini bir araya getiren bir bağlantı paylaşıyor.
    • terminfo ile eski usul telnet üzerinden HTTP veya SMTP bağlantı yöntemlerini karşılaştırarak, metin tabanlı arayüzlerin karmaşıklığına dikkat çekiyor.
  • Kişisel olarak, her terminal uygulamasında 16 renk paletini ayarlamanın, uygulama tarafındaki terminal kodunu tam olarak doğru hale getirmekten daha kolay olduğunu düşünüyor.

    • .Xdefaults dosyasında ve özel tema .el dosyalarında renkleri ayarlayan kod örnekleri sunuyor.
    • Bunun sayesinde ls çıktısı gibi şeylerin renklerinin de daha iyi hale geldiğini belirtiyor.
  • Yazarın export COLORTERM=truecolor ayarını bilseydi daha iyi bir deneyim yaşayacağını tahmin ediyor.

    • Bunun Emacs belgelerindeki bir dipnotta truecolor desteğinin algılanmasından bahsedildiğini ve Konsole ekran görüntüsünde de göründüğünü, ancak terminal multiplexer'ın birden fazla katmanı arasında kolayca gözden kaçabileceğini belirtiyor.
    • Bu ayarla karmaşık yapılandırmaları atlayıp doğrudan uygulamaya true color istediğini anlatan aşamaya geçilebileceğini açıklıyor.
  • Emacs kullanırken mutlaka terminal kullanmak gerekmediğini; MacOS, Windows, X.org veya Wayland için "grafik" frontend'lerin kullanılabileceğini vurguluyor.

    • Grafik Emacs'ın terminalde çalışıyormuş gibi göründüğünü, ancak gerçekte görüntüleyici dahil çeşitli özelliklere sahip olduğunu belirtiyor.
    • Emacs kullanıcı anketinde katılımcıların %80'inin grafik frontend kullandığını söylediğini aktarıyor.
  • Bilişimin, 1970'lerin terminal emülatörleriyle editörlerini ve işletim sistemi sürümlerini kullanan üretim sistemleri yüzünden yönünü kaybetmiş olabileceğine dikkat çekiyor.

    • Bilgisayarlar milyonlarca kat daha güçlü hale gelmiş olsa da, işlerin hâlâ yarım yüzyıl önceki gibi yapılmasını eleştiriyor.
  • Emacs'ı Cool Retro Term ile daha havalı göstermek istediğini şaka yollu ifade ediyor.

    • Gerçekte Cool Retro Term'i yalnızca sunumlar için kullandığını söylüyor.
    • Kendi Emacs'ının kutudan çıktığı gibi 24 bit renk desteğine sahip olduğunu fark ettiğini ve sözdizimi vurgulamasını biraz sinir bozucu bulduğunu belirtiyor.
  • Windows 10 komut isteminde standart ANSI escape sequence'ların çalıştığını ve 24 bit rengin de sorunsuz çalıştığını keşfediyor.

    • Kırmızı arka plan üzerinde "Hello" yazdıran bir örnek kod veriyor.
  • Emacs'ın vim/neovim ile karşılaştırıldığında GUI desteğinin birinci sınıf vatandaş gibi ele alınmasının en iyi yanı olduğunu söylüyor.

    • gVim ve tamamlanmamış sayısız neovim frontend'i olduğunu, ancak Emacs'ın varsayılan olarak gerçek bir GUI üzerinden çalışmasını tercih ettiğini belirtiyor.
    • Terminallerde, günümüzde gereksiz olan çok fazla tarihsel kalıntı ve kısıtlama bulunduğuna dikkat çekiyor.
    • Uzak bir sunucuda Emacs çalıştırma sorunu varsa TRAMP ve emacsclient'ın kullanılabileceğini (TCP üzerinden çalışıp çalışmadığından emin olmadan) ekliyor.
  • Renkleri minimum düzeyde kullanan bir Emacs yapılandırması kullandığı için bu özelliği kullanmayacağını söylerken, metni okumaktan büyük keyif aldığını ifade ediyor.

    • tmux'un parlak yeşiline ve Emacs renklerinin paslı kırmızı-kahverengisine alıştığını belirtiyor.
  • Standardın yüksek ücretlerin arkasına saklanmasının ve insanların satın almadan bu kadar dolambaçlı yollara başvurmak zorunda kalmasının gerçekten utanç verici olduğunu eleştiriyor.

    • Standartların kamuya açık şekilde erişilebilir olması gerektiğini, geçmişte baskı maliyeti almak makul sayılabilse de bir PDF için 200 dolar istenmesinin inanılmaz olduğunu vurguluyor.