2 điểm bởi GN⁺ 2024-10-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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-shellbase16-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

 
GN⁺ 2024-10-04
Ý 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

    • Có thể phát sinh vấn đề khi chuyển sang console Linux hoặc BSD với hỗ trợ phông chữ và màu sắc hạn chế. Tôi đã dùng fbterm để có được các tính năng terminal khá ổn mà không cần X, nhưng bản thân fbterm cũng có những vấn đề riêng. Khi cấu hình màu cho vim, cần chuẩn bị một giao diện dự phòng cho các console thiếu tính năng
  • 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

    • Nên tránh các công cụ CLI dùng escape sequence màu 8-bit hoặc 24-bit. Điều này có thể gây khó chịu cho người dùng. Việc nhà phát triển đặt giao diện màu làm mặc định không thực sự hữu ích
  • 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-mode của Emacs có thể bị đặt sai, khiến màu hiển thị không đẹp

  • Tô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