Apakah mungkin untuk menonaktifkan tweaker otomatis warna Terminal di Lion?

35

Walaupun hebat bahwa Terminal sekarang memiliki dukungan bawaan untuk mengubah warna ANSI, saya merasa menjengkelkan karena secara otomatis menyesuaikan warna untuk meningkatkan kontras, yang berarti warna yang saya pilih sering berakhir dengan hanyut atau tidak aktif dengan cara lain . Berikut screenshot yang menjelaskan masalahnya:

tangkapan layar pengaturan warna OS X Terminal.app

Ini mengganggu saya karena saya suka menggunakan skema warna yang sama di Terminal dan MacVim, dan dengan penanganan warna oleh Terminal ini, mereka tidak cocok dengan yang ada di MacVim.

Apakah ada yang tahu solusi untuk ini, selain beralih ke iTerm 2 (yang saya lebih suka tidak - saya suka sisa Terminal, terutama beberapa sentuhan GUI seperti bel visual yang berdenyut). Terima kasih!

Johan Sahlén
sumber
1
Pertanyaan bagus - penyesuaian juga tampaknya dibuat untuk transparansi jendela, apalagi rendering sub piksel ...
kopischke
@kopischke, penyesuaian kontras minimum tidak memperhitungkan opacity warna latar belakang, jika itu yang Anda maksud.
Chris Halaman
Ini akan membantu jika Anda memasang tangkapan layar yang menunjukkan warna yang diharapkan pada latar belakang hitam. Selain angka, saya tidak bisa benar-benar melihat perbedaan antara carikan warna di jendela preferensi dan warna teks di terminal di tangkapan layar Anda, jadi sulit untuk mengatakan seberapa signifikan perbedaannya.
Chris Halaman
Sekarang saya tahu mengapa saya membenci OS X. Saya telah kehilangan 6+ jam mencoba mencari tahu mengapa skema warna yang saya desain di Linux rusak di Mac teman saya - saya menduga ada masalah dengan konversi ruang warna (sRGB vs Apple RGB), tetapi Saya tidak akan pernah menduga bahwa itu adalah kesalahan terminal ... Terima kasih telah mengkonfirmasi diagnosis saya.
Jan Warchoł
Di luar topik, tetapi iTerm2 memungkinkan Anda memiliki bel visual yang mendebarkan. Prefs> Tingkat lanjut> Bel visual mengedipkan seluruh layar, bukan hanya ikon bel.
user2551

Jawaban:

23

Inilah trik yang perlu Anda ketahui: Nilai yang ditetapkan melalui RGB hancur, yang ditetapkan melalui HSB tidak.

Aku punya masalah yang sama dengan menggunakan (besar) Solarized skema warna: MacVim memiliki lebih gelap (dan benar) warna latar belakang dari Terminal, meskipun saya sedang menyiapkan semua nilai RGB yang benar per spec Solarized. Lihat disini:

Pada dasarnya Anda perlu tahu apa nilai warna Anda seharusnya untuk masing-masing Terminal ANSI, teks, dan Latar Belakang (perhatikan yang ini ada di tab Window) warna dan kemudian atur melalui pemetik HSB alih-alih RGB. Lihat contoh ini:

Untuk alasan apa pun (saya menduga ada beberapa jenis profil, atau mungkin tweak kontras seperti yang Anda sarankan), warna RGB yang Anda masukkan bukanlah yang Anda dapatkan. Anda juga akan melihat bahwa setelah Anda menetapkan nilai melalui HSB, beralih ke pemilih RGB akan menampilkan opsi yang berbeda dari yang Anda harapkan. Konversi nilai Solarized semua setuju sesuai dengan Photoshop; tampaknya menjadi sesuatu yang pemilih warna Apple lakukan untuk Anda.

Ryan Dlugosz
sumber
9
Ini jawaban yang luar biasa bagus.
Jason Salaz
Sepertinya RGB tidak hancur seperti itu, hanya dimodifikasi oleh pengaturan opacity pemilih sebagai jawaban oleh @ eirnym - kombinasi dari 2 tidak hanya menjelaskannya, tetapi menyelesaikannya dalam 2 cara. Besar!
stuffe
2
Tidak hujan di parade, tapi saya tidak bisa memastikan ini memperbaiki masalah - Terminal.app terus memodifikasi nilai yang saya input di ruang warna HSB, bahkan ketika mengatur latar belakang ke nilai yang benar (termasuk opacity 100% dan blur 0%) pertama. Nilai-nilai cerah tampaknya kurang rentan terhadap hal ini, semakin non-cerah. Mungkin color picker di Terminal.app benar-benar bermasalah, mungkin mencoba untuk menjadi "pintar" tentang kontras dan rentang warna (saya tidak akan meletakkan Apple di masa lalu) - baik itu, solusi di atas tidak bekerja pada saya sistem.
kopischke
... menyelidiki lebih banyak lagi, masalah ini tampaknya berakar pada pemetaan warna Solarized dari perangkat independen (ruang warna LAB / HSB) ke ruang warna tergantung perangkat (RGB). Hasil yang konsisten dapat dicapai ketika memilih ruang warna HSB, seperti yang ditunjukkan di atas, tetapi hanya ketika juga secara tegas memetakan ke perangkat RGB (dalam menu tarik-turun di belakang panah kecil di sebelah kiri kotak warna kecil dari dropdown ruang warna). Perbedaan nilai RGB ke tabel warna Solarized dijelaskan oleh fakta peta Solarized ke sRGB, sedangkan pemilih warna selalu secara implisit memetakan ke perangkat RGB.
kopischke
… Yang memberitahu OS X color picker telah dirancang untuk orang-orang yang benar-benar tahu apa arti ruang warna ini (yaitu desainer grafis), bukan kita yang mendengus Terminal :). [yeah, OT, aku tahu]
kopischke
10

memilih 'Device RGB' dari dropdown swatch Apple Color Picker

  1. Buka pemilih warna
  2. Pilih tab slider
  3. Klik pada contoh di bawah kaca pembesar, di sebelah kiri dropdown slider
  4. Memilih Device RGB

Sekarang warna yang ditentukan oleh nilai hex tidak akan dikenai konversi ruang warna.

Di Sierra, color space picker telah berubah menjadi ikon roda gigi: Pemilih ruang warna Sierra

Sumber

Daniel Holz
sumber
2
Keren - terima kasih untuk ini! Untuk semua kecakapan desain Apple, sama sekali tidak jelas bahwa mengklik ini akan membuka menu.
Ryan Dlugosz
Catatan: jika pemecahan masalah ini menggunakan warna dengan ruang warna yang berbeda berfungsi, kemungkinan bergantung pada bug dalam kode penanganan warna, yang seharusnya bekerja dengan warna apa pun, dan mungkin berhenti bekerja di masa depan ketika bug itu diperbaiki.
Chris Halaman
1
Trik ini berhasil untuk saya; Trik HSB tidak.
Jay
4

Profil warna jelas penting, tetapi ada masalah lain yang mengintai di sini: Terminal.app secara otomatis mencerahkan warna apa pun saat ditampilkan di atas latar belakang default. Di sini, misalnya, adalah keluaran warna oleh Terminal.app menjalankan tema warna Solarized , yang diukur dengan DigitalColor Meter dalam mode sRGB, dan dibandingkan dengan nilai sRGB Solarized kanonik.

Ketika disajikan di atas latar belakang hitam (atau warna lain), Terminal.app menghasilkan kira-kira warna yang benar; namun, pada latar belakang default, semua warna kecuali teks tebal default dan standar secara substansial terlalu cerah.

tes warna di Terminal.app.  Warna seperti yang diharapkan ketika disajikan di atas latar belakang berwarna, tetapi cerah ketika disajikan di atas latar belakang standar.

April Arcus
sumber
Terpilih karena ini bukan jawaban. Tampaknya menjadi komentar tentang pertanyaan itu.
Chris Halaman
2
Bagaimana Anda menghasilkan tabel warna itu? Terlihat sangat berguna.
Luke Davis
2

Buka pengaturan Window untuk tema Anda, beralih warna latar belakang, atur blur ke 0% dan Opacity menjadi 100%. Setelah ini warna Anda akan sama seperti yang Anda inginkan. Anda juga harus memeriksa setiap warna yang Anda pilih untuk parameter ini.

masukkan deskripsi gambar di sini

Eir Nym
sumber
Pilihan turun karena ini tidak berlaku untuk pertanyaan, yaitu tentang perilaku kontras minimum Terminal dan tidak terpengaruh oleh opacity latar belakang.
Chris Halaman
2

Singkatnya: tidak, tidak ada cara yang didukung untuk menonaktifkan ini.

Terminal secara otomatis menerapkan kontras minimum ketika menampilkan warna ANSI (atau tabel 256 warna) pada warna latar terminal, atau ketika menampilkan warna foreground / teks terminal pada warna latar ANSI.

Ini dimaksudkan sebagai kenyamanan, sehingga seseorang dapat mengatur warna latar belakang atau latar depan dan membuatnya kontras dengan warna ANSI tanpa harus menyesuaikan semua warna ANSI. Ini sangat penting dalam versi Terminal sebelumnya, yang tidak memiliki dukungan Preferensi untuk menyesuaikan warna ANSI.

Versi lama dari Terminal menerapkan kontras minimum untuk semua kombinasi warna, tetapi itu berarti bahwa, misalnya, teks merah-on-merah ANSI dapat dibaca, tetapi beberapa program sengaja menampilkan teks dengan warna foreground dan background yang sama untuk menyembunyikannya (untuk menampilkan petunjuk permainan atau lelucon, misalnya). Karena itu, versi Terminal yang lebih baru tidak menerapkan kontras minimum ketika menampilkan satu warna ANSI di atas yang lain.

Sekarang, daripada hanya menangani case dengan warna yang sama, Terminal menghindari penerapan kontras minimum untuk semua kombinasi warna ANSI, karena diasumsikan bahwa jika pengguna mengkustomisasi warna ANSI apa pun, mereka akan menyesuaikan semuanya untuk kontras satu sama lain seperti yang diinginkan . Juga diasumsikan bahwa para pengguna akan menyesuaikan atau memperhitungkan latar belakang terminal dan warna foreground agar sesuai dengan skema warna yang diinginkan.

Jika solusi menggunakan warna dengan ruang warna berbeda — disarankan dalam jawaban lain — bekerja, kemungkinan besar bergantung pada bug dalam kode penanganan warna, yang seharusnya bekerja dengan warna apa saja, dan mungkin berhenti bekerja di masa depan ketika bug itu diperbaiki.

Jika dapat secara eksplisit menonaktifkan atau menyesuaikan perilaku kontras minimum penting bagi Anda, saya sarankan memberi tahu Apple dengan mengajukan laporan di https://developer.apple.com/bug-reporting/ menggunakan ID Apple apa pun.

Chris Page
sumber