diff --git a/lib/renderers/__init__.py b/lib/renderers/__init__.py index f5539bca..3c7c2387 100644 --- a/lib/renderers/__init__.py +++ b/lib/renderers/__init__.py @@ -3,4 +3,5 @@ class SegmentRenderer: raise NotImplementedError from lib.renderers.terminal import TerminalSegmentRenderer +from lib.renderers.tmux import TmuxSegmentRenderer from lib.renderers.vim import VimSegmentRenderer diff --git a/lib/renderers/tmux.py b/lib/renderers/tmux.py new file mode 100644 index 00000000..07db9ff1 --- /dev/null +++ b/lib/renderers/tmux.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python + +from lib.core import Powerline +from lib.renderers import SegmentRenderer + + +class TmuxSegmentRenderer(SegmentRenderer): + '''Powerline tmux segment renderer. + ''' + def hl(self, fg=None, bg=None, attr=None): + '''Highlight a segment. + ''' + tmux_attr = [] + + if fg is not None: + tmux_attr += ['fg=colour' + str(fg[0])] + + if bg is not None: + tmux_attr += ['bg=colour' + str(bg[0])] + + if attr is not None: + if attr is False: + tmux_attr += ['nobold', 'noitalics', 'nounderscore'] + else: + if attr & Powerline.ATTR_BOLD: + tmux_attr += ['bold'] + else: + tmux_attr += ['nobold'] + if attr & Powerline.ATTR_ITALIC: + tmux_attr += ['italics'] + else: + tmux_attr += ['noitalics'] + if attr & Powerline.ATTR_UNDERLINE: + tmux_attr += ['underscore'] + else: + tmux_attr += ['nounderscore'] + + return '#[' + ','.join(tmux_attr) + ']'