2 पॉइंट द्वारा GN⁺ 2024-01-31 | 1 टिप्पणियां | WhatsApp पर शेयर करें

मैं Emacs को सुंदर बनाना चाहता था — टर्मिनल में 24-बिट रंगों का उपयोग

  • Emacs कम्युनिटी सक्रिय है, और LSP के माध्यम से आधुनिक auto-completion तथा inline type checking फीचर देती है।
  • ग्राफिकल वातावरण में Emacs अपने-आप 24-बिट रंगों को सपोर्ट करता है, लेकिन टर्मिनल में ऐसा नहीं होता।

ANSI escape code

  • शुरुआती हार्डवेयर टर्मिनल एक-दूसरे से असंगत control code देते थे, और ANSI ने इन्हें मानकीकृत किया।
  • SGR(Select Graphics Rendition) के जरिए विभिन्न character display attributes सेट किए जा सकते हैं।

3-, 4-, 8-बिट रंग

  • जब रंग पेश किए गए, तब 8 बुनियादी रंग थे, और बाद में bright colors जोड़कर कुल 16 रंग हो गए।
  • 1999 में Todd Larason ने xterm में 256 रंगों के समर्थन के लिए एक patch जोड़ा।

24-बिट रंग समर्थन कहाँ से आया?

  • 8-बिट और 24-बिट रंगों को compatible terminal तक भेजने का तरीका अच्छी तरह दस्तावेजीकृत है।
  • 70 के दशक के ANSI मानकीकरण और 90 के दशक के ISO 8613-6 (ITU T.416) के माध्यम से 38 और 48 को विस्तारित foreground और background color mode के रूप में परिभाषित किया गया।

Terminfo

  • Terminfo टर्मिनल capabilities का डेटाबेस देता है, और TERM environment variable के जरिए प्रोग्राम को बताया जाता है कि कौन-सा terminfo record इस्तेमाल करना है।
  • xterm-256color और xterm-direct क्रमशः 256 रंग और RGB रंगों का समर्थन करते हैं।

TERM सेटिंग: सेमीकोलन समस्या

  • कई टर्मिनल केवल semicolon syntax को सपोर्ट करते हैं, इसलिए यह सुनिश्चित करना चाहिए कि TERM सही ढंग से सेट है।

Emacs कॉन्फ़िगरेशन

  • Emacs truecolor समर्थन का पता लगाने के तरीके को दस्तावेजीकृत करता है।
  • RGB Emacs की बुनियादी color functionality है, और यह पहले setf24 तथा setb24 strings को ढूँढता है।

nested terminal

  • सामान्य workflow में कई terminal को nested रूप में इस्तेमाल किया जाता है।
  • सभी layers को 24-बिट रंगों को समझना और सही तरीके से convert करना चाहिए।

graphical terminal emulator

  • अधिकांश terminal TERM को एक उचित default value पर सेट करते हैं या उसे override करने की सुविधा देते हैं।

ssh

  • ssh दूरस्थ होस्ट तक TERM का मान भेजता है।

tmux

  • tmux के भीतर tmux-direct जैसे TERM को सेट करना चाहिए।

GN⁺ की राय

  • इस लेख का सबसे महत्वपूर्ण बिंदु यह है कि टर्मिनल वातावरण में भी उच्च-गुणवत्ता वाले रंगों का उपयोग करने की उपयोगकर्ताओं की मांग और उसे संभव बनाने वाली तकनीकी प्रगति दोनों महत्वपूर्ण हैं।
  • 24-बिट रंग समर्थन एक अहम फीचर है जो डेवलपर्स को बेहतर user experience देने में सक्षम बनाता है, खासकर code editor जैसे टूल में यह visual convenience को काफी बढ़ाता है।
  • यह लेख टर्मिनल और Emacs उपयोगकर्ताओं के लिए रोचक और उपयोगी होगा, और terminal-आधारित कार्य वातावरण में भी उत्कृष्ट visual experience चाहने वाले उपयोगकर्ताओं को काम की जानकारी देता है।

1 टिप्पणियां

 
GN⁺ 2024-01-31
Hacker News राय
  • टर्मिनल applications की जटिलता पर आश्चर्य व्यक्त करते हुए, iTerm और Kitty जैसे टर्मिनल applications के developers को धन्यवाद दिया गया है.

    • iTerm और zsh के लिए tab color setting functions को एक जगह संकलित करने वाला लिंक साझा किया गया है.
    • terminfo और पुराने telnet के जरिए HTTP या SMTP से जुड़ने के तरीकों की तुलना करते हुए, text-based interface की जटिलता की ओर इशारा किया गया है.
  • व्यक्तिगत रूप से, हर टर्मिनल app के लिए 16-color palette को समायोजित करना application-side terminal code को ठीक-ठीक मिलाने से आसान लगता है.

    • .Xdefaults फ़ाइल और custom theme .el फ़ाइल में colors सेट करने वाले code examples दिए गए हैं.
    • इससे ls output आदि के colors भी बेहतर हो जाते हैं, यह उल्लेख किया गया है.
  • अनुमान लगाया गया है कि अगर लेखक को export COLORTERM=truecolor के बारे में पता होता, तो उनका अनुभव बेहतर होता.

    • Emacs documentation के footnote में truecolor support detection का ज़िक्र है, और Konsole screenshot में भी यह दिखता है, लेकिन terminal multiplexer की कई layers के बीच यह छूट सकता है.
    • समझाया गया है कि इस setting से जटिल configuration को छोड़कर सीधे उस चरण पर जाया जा सकता है जहाँ application समझ ले कि true color चाहिए.
  • इस बात पर ज़ोर दिया गया है कि Emacs इस्तेमाल करते समय टर्मिनल का उपयोग करना अनिवार्य नहीं है; MacOS, Windows, X.org या Wayland के लिए "graphical" frontend का उपयोग किया जा सकता है.

    • यह भी उल्लेख है कि graphical Emacs टर्मिनल में चलने जैसा दिखता है, लेकिन वास्तव में इसमें image viewer सहित कई सुविधाएँ होती हैं.
    • Emacs user survey में 80% लोगों ने कहा कि वे graphical frontend का उपयोग करते हैं.
  • यह इंगित किया गया है कि computing शायद 1970 के दशक के terminal emulator, editor और operating system versions का उपयोग करने वाले production systems के कारण रास्ता भटक गया है.

    • आलोचना की गई है that कंप्यूटर लाखों गुना अधिक शक्तिशाली हो चुके हैं, फिर भी हम अब भी आधी सदी पहले जैसे तरीकों से काम कर रहे हैं.
  • मज़ाक में कहा गया है कि Cool Retro Term का उपयोग करके Emacs को और शानदार बनाना चाहते हैं.

    • वास्तव में, यह भी स्पष्ट किया गया है कि Cool Retro Term का उपयोग केवल presentations के लिए किया जाता है.
    • यह भी बताया गया है कि उन्हें पता चला कि उनका Emacs out of the box 24-bit color support करता है, और syntax highlighting थोड़ी परेशान करने वाली लगती है.
  • Windows 10 command prompt में standard ANSI escape sequences काम करते हैं, और 24-bit color भी अच्छी तरह काम करता है, यह पाया गया है.

    • लाल background पर "Hello" प्रिंट करने वाला example code दिया गया है.
  • यह कहा गया है कि vim/neovim की तुलना में Emacs की सबसे अच्छी बात यह है कि GUI support को first-class citizen की तरह माना जाता है.

    • gVim और अधूरे neovim frontends की बड़ी संख्या होने के बावजूद, Emacs का असली GUI के ज़रिए मूल रूप से चलना अधिक पसंद किया जाता है.
    • यह भी कहा गया है कि टर्मिनल में आज के समय में अनावश्यक ऐतिहासिक अवशेष और सीमाएँ बहुत हैं.
    • अगर remote server पर Emacs चलाने में समस्या हो, तो TRAMP और emacsclient (चाहे वह TCP के ज़रिए काम करता हो) का उपयोग किया जा सकता है.
  • यह कहते हुए कि वे colors का न्यूनतम उपयोग करने वाली Emacs setting इस्तेमाल करते हैं, इस feature का उपयोग शायद नहीं करेंगे, फिर भी इसे पढ़ना बहुत आनंददायक लगा.

    • tmux के चमकीले हरे रंग और Emacs के जंग लगे लाल-भूरे colors की आदत पड़ जाने का भी उल्लेख है.
  • यह आलोचना की गई है कि standards को इतनी ऊँची कीमत से बाँध देना कि लोग खरीदे बिना ही ऐसे लंबे रास्ते अपनाने को मजबूर हों, वास्तव में शर्मनाक है.

    • standards सार्वजनिक रूप से उपलब्ध होने चाहिए; पहले print cost लेना उचित रहा हो सकता है, लेकिन PDF के लिए $200 होना अविश्वसनीय है.