bumblebee-status/bumblebee/modules/title.py
Tobias Witek ecbde508d2 [modules/title] Python < 3.4 compatibility
Replace textwrap.shorten() with custom implementation, since it is only
available since Python 3.4. While at it, catch i3 exceptions in order to
make unit tests (hopefully) run through.

Also, Updated README.md

see #174
2017-09-15 20:02:07 +02:00

47 lines
1.2 KiB
Python

# pylint: disable=C0111,R0903
"""Displays focused i3 window title.
Requirements:
* i3ipc
Parameters:
* title.max : Maximum character length for title before truncating. Defaults to 64.
* title.placeholder : Placeholder text to be placed if title was truncated. Defaults to "...".
"""
try:
import i3ipc
except ImportError:
pass
import bumblebee.util
import bumblebee.input
import bumblebee.output
import bumblebee.engine
class Module(bumblebee.engine.Module):
"""Window title module."""
def __init__(self, engine, config):
super(Module, self).__init__(
engine,
config,
bumblebee.output.Widget(full_text=self.focused_title)
)
self._i3 = i3ipc.Connection()
self._full_title = self._i3.get_tree().find_focused().name
def focused_title(self, widget):
title = self._full_title[0:self.parameter("max", 64)]
if title != self._full_title:
title = self._full_title[0:self.parameter("max", 64) - 3]
title = "{}...".format(title)
return title
def update(self, widgets):
"""Update current title."""
self._full_title = self._i3.get_tree().find_focused().name
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4