diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/current-title.py | 52 | ||||
| -rw-r--r-- | modules/window-title.py | 58 |
2 files changed, 58 insertions, 52 deletions
diff --git a/modules/current-title.py b/modules/current-title.py deleted file mode 100644 index 530908f..0000000 --- a/modules/current-title.py +++ /dev/null @@ -1,52 +0,0 @@ -import i3 -import time - -""" -Py3status plugin - shows current window title. - -DEPENDENCIES: Depends on i3-py: - # pip install i3-py - -If payload from server contains wierd utf-8 (for example one window have something bad in title) - plugin will give empty output UNTIL this window will be closed. I can't fix or workaround that in PLUGIN, problem is in i3-py library. - -@author shadowprince -@version 1.0 -@license Eclipse Public License -""" - -POSITION = 0 -MAX_WIDTH = 120 # if width of title is greater, shrink it and add ... -CACHED_TIME = 0.5 # maximum time to update indicator - -def find_focused(tree): - if type(tree) == list: - for el in tree: - res = find_focused(el) - if res: - return res - - elif type(tree) == dict: - if tree["focused"]: - return tree - else: - return find_focused(tree["nodes"] + tree["floating_nodes"]) - -class Py3status: - def __init__(self, *args, **kwargs): - self.text = "" - super(Py3status).__init__(*args, **kwargs) - - def currentTitle(self, i3_status_output_json, i3status_config): - window = find_focused(i3.get_tree()) - - transformed = False - if window and "name" in window and window["name"] != self.text: - self.text = len(window["name"]) > MAX_WIDTH and "..." + window["name"][-(MAX_WIDTH-3):] or window["name"] - transformed = True - - return (POSITION, { - 'full_text': self.text, - 'transformed': transformed, - 'name': 'current-title', - 'cached_until': time.time() + CACHED_TIME, - }) diff --git a/modules/window-title.py b/modules/window-title.py new file mode 100644 index 0000000..4f6f062 --- /dev/null +++ b/modules/window-title.py @@ -0,0 +1,58 @@ +import i3 +from time import time + +""" +Py3status plugin - shows current window title. + +Requires: + - i3-py (https://github.com/ziberna/i3-py) + # pip install i3-py + +If payload from server contains wierd utf-8 +(for example one window have something bad in title) - the plugin will +give empty output UNTIL this window is closed. +I can't fix or workaround that in PLUGIN, problem is in i3-py library. + +@author shadowprince +@license Eclipse Public License +""" + +CACHE_TIMEOUT = 0.5 # maximum time to update indicator +MAX_WIDTH = 120 # if width of title is greater, shrink it and add '...' +POSITION = 0 + + +def find_focused(tree): + if type(tree) == list: + for el in tree: + res = find_focused(el) + if res: + return res + + elif type(tree) == dict: + if tree['focused']: + return tree + else: + return find_focused(tree['nodes'] + tree['floating_nodes']) + + +class Py3status: + def __init__(self): + self.text = '' + + def window_title(self, i3_status_output_json, i3status_config): + window = find_focused(i3.get_tree()) + + transformed = False + if window and 'name' in window and window['name'] != self.text: + self.text = len(window['name']) > MAX_WIDTH and "..." + window['name'][-(MAX_WIDTH-3):] or window['name'] + transformed = True + + response = { + 'cached_until': time() + CACHE_TIMEOUT, + 'full_text': self.text, + 'name': 'window-title', + 'transformed': transformed + } + + return (POSITION, response) |
