Source code for powerline.segments.i3wm

# vim:fileencoding=utf-8:noet
from __future__ import (unicode_literals, division, absolute_import, print_function)

from powerline.theme import requires_segment_info


conn = None


def calcgrp(w):
	group = []
	if w['focused']:
		group.append('w_focused')
	if w['urgent']:
		group.append('w_urgent')
	if w['visible']:
		group.append('w_visible')
	group.append('workspace')
	return group


[docs]def workspaces(pl, only_show=None, output=None, strip=0): '''Return list of used workspaces :param list only_show: Specifies which workspaces to show. Valid entries are ``"visible"``, ``"urgent"`` and ``"focused"``. If omitted or ``null`` all workspaces are shown. :param str output: If specified, only workspaces on this output are shown. :param int strip: Specifies how many characters from the front of each workspace name should be stripped (e.g. to remove workspace numbers). Defaults to zero. Highlight groups used: ``workspace`` or ``w_visible``, ``workspace`` or ``w_focused``, ``workspace`` or ``w_urgent``. ''' global conn if not conn: try: import i3ipc except ImportError: import i3 as conn else: conn = i3ipc.Connection() return [{ 'contents': w['name'][min(len(w['name']), strip):], 'highlight_groups': calcgrp(w) } for w in conn.get_workspaces() if (not only_show or any(w[typ] for typ in only_show)) and (not output or w['output'] == output) ]
@requires_segment_info
[docs]def mode(pl, segment_info, names={'default': None}): '''Returns current i3 mode :param dict names: Specifies the string to show for various modes. Use ``null`` to hide a mode (``default`` is hidden by default). Highligh groups used: ``mode`` ''' mode = segment_info['mode'] if mode in names: return names[mode] return mode