Ubah warna PS1 berdasarkan warna latar belakang?

12

Saya belajar bahwa saya dapat mengubah format PS1, terutama warna senarnya. Lalu, apakah mungkin untuk mengubah warna berdasarkan warna latar belakang shell? Atau, bagaimana saya bisa mendeteksi warna latar belakang shell?

prosseek
sumber

Jawaban:

4

Sejauh yang saya tahu, tidak ada cara untuk menanyakan warna emulator terminal. Anda dapat mengubahnya dengan \e]4;NUMBER;#RRGGBB\a(di mana NUMBERnomor warna terminal (0–7 untuk warna terang, 8–15 untuk warna cerah) dan #RRGGBBmerupakan nilai warna RGB heksadesimal) jika terminal Anda mendukung urutan itu (referensi: ctlseqs ).

Mekanisme skema warna yang kuat sering memiliki pengaturan latar belakang gelap atau terang yang harus Anda berikan untuk menunjukkan apakah Anda memiliki latar belakang hitam atau abu-abu gelap, atau latar belakang putih atau abu-abu terang.

Saat Anda mengonfigurasi sendiri, biasanya cukup untuk memutuskan Anda akan selalu menggunakan warna latar yang sama.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Anda bisa mendapatkan jumlah warna yang didukung dalam entri termcap dengan melihat "warna tput" tetapi dalam banyak kasus itu akan mengatakan angka yang rendah, seperti 8, karena dukungan termcap untuk terminal 256 warna benar-benar lemah.
slacy
1
@slacy Untuk> 99% terminal saat ini, data termcap / terminfo tidak relevan: semuanya adalah variasi minor xterm, dan detail yang berbeda, seperti jumlah warna, tidak tercermin dalam nilai TERMdan jadi tidak bisa didapat dari lingkungan.
Gilles 'SO- berhenti bersikap jahat'
4

Jika Anda menggunakan terminal gnome, Anda bisa mendapatkan warna latar belakang untuk profil apa pun, dalam hal ini untuk profil Default as

   $ gconftool-2 --get /apps/gnome-terminal/profiles/Default/background_color
   #E12FE12FC74D

maka Anda dapat memutuskan bagaimana mengatur prompt Anda sesuai.

Diego Torres Milano
sumber
2

Dengan xterm, Anda dapat menanyakan warna latar belakang dengan \e]11;?\aurutan escape. Anda perlu membaca respons dari terminal. Ada xtermcontrolperintah yang melakukan itu untuk Anda:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Stéphane Chazelas
sumber
Hal yang sama juga berlaku di terminal gnome dan mungkin juga beberapa emulator terminal lain (tapi pasti tidak semuanya).
egmont