- การตั้งค่าสีของเทอร์มินัลเป็นปัญหาที่ยากสำหรับหลายคน โดยเฉพาะคู่สี "ตัวอักษรสีน้ำเงินบนพื้นหลังสีดำ" ที่มักถูกพูดถึงว่าอ่านยาก
- สี ANSI มีทั้งหมด 16 สี และเทอร์มินัลอีมูเลเตอร์แต่ละตัวอาจตีความสีเหล่านี้ต่างกันได้
ปัญหา 1: ตัวอักษรสีน้ำเงินบนพื้นหลังสีดำ
- ข้อความสีน้ำเงินบนพื้นหลังสีดำอ่านได้ยาก
- สี ANSI ไม่มีมาตรฐานตายตัว จึงอาจแสดงผลต่างกันไปในแต่ละเทอร์มินัล
ปัญหา 1.5: สีเหลืองอ่อนบนพื้นหลังสีขาว
- สีเหลืองอ่อนบนพื้นหลังสีขาวแทบอ่านไม่ออกเลย
- เพื่อแก้ปัญหาเรื่องคอนทราสต์ของสี สามารถปรับชุดสีของเทอร์มินัลอีมูเลเตอร์ใหม่ได้
วิธีปรับชุดสี
- วิธีที่ 1: ตั้งค่าในเทอร์มินัลอีมูเลเตอร์ : เทอร์มินัลอีมูเลเตอร์สมัยใหม่ส่วนใหญ่มีฟังก์ชันสำหรับปรับชุดสี
- วิธีที่ 2: รันเชลล์สคริปต์ : สามารถใช้ ANSI escape code เพื่อเปลี่ยนสีของเทอร์มินัลได้
ปัญหา 2: โปรแกรมที่ใช้ 256 สี
- โปรแกรมอย่าง
fd ใช้ชุดสีแบบขยาย 256 สี ซึ่งอาจทำให้คอนทราสต์ของสีแย่ได้
- เครื่องมือสมัยใหม่บางตัวรองรับธีมแบบกำหนดเอง จึงทำงานร่วมกับธีมเทอร์มินัลที่หลากหลายได้ดี
ปัญหา 3: สีเทาในธีม Solarized
- สีเทาในธีม Solarized ส่งผลต่อสีของไดเรกทอรีและไฟล์ที่รันได้
- ธีม Solarized แบบดั้งเดิมใช้สีเทา แต่เวอร์ชัน base16 ที่ปรับแก้แล้วใช้สีที่สว่างกว่า
ปัญหา 4: ธีม vim ที่ไม่เข้ากับพื้นหลังของเทอร์มินัล
- หากสีพื้นหลังของธีม vim ไม่ตรงกับธีมเทอร์มินัล อาจเกิดขอบคั่นขึ้นมาได้
ปัญหา 5: การตั้งค่าสีพื้นหลังของโปรแกรม
- โปรแกรมอย่าง
ngrok อาจตั้งค่าสีพื้นหลังที่ไม่ต้องการ
- สคริปต์
base16-shell ตั้งค่าสี #16 เป็นสีส้มสว่างเพื่อเพิ่มสีเพิ่มเติม
ปัญหา 6: ตั้งค่า TERM ผิด
- หากตั้งค่าตัวแปรสภาพแวดล้อม
TERM ไม่ถูกต้อง สีอาจแสดงผลไม่ถูกต้อง
ปัญหา 7: ความยากในการเลือกสีที่ดี
- ผู้ที่มีภาวะตาบอดสีอาจหาชุดสีที่เหมาะสมได้ยาก
- หากสีพื้นหลังกับสีเคอร์เซอร์คล้ายกันเกินไป ก็อาจมองหาเคอร์เซอร์ได้ยาก
ปัญหา 8: ปัญหาสีของ nethack/mc
- โปรแกรมอย่าง nethack หรือ midnight commander อาจคาดหวังธีมสีเฉพาะแบบหนึ่ง
- สามารถแก้ปัญหาได้โดยเปลี่ยนพาเลตต์สีก่อนเริ่มโปรแกรม
ปัญหา 9: ปิดการใช้สีเมื่อเขียนลงไพป์
- คำสั่งอย่าง
fd | less จะปิดการแสดงสี
- สามารถใช้
unbuffer fd | less -r เพื่อดูสีได้
ปัญหา 10: สีที่ไม่ต้องการของ ls และคำสั่งอื่น ๆ
- สามารถปิดการใช้สีของ
ls หรือปรับแต่งสีเองได้
ปัญหา 11: ปัญหาสีใน vim
- การตั้งค่าสีของ vim มีสองแนวทางคือใช้สี ANSI และใช้สีแบบ 24 บิต
- ตั้งแต่ปี 2016 เป็นต้นมา vim รองรับสีแบบ 24 บิตแล้ว
ปัญหาอื่น ๆ
- ปัญหาที่เกิดจากการผสมกันของหลายโปรแกรมรับมือได้ยาก
ผลของ base16
- สามารถตั้งค่าสีได้สำเร็จโดยใช้ base16-shell และ base16-vim
- แต่อาจยังมีข้อจำกัดจากธีมในตัวที่มีให้เลือกน้อยและปัญหาของการตั้งค่าสี ANSI
เครื่องมือธีมสีอื่น ๆ
- มีเครื่องมือสร้างธีมสีอย่าง rootloops.sh
- ธีมสียอดนิยมได้แก่ catpuccin, Monokai, Gruvbox, Dracula เป็นต้น
สรุปของ GN⁺
- การตั้งค่าสีของเทอร์มินัลมีความซับซ้อน แต่ฟังก์ชันคอนทราสต์ขั้นต่ำช่วยแก้ปัญหาได้หลายอย่าง
- สามารถปรับปรุงประสบการณ์ผู้ใช้ได้ด้วยการใช้ธีมสีและเครื่องมือต่าง ๆ
- การตั้งค่าสีของเทอร์มินัลอาจแตกต่างกันไปตามความชอบและความต้องการของแต่ละคน
- โปรเจกต์อื่นที่มีฟังก์ชันคล้ายกันและน่าแนะนำ ได้แก่ Solarized, Gruvbox เป็นต้น.
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
พบว่าธีมสว่างแสดงผลต่างจากธีมมืดเล็กน้อยบนหน้าจอและการตั้งค่าที่หลากหลาย นี่เป็นปัญหาร้ายแรงเมื่อย้ายธีมไปใช้กับคอมพิวเตอร์หลายเครื่อง
ธีมสีเริ่มต้นของ terminal emulator ไม่ดีนักจึงควรเปลี่ยน ส่วนตัวชอบธีม Solarized
อยากใช้ธีมสว่าง แต่หลายโปรแกรมใช้สีที่ปรับมาสำหรับพื้นหลังมืดจึงยอมแพ้ไป ตอนนี้ใช้ธีม ANSI บนพื้นหลังมืดเพื่อให้คอนทราสต์เพียงพอ
ควรใช้ algorithm APCA แบบใหม่เพื่อตรวจสอบสี โดย APCA คำนึงถึงขนาดฟอนต์ น้ำหนักฟอนต์ สีพื้นหน้า/พื้นหลัง แสงโดยรอบ ฯลฯ
บางคนก็อยากปิดการใช้สีทั้งหมด ส่วนตัวก็อยากลองเหมือนกัน แต่ก็ชอบสีสวย ๆ ด้วย
ค่า frame-background-mode ของ Emacs อาจตั้งผิดจนทำให้สีดูไม่ดี
ใช้ธีมสี FlatUI ที่ปรับแต่งเล็กน้อยอยู่ และใช้งานได้โดยไม่มีปัญหาใหญ่
สีน้ำเงินของป้ายไฟนีออนหรือป้ายชื่อ LED เป็นสีที่รบกวนสายตาที่สุดในตอนกลางคืน มองจากไกล ๆ จะดูพร่าและโฟกัสไม่เข้า
สนใจเรื่องสีของเทอร์มินัลน้อยลงแล้ว และการปรับสีไม่ได้ส่งผลบวกต่อประสิทธิภาพการทำงาน แค่ปรับคอนทราสต์พื้นหลังของธีม 'pro' เริ่มต้นใน Apple Terminal เล็กน้อย
เคยใช้เวลากับการเลือกสีเทอร์มินัลไปมาก แต่ตอนนี้ใช้ข้อความสีดำบนพื้นหลังสีขาว ตอนกลางวันไม่แสบตา และตอนกลางคืนใช้ f.lux เพื่อลดความล้าของดวงตา