Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I set up my Linux X terminal so that Emacs has access to 256 colors?

When I run emacs -nw in an X terminal window, and I ask for M-x list-colors-display, I am offered a paltry palette:

black                                                     
red    
green  
yellow 
blue   
magenta
cyan   
white  

I am told it is possible to get 265 colors. Setting the TERM environment variable to xterm-256color does not do the job. What does?

like image 466
Norman Ramsey Avatar asked Mar 26 '09 03:03

Norman Ramsey


2 Answers

According to this you need ncurses-term library in addition to setting TERM to xterm-256color.

Okay, this has some other things to try like :

The xterm in Ubuntu Edgy does not advertise 256 color support by
default.  To fix this you need to install a 256 color terminfo entry,
and tell xterm to use it:

    apt-get install ncurses-term
    echo XTerm.termName: xterm-256color \
      >>~/.Xdefaults
    xrdb -merge ~/.Xdefaults

and :

So you need a file term/screen-256color.el in your load-path.  Emacs
22 expects it to contain a terminal-init-screen defun.  Emacs 21
expects it to contain a bunch of top-level forms.  Here's what I use:

    ;;; This is for GNU Emacs 22
    (defun terminal-init-screen ()
      "Terminal initialization function for screen."
      ;; Use the xterm color initialization code.
      (load "term/xterm")
      (xterm-register-default-colors)
      (tty-set-up-initial-frame-faces))

    ;;; This is for GNU Emacs 21
    (if (= 21 emacs-major-version)
        (load "term/xterm-256color"))

For Emacs 21, you also need to install the xterm-256color.el file from

    http://www.splode.com/~friedman/software/emacs-lisp/src/term/xterm-256color.el
like image 67
Chas. Owens Avatar answered Nov 05 '22 11:11

Chas. Owens


Setting TERM to xterm-256color is what you want to do. Also, Emacs 22 (at least) didn't need any special config from me in order to display 256 colors. See this related question. With the ncurses-term package installed, I was able to get 256 colors on Emacs using the vanilla xterm that came with my version of Ubuntu (Interpid, in this case, but I'm guessing it'll be fine on earlier versions). I also got 256 colors using Gnome Terminal, Konsole, and PuTTY, for what that's worth.

like image 25
Jacob Gabrielson Avatar answered Nov 05 '22 13:11

Jacob Gabrielson