मैं 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 टिप्पणियां
Hacker News राय
टर्मिनल applications की जटिलता पर आश्चर्य व्यक्त करते हुए, iTerm और Kitty जैसे टर्मिनल applications के developers को धन्यवाद दिया गया है.
व्यक्तिगत रूप से, हर टर्मिनल app के लिए 16-color palette को समायोजित करना application-side terminal code को ठीक-ठीक मिलाने से आसान लगता है.
.Xdefaultsफ़ाइल और custom theme.elफ़ाइल में colors सेट करने वाले code examples दिए गए हैं.lsoutput आदि के colors भी बेहतर हो जाते हैं, यह उल्लेख किया गया है.अनुमान लगाया गया है कि अगर लेखक को
export COLORTERM=truecolorके बारे में पता होता, तो उनका अनुभव बेहतर होता.इस बात पर ज़ोर दिया गया है कि Emacs इस्तेमाल करते समय टर्मिनल का उपयोग करना अनिवार्य नहीं है; MacOS, Windows, X.org या Wayland के लिए "graphical" frontend का उपयोग किया जा सकता है.
यह इंगित किया गया है कि computing शायद 1970 के दशक के terminal emulator, editor और operating system versions का उपयोग करने वाले production systems के कारण रास्ता भटक गया है.
मज़ाक में कहा गया है कि Cool Retro Term का उपयोग करके Emacs को और शानदार बनाना चाहते हैं.
Windows 10 command prompt में standard ANSI escape sequences काम करते हैं, और 24-bit color भी अच्छी तरह काम करता है, यह पाया गया है.
यह कहा गया है कि vim/neovim की तुलना में Emacs की सबसे अच्छी बात यह है कि GUI support को first-class citizen की तरह माना जाता है.
यह कहते हुए कि वे colors का न्यूनतम उपयोग करने वाली Emacs setting इस्तेमाल करते हैं, इस feature का उपयोग शायद नहीं करेंगे, फिर भी इसे पढ़ना बहुत आनंददायक लगा.
यह आलोचना की गई है कि standards को इतनी ऊँची कीमत से बाँध देना कि लोग खरीदे बिना ही ऐसे लंबे रास्ते अपनाने को मजबूर हों, वास्तव में शर्मनाक है.