From 3655bbde7e8941db58bf17f6404a8121444d7cd9 Mon Sep 17 00:00:00 2001 From: Ultrabug Date: Sun, 21 Dec 2014 20:06:00 +0100 Subject: normalize module name, add standalone test code --- py3status/modules/window-title.py | 61 --------------------------------- py3status/modules/window_title.py | 71 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 61 deletions(-) delete mode 100644 py3status/modules/window-title.py create mode 100644 py3status/modules/window_title.py diff --git a/py3status/modules/window-title.py b/py3status/modules/window-title.py deleted file mode 100644 index 260cb0d..0000000 --- a/py3status/modules/window-title.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -""" -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 -""" - -import i3 -from time import time - - -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: - - # available configuration parameters - cache_timeout = 0.5 - max_width = 120 # if width of title is greater, shrink it and add '...' - - def __init__(self): - self.text = '' - - def window_title(self, i3s_output_list, i3s_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']) > self.max_width - and "..." + window['name'][-(self.max_width-3):] - or window['name'] - ) - transformed = True - - response = { - 'cached_until': time() + self.cache_timeout, - 'full_text': self.text, - 'transformed': transformed - } - return response diff --git a/py3status/modules/window_title.py b/py3status/modules/window_title.py new file mode 100644 index 0000000..e971722 --- /dev/null +++ b/py3status/modules/window_title.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +""" +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 +""" + +import i3 +from time import time + + +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: + + # available configuration parameters + cache_timeout = 0.5 + max_width = 120 # if width of title is greater, shrink it and add '...' + + def __init__(self): + self.text = '' + + def window_title(self, i3s_output_list, i3s_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']) > self.max_width + and "..." + window['name'][-(self.max_width-3):] + or window['name'] + ) + transformed = True + + response = { + 'cached_until': time() + self.cache_timeout, + 'full_text': self.text, + 'transformed': transformed + } + return response + +if __name__ == "__main__": + """ + Test this module by calling it directly. + """ + from time import sleep + x = Py3status() + while True: + print(x.window_title([], {})) + sleep(1) -- cgit v1.3