diff options
| author | Ian Ward <ian@excess.org> | 2015-11-01 19:30:40 -0500 |
|---|---|---|
| committer | Ian Ward <ian@excess.org> | 2015-11-01 19:30:40 -0500 |
| commit | 1af52f86dd32da343fe6284c02ba2fae6e69ba2d (patch) | |
| tree | 80adf4e99b3f184391ed5ec043af2db1e4dacae3 | |
| parent | a5c693aedb1e20dd49d3b1395c4896c2976c41b7 (diff) | |
| parent | 9c734df4335f6f4e111d696109648e0cefa8542f (diff) | |
| download | urwid-1af52f86dd32da343fe6284c02ba2fae6e69ba2d.tar.gz | |
Merge pull request #158 from benjamin9999/fbterm
256-color support for fbterm
| -rw-r--r-- | urwid/raw_display.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/urwid/raw_display.py b/urwid/raw_display.py index b304709..84ec81d 100644 --- a/urwid/raw_display.py +++ b/urwid/raw_display.py @@ -59,7 +59,6 @@ class Screen(BaseScreen, RealTerminal): self._on_update_palette_entry) self.colors = 16 # FIXME: detect this self.has_underline = True # FIXME: detect this - self.register_palette_entry( None, 'default','default') self._keyqueue = [] self.prev_input_resize = 0 self.set_input_timeouts() @@ -74,10 +73,11 @@ class Screen(BaseScreen, RealTerminal): self._setup_G1_done = False self._rows_used = None self._cy = 0 - term = os.environ.get('TERM', '') - self.fg_bright_is_bold = not term.startswith("xterm") - self.bg_bright_is_blink = (term == "linux") - self.back_color_erase = not term.startswith("screen") + self.term = os.environ.get('TERM', '') + self.fg_bright_is_bold = not self.term.startswith("xterm") + self.bg_bright_is_blink = (self.term == "linux") + self.back_color_erase = not self.term.startswith("screen") + self.register_palette_entry( None, 'default','default') self._next_timeout = None # Our connections to the world @@ -914,6 +914,11 @@ class Screen(BaseScreen, RealTerminal): >>> a2e(s.AttrSpec('#fea,underline', '#d0d')) '\\x1b[0;38;5;229;4;48;5;164m' """ + if self.term == 'fbterm': + fg = escape.ESC + '[1;%d}' % (a.foreground_number,) + bg = escape.ESC + '[2;%d}' % (a.background_number,) + return fg + bg + if a.foreground_high: fg = "38;5;%d" % a.foreground_number elif a.foreground_basic: @@ -1011,9 +1016,14 @@ class Screen(BaseScreen, RealTerminal): 0 <= red, green, blue < 256 """ - modify = ["%d;rgb:%02x/%02x/%02x" % (index, red, green, blue) - for index, red, green, blue in entries] - self.write("\x1b]4;"+";".join(modify)+"\x1b\\") + if self.term == 'fbterm': + modify = ["%d;%d;%d;%d" % (index, red, green, blue) + for index, red, green, blue in entries] + self.write("\x1b[3;"+";".join(modify)+"}") + else: + modify = ["%d;rgb:%02x/%02x/%02x" % (index, red, green, blue) + for index, red, green, blue in entries] + self.write("\x1b]4;"+";".join(modify)+"\x1b\\") self.flush() |
