Xterm is configured via X resources. This is how you might configure it for white on black, with a lighter blue than the default (adjust the color as you see fit, obviously):
XTerm.VT100.background: Black
XTerm.VT100.color0: Black
XTerm.VT100.color1: Red
XTerm.VT100.color2: Green
XTerm.VT100.color3: Yellow
XTerm.VT100.color4: CornflowerBlue
XTerm.VT100.color5: Magenta
XTerm.VT100.color6: Cyan
XTerm.VT100.color7: White
XTerm.VT100.colorBD: White
XTerm.VT100.colorBDMode: true
XTerm.VT100.colorUL: Yellow
XTerm.VT100.colorULMode: true
XTerm.VT100.cursorColor: Red
XTerm.VT100.foreground: White
You can use X color names (you can see all the color names with xcolors
or in a file called rgb.txt
which may be somewhere under /etc/X11
, /usr/X11
or /usr/share/X11
or some similar location depending on your system) or #RRGGBB
. colorBD
is the color used for bold; with colorBDMode
set to false
(the default), this setting is ignored and bold text is displayed in a bold font. The same goes for colorUL
, colorULMode
and underline. You can go beyond color8
(up to color255
, or less depending on the xterm version and compile-time configuration). color8
through color15
correspond to 0–7 with bold; colors beyond 16 are rarely used by applications unless you've explicitly configured them.
Put these settings into a file called ~/.Xdefaults
. Most systems load this file automatically when you log in. If yours doesn't, add this command to your X startup script:
xrdb -merge ~/.Xdefaults
To test the appearance of foreground color 42 over background color 17, run this in a shell in that terminal:
printf '\033[38;5;%dm\033[48;5;%dm%s\033[0m\n' 42 17 "Hello, world."
If your xterm is compiled without extended color support, you'll need to use the classical control sequences:
printf '\033[3%dm\033[4%dm%s\033[0m\n' 4 1 "Hello, world."
The foreground and background color must be in the range 0–7 in that case. If your xterm is compiled with 16-color support, replace [3
and [4
by [9
and [10
respectively to select the bright versions (colors 8–15).
The TERM
environment variable is a way that you, the user,
can tell programs (e.g., emacs
, grep
, less
, ls
, and vim
)
what kind of terminal they are running on, so they will know its parameters, including what capabilities it has and what escape sequences they need to issue to access them. This exists because it’s too hard, in general,
for the software to determine this for itself
(and was pretty much impossible when users interfaced
with computers through terminals that were external,
and only connected to the computer by a data cable).
gnome-terminal
is a program that provides terminal-like services
to the user and the programs that the user runs within the terminal.
gnome-terminal
may be aware of environment variables
that were set in its environment,
before it was invoked (DISPLAY
being the obvious example),
but it has no knowledge of environment variables that are set
in in the processes that are running under it.
So, gnome-terminal
has whatever capabilities it has.
It may be possible to adjust/constrain these externally,
e.g., through command-line options, the pre-existing environment,
configuration files, and dialogs in the window frame,
but not by changing TERM
in the shell in the window.
If it’s capable of displaying 256 colors,
then it’s capable of displaying 256 colors,
and you will be able to cause it to do so
by sending it the appropriate escape sequences.
But, as long as you have TERM
set to xterm
,
the programs that you run will believe that you are telling them
that they are running in an eight-color-capable terminal,
and so they will restrict their requests (escape sequences)
to those capabilities.
You need to set TERM
to xterm-256color
,
not to enable gnome-terminal
to display 256 colors,
but to tell programs like grep
and ls
to ask it
to use more than 8 colors.
Best Answer
According to the PuTTY user manual this should be enabled by default:
If you are looking to use 256 colours in a specific application, like Vim or Emacs, there are separate guides for how to achieve that: