From 0ea7615167486ec582d22e2aff2ada420c29ca4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20Silkeb=C3=A6kken?= Date: Thu, 17 Jan 2013 20:05:42 +0100 Subject: [PATCH] Add network load tmux segment --- powerline/colorschemes/tmux/default.json | 1 + powerline/ext/tmux/segments.py | 23 +++++++++++++++++++++++ powerline/themes/tmux/default.json | 3 +++ 3 files changed, 27 insertions(+) diff --git a/powerline/colorschemes/tmux/default.json b/powerline/colorschemes/tmux/default.json index f5709f86..7c3e853a 100644 --- a/powerline/colorschemes/tmux/default.json +++ b/powerline/colorschemes/tmux/default.json @@ -18,6 +18,7 @@ "user": { "fg": "white", "bg": "mediumblue", "attr": ["bold"] }, "date": { "fg": "white", "bg": "mediumblue" }, "weather": { "fg": "brightestblue", "bg": "darkblue" }, + "network_load": { "fg": "brightestblue", "bg": "darkblue" }, "external_ip": { "fg": "brightestblue", "bg": "darkblue" }, "system_load": { "fg": "brightblue", "bg": "darkestblue" }, "system_load_good": { "fg": "green", "bg": "darkestblue" }, diff --git a/powerline/ext/tmux/segments.py b/powerline/ext/tmux/segments.py index 4d0bdfe1..730a4706 100644 --- a/powerline/ext/tmux/segments.py +++ b/powerline/ext/tmux/segments.py @@ -88,3 +88,26 @@ def weather(unit='c', location_query=None): if condition_code in codes: break return u'{0} {1}°{2}'.format(icon, condition['temp'], unit.upper()) + + +def network_load(interface='eth0', measure_interval=1, suffix='B/s', binary_prefix=False): + import time + from powerline.lib import humanize_bytes + + def get_bytes(): + try: + with open('/sys/class/net/{interface}/statistics/rx_bytes'.format(interface=interface), 'rb') as file_obj: + rx = int(file_obj.read()) + with open('/sys/class/net/{interface}/statistics/tx_bytes'.format(interface=interface), 'rb') as file_obj: + tx = int(file_obj.read()) + return (rx, tx) + except IOError: + return (0, 0) + + b1 = get_bytes() + time.sleep(measure_interval) + b2 = get_bytes() + return u'⬇ {rx_diff} ⬆ {tx_diff}'.format( + rx_diff=humanize_bytes((b2[0] - b1[0]) / measure_interval, suffix, binary_prefix), + tx_diff=humanize_bytes((b2[1] - b1[1]) / measure_interval, suffix, binary_prefix), + ) diff --git a/powerline/themes/tmux/default.json b/powerline/themes/tmux/default.json index 22fc70fc..6a468d23 100644 --- a/powerline/themes/tmux/default.json +++ b/powerline/themes/tmux/default.json @@ -9,6 +9,9 @@ "name": "external_ip", "before": "ⓦ " }, + { + "name": "network_load" + }, { "name": "uptime", "before": "⇑ "