17

I recently installed GNU screen on a machine I ssh into. How do I get GNU screen to use 256 colors?

So far, I've tried adding the following to my .screenrc:

term screen-256color

and

attrcolor b ".I"    # allow bold colors - necessary for some reason
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'   # tell screen how to set colors. AB = background, AF=foreground
defbce on    # use current bg color for erased chars

but neither worked.

In the login shell, before I start screen, when I run this script, which prints 256 colors, I get normal output. When I use the command tput colors I get the output 8.

When I start screen and run the script, I get 16 colors mapped to 256 colors - there are large blocks of solid color. When I run tput colors I get 256 (when term screen-256color is in my .screenrc).

edit: I got it to work - I didn't configure screen with the --enable-colors256 option.

jokerdino
  • 41,320
Scott
  • 271
  • 1
  • 2
  • 5

2 Answers2

16

I personally put it in ~/.bashrc

export TERM=xterm-256color

If that does not work, what terminal are you using ?

Panther
  • 102,067
  • 1
    This is what fixed it for me. Need this in ~/.bashrc and the 3 lines listed in the original question for attrcolor, termcapinfo and defbce in the .screenrc. Thanks. – Matthew Apr 24 '13 at 16:43
  • This worked. But adding the other stuff to ~/.screenrc makes everything output escape sequences instead of colors, like some sort of alien terminal. – trusktr Jul 09 '14 at 00:55
  • This should be the accepted answer. Fixed an annoying bug I never got round to for ages. – John Von Neumann Jul 17 '19 at 04:16
  • 1
    .bashrc is a wrong place for setting TERM variable. See http://jdebp.eu./Softwares/nosh/guide/TERM.html#MIS-CONFIGURATION – Arusekk Apr 04 '20 at 18:21
11

If you built screen from source you'll need to recompile it with the 256 color flag enabled. Run ./configure --enable-colors256 && make && sudo make install

Tyler
  • 111