[Urwid] How to use ANSI color sequences with urwid?

Ian Ward ian at excess.org
Thu Aug 14 13:49:45 EDT 2008


Friedrich Weber wrote:
> Hello,
> 
> is it possible to use ansi color escape sequences (like "\033[31m") in urwid
> Text widgets? I'd like to use pygments console output formatter for syntax
> highlighting.
> 

Not directly.  You would have to convert that to Urwid's text markup
format, eg:

"\033[31mFOO \033[0mBAR" might become: [('attrname', "FOO "), "BAR"]

where 'attrname' is set up as one of the palette entries in your Screen
class.. something like:

    source = "\033[31mFOO\033 [0mBAR"
    table = {"[31":'bluefg', "[0":'default'}
    markup = []
    for at in source.split("\033")[1:]:
        attr, text = at.split("m",1)
        markup.append((table[attr], text))

It might be convenient to subclass urwid.Text to make a class that takes
text formatted by pygments.

Ian




More information about the Urwid mailing list