Search code examples
linuxemacscolorsxterm

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?


Solution

  • 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