12

I learned that I can change the format of PS1, especially the color of the string. Then, is it possible to change the color based on the background color of the shell? Or, how can I detect the background color of the shell?

3 Answers 3

4

As far as I know, there's no way to query the colors of the terminal emulator. You can change them with \e]4;NUMBER;#RRGGBB\a (where NUMBER is the terminal color number (0–7 for light colors, 8–15 for bright colors) and #RRGGBB is a hexadecimal RGB color value) if your terminal supports that sequence (reference: ctlseqs).

Powerful color scheme mechanisms often have a dark or light background setting that you must supply to indicate whether you have a black or dark gray background, or a white or light gray background.

When you're configuring for yourself, it's usually enough to decide you'll always use the same background color.

2
  • You can get the supported number of colors in the termcap entry by looking at "tput colors" but in many cases that will say a low number, like 8, because the termcap support for 256-color terminals is really weak.
    – slacy
    Commented Jun 12, 2012 at 21:46
  • 1
    @slacy For >99% of today's terminals, termcap/terminfo data is irrelevant: they're all minor variations of xterm, and the details that differ, such as the number of colors, are not reflected in the value of TERM and so cannot be obtained from the environment. Commented Jun 12, 2012 at 21:56
4

If you are using gnome-terminal you can get the background color for any profile, in this case for the Default profile as

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

then you can decide how to set your prompt accordingly.

3

With xterm, you can query the background color with the \e]11;?\a escape sequence. You need to read the response from the terminal. There is a xtermcontrol command that does that for you:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
1
  • The same works in gnome-terminal and probably some other terminal emulators too (but definitely not all of them).
    – egmont
    Commented Apr 22, 2015 at 11:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .