แค่อยากทำให้ Emacs ดูสวยขึ้น — การใช้สี 24 บิตในเทอร์มินัล
- ชุมชน Emacs ยังคงคึกคัก และมีฟีเจอร์สมัยใหม่อย่างการเติมโค้ดอัตโนมัติและการตรวจสอบชนิดข้อมูลแบบอินไลน์ผ่าน LSP
- ในสภาพแวดล้อมแบบกราฟิก Emacs รองรับสี 24 บิตโดยอัตโนมัติ แต่ในเทอร์มินัลจะไม่เป็นเช่นนั้น
ANSI escape code
- เทอร์มินัลฮาร์ดแวร์ยุคแรกมีโค้ดควบคุมที่ไม่เข้ากันระหว่างกัน และ ANSI ได้เข้ามาทำให้สิ่งเหล่านี้เป็นมาตรฐาน
- ผ่าน SGR (Select Graphics Rendition) จึงสามารถตั้งค่าคุณสมบัติการแสดงผลตัวอักษรได้หลากหลาย
สี 3, 4 และ 8 บิต
- เมื่อเริ่มมีการนำสีมาใช้ เดิมมีสีพื้นฐาน 8 สี และภายหลังได้เพิ่มสีสว่างเข้าไปจนรวมเป็น 16 สี
- ในปี 1999 Todd Larason ได้เพิ่มแพตช์ให้ xterm รองรับสี 256 สี
การรองรับสี 24 บิตมาจากไหน?
- วิธีส่งค่าสี 8 บิตและ 24 บิตไปยังเทอร์มินัลที่รองรับนั้นมีการบันทึกเอกสารไว้อย่างดี
- จากกระบวนการทำมาตรฐาน ANSI ในยุค 70 และต่อมา ISO 8613-6 (ITU T.416) ในยุค 90 ได้กำหนดให้ 38 และ 48 เป็นโหมดสี foreground และ background แบบขยาย
Terminfo
- Terminfo เป็นฐานข้อมูลความสามารถของเทอร์มินัล และผ่านตัวแปรสภาพแวดล้อม TERM โปรแกรมจะรู้ว่าควรใช้ระเบียน terminfo ใด
xterm-256color และ xterm-direct รองรับสี 256 สีและสีแบบ RGB ตามลำดับ
การตั้งค่า TERM: ปัญหาเครื่องหมายอัฒภาค
- เนื่องจากหลายเทอร์มินัลรองรับเฉพาะไวยากรณ์แบบอัฒภาค จึงต้องตรวจสอบให้แน่ใจว่าได้ตั้งค่า TERM ไว้อย่างถูกต้อง
การตั้งค่า Emacs
- Emacs มีเอกสารอธิบายวิธีตรวจจับการรองรับ truecolor
RGB เป็นความสามารถด้านสีพื้นฐานของ Emacs โดยจะค้นหาสตริง setf24 และ setb24 ก่อน
เทอร์มินัลแบบซ้อนกัน
- เวิร์กโฟลว์ทั่วไปมักใช้งานเทอร์มินัลหลายชั้นซ้อนกัน
- ทุกเลเยอร์ต้องเข้าใจสี 24 บิตและแปลงค่าได้อย่างถูกต้อง
โปรแกรมจำลองเทอร์มินัลแบบกราฟิก
- เทอร์มินัลส่วนใหญ่ตั้งค่า TERM เป็นค่าเริ่มต้นที่เหมาะสม หรือให้ผู้ใช้ override ได้
ssh
ssh จะส่งต่อค่า TERM ไปยังโฮสต์ปลายทาง
tmux
- ภายใน
tmux ควรตั้งค่า TERM เป็นค่าอย่าง tmux-direct
ความเห็นของ GN⁺
- ประเด็นสำคัญที่สุดของบทความนี้คือความต้องการของผู้ใช้ที่อยากใช้สีคุณภาพสูงแม้อยู่ในสภาพแวดล้อมเทอร์มินัล และความก้าวหน้าทางเทคนิคที่ทำให้สิ่งนี้เป็นไปได้
- การรองรับสี 24 บิตเป็นความสามารถสำคัญที่ช่วยให้นักพัฒนามอบประสบการณ์ผู้ใช้ที่ดียิ่งขึ้นได้ โดยเฉพาะในเครื่องมืออย่างตัวแก้ไขโค้ดที่ช่วยเพิ่มความสะดวกด้านการมองเห็นอย่างมาก
- บทความนี้น่าจะทั้งน่าสนใจและเป็นประโยชน์ต่อผู้ใช้เทอร์มินัลและ Emacs และให้ข้อมูลที่มีประโยชน์แก่ผู้ที่ต้องการประสบการณ์ด้านภาพที่ยอดเยี่ยมแม้ในสภาพแวดล้อมการทำงานแบบเทอร์มินัล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
แสดงความคิดเห็นด้วยความทึ่งต่อความซับซ้อนของแอปพลิเคชันเทอร์มินัล และขอบคุณนักพัฒนาของแอปเทอร์มินัลอย่าง iTerm และ Kitty
โดยส่วนตัวคิดว่าการปรับพาเลต 16 สีแยกตามแต่ละแอปเทอร์มินัลนั้นง่ายกว่าการทำให้โค้ดฝั่งแอปพลิเคชันตรงกับเทอร์มินัลอย่างแม่นยำ
.Xdefaultsและไฟล์ธีม.elที่ปรับแต่งเองlsก็ดีขึ้นด้วยคาดว่าถ้าผู้เขียนรู้จัก
export COLORTERM=truecolorก็น่าจะได้ประสบการณ์ที่ดีกว่านี้เน้นว่าเวลาใช้ Emacs ไม่จำเป็นต้องใช้เทอร์มินัลเสมอไป และสามารถใช้ฟรอนต์เอนด์แบบ "กราฟิก" สำหรับ MacOS, Windows, X.org หรือ Wayland ได้
ชี้ว่าการประมวลผลอาจหลงทางไปแล้ว ผ่านระบบ production ที่ยังใช้เทอร์มินัลอีมูเลเตอร์ เอดิเตอร์ และเวอร์ชันระบบปฏิบัติการจากยุค 1970
พูดติดตลกว่าอยากใช้ Cool Retro Term เพื่อทำให้ Emacs ดูเท่ขึ้น
พบว่าลำดับ escape แบบ ANSI มาตรฐานใช้งานได้ใน command prompt ของ Windows 10 และสี 24 บิตก็ทำงานได้ดีเช่นกัน
ระบุว่าจุดที่ดีที่สุดของ Emacs เมื่อเทียบกับ vim/neovim คือการรองรับ GUI ที่ถูกปฏิบัติเป็นพลเมืองชั้นหนึ่ง
บอกว่าตัวเองคงไม่ได้ใช้ฟีเจอร์นี้ เพราะใช้การตั้งค่า Emacs ที่ใช้สีน้อยที่สุด แต่ก็อ่านแล้วเพลิดเพลินมาก
วิจารณ์ว่าน่าอับอายจริง ๆ ที่มาตรฐานถูกผูกไว้กับราคาสูง จนผู้คนต้องไปไกลถึงขั้นนี้โดยไม่ต้องซื้อ