- Việc cấu hình màu sắc terminal là một vấn đề khó đối với nhiều người. Đặc biệt, tổ hợp "chữ xanh dương trên nền đen" thường được nhắc đến như một kiểu rất khó đọc.
- Màu ANSI gồm 16 màu, và mỗi trình giả lập terminal có thể diễn giải chúng theo cách khác nhau.
Vấn đề 1: chữ xanh dương trên nền đen
- Văn bản màu xanh dương trên nền đen rất khó đọc.
- Màu ANSI không có một tiêu chuẩn thống nhất nên có thể hiển thị khác nhau trên từng terminal.
Vấn đề 1.5: vàng sáng trên nền trắng
- Vàng sáng trên nền trắng gần như là không thể đọc được.
- Để giải quyết vấn đề tương phản màu, có thể cấu hình lại màu của trình giả lập terminal.
Cách cấu hình lại màu sắc
- Cách 1: cài đặt trình giả lập terminal : hầu hết các trình giả lập terminal hiện đại đều cung cấp tính năng cấu hình lại màu sắc.
- Cách 2: chạy shell script : có thể thay đổi màu terminal bằng mã escape ANSI.
Vấn đề 2: các chương trình dùng 256 màu
- Các chương trình như
fd dùng bộ 256 màu mở rộng nên có thể cho độ tương phản màu kém.
- Một số công cụ mới hơn hỗ trợ theme tùy chỉnh nên hoạt động tốt với nhiều theme terminal khác nhau.
Vấn đề 3: màu xám trong theme Solarized
- Màu xám trong theme Solarized ảnh hưởng đến màu của thư mục và tệp thực thi.
- Theme Solarized mặc định dùng màu xám, nhưng phiên bản base16 đã chỉnh sửa thì dùng màu sáng hơn.
Vấn đề 4: theme vim không khớp với nền terminal
- Nếu màu nền của theme vim khác với theme terminal, có thể xuất hiện đường viền.
Vấn đề 5: chương trình tự đặt màu nền
- Các chương trình như
ngrok có thể đặt màu nền không mong muốn.
- Script
base16-shell đặt màu #16 thành cam sáng để cung cấp thêm màu.
Vấn đề 6: TERM được cấu hình sai
- Nếu biến môi trường
TERM được cấu hình sai, màu sắc có thể không hiển thị đúng.
Vấn đề 7: khó chọn màu tốt
- Người mù màu có thể gặp khó khăn khi tìm tổ hợp màu phù hợp.
- Nếu màu nền và màu con trỏ giống nhau, có thể khó nhận ra con trỏ.
Vấn đề 8: vấn đề màu của nethack/mc
- Các chương trình như nethack hoặc midnight commander có thể kỳ vọng một theme màu cụ thể.
- Có thể giải quyết bằng cách thay đổi bảng màu trước khi khởi động chương trình.
Vấn đề 9: tắt màu khi ghi vào pipe
- Các lệnh như
fd | less sẽ vô hiệu hóa màu.
- Có thể dùng
unbuffer fd | less -r để xem màu.
Vấn đề 10: màu không mong muốn của ls và các lệnh khác
- Có thể tắt hoặc tùy chỉnh màu của
ls.
Vấn đề 11: vấn đề màu của vim
- Cấu hình màu của vim có hai cách: màu ANSI và màu 24-bit.
- Từ năm 2016, vim đã hỗ trợ màu 24-bit.
Các vấn đề khác
- Những vấn đề phát sinh từ việc kết hợp nhiều chương trình rất khó xử lý.
Hiệu quả của base16
- Có thể thiết lập màu thành công bằng
base16-shell và base16-vim.
- Tuy nhiên vẫn có thể tồn tại các vấn đề với theme tích hợp bị giới hạn và cách thiết lập màu ANSI.
Các công cụ theme màu khác
- Có các công cụ tạo theme màu như rootloops.sh.
- Những theme màu phổ biến gồm catpuccin, Monokai, Gruvbox, Dracula, v.v.
Tóm tắt của GN⁺
- Cấu hình màu terminal rất phức tạp, nhưng tính năng độ tương phản tối thiểu có thể giải quyết nhiều vấn đề.
- Có thể cải thiện trải nghiệm người dùng bằng cách tận dụng nhiều theme màu và công cụ khác nhau.
- Cấu hình màu terminal có thể được áp dụng khác nhau tùy theo sở thích và nhu cầu của từng người.
- Các dự án khác có tính năng tương tự được khuyến nghị gồm Solarized, Gruvbox, v.v.
1 bình luận
Ý kiến Hacker News
Đã nhận ra rằng giao diện sáng trông hơi khác so với giao diện tối trên nhiều màn hình và thiết lập khác nhau. Đây là một vấn đề nghiêm trọng khi mang giao diện sang nhiều máy tính khác nhau
Giao diện màu mặc định của terminal emulator không tốt nên cần thay đổi. Cá nhân tôi thích giao diện Solarized
Tôi từng muốn dùng giao diện sáng, nhưng đã từ bỏ vì nhiều chương trình dùng màu được tối ưu cho nền tối. Hiện tại tôi dùng giao diện ANSI trên nền tối để giữ độ tương phản đủ tốt
Nên kiểm tra màu bằng thuật toán APCA mới. APCA xem xét kích thước chữ, độ đậm, tiền cảnh/hậu cảnh, ánh sáng xung quanh, v.v.
Cũng có những người muốn tắt hoàn toàn màu sắc. Cá nhân tôi cũng muốn thử, nhưng tôi vẫn thích những màu sắc đẹp mắt
frame-background-modecủa Emacs có thể bị đặt sai, khiến màu hiển thị không đẹpTôi đang dùng giao diện màu FlatUI đã chỉnh sửa nhẹ, và dùng không gặp vấn đề lớn nào
Màu xanh của biển hiệu đèn neon hoặc bảng tên LED là thứ gây mỏi mắt nhất vào ban đêm. Nhìn từ xa thì nó bị nhòe và khó lấy nét
Tôi đã bớt quan tâm đến màu terminal, và việc tinh chỉnh màu không tạo tác động tích cực đến năng suất. Tôi chỉ chỉnh nhẹ độ tương phản nền của giao diện mặc định 'pro' trên Apple Terminal
Tôi đã dành rất nhiều thời gian để chọn màu cho terminal, nhưng giờ thì dùng chữ đen trên nền trắng. Ban ngày không bị chói, còn ban đêm thì dùng f.lux để giảm mỏi mắt