From 3c613bc1b729904883bca77924d892012b93cdc3 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 7 Apr 2013 04:18:48 +0400 Subject: [PATCH 1/4] Use xmlrpclib.escape for escaping in PangoMarkupRenderer --- powerline/renderers/pango_markup.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/powerline/renderers/pango_markup.py b/powerline/renderers/pango_markup.py index f5e85b6a..0f2cb0ac 100644 --- a/powerline/renderers/pango_markup.py +++ b/powerline/renderers/pango_markup.py @@ -3,6 +3,8 @@ from powerline.renderer import Renderer from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE +from xmlrpclib import escape as _escape + class PangoMarkupRenderer(Renderer): '''Powerline Pango markup segment renderer.''' @@ -30,5 +32,7 @@ class PangoMarkupRenderer(Renderer): awesome_attr += ['underline="single"'] return '' + contents + '' + escape = staticmethod(_escape) + renderer = PangoMarkupRenderer From b5070297414dce26c7d84bd1f76e193f9d054027 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 7 Apr 2013 04:19:45 +0400 Subject: [PATCH 2/4] Replace shell script with python one --- packages/gentoo/app-misc/powerline/Manifest | 2 +- .../app-misc/powerline/powerline-9999.ebuild | 4 +- .../bindings/awesome/powerline-awesome.py | 38 +++++++++++++++++++ powerline/bindings/awesome/powerline.lua | 4 +- powerline/bindings/awesome/powerline.sh | 10 ----- 5 files changed, 43 insertions(+), 15 deletions(-) create mode 100755 powerline/bindings/awesome/powerline-awesome.py delete mode 100755 powerline/bindings/awesome/powerline.sh diff --git a/packages/gentoo/app-misc/powerline/Manifest b/packages/gentoo/app-misc/powerline/Manifest index 802c4188..cca6d4dd 100644 --- a/packages/gentoo/app-misc/powerline/Manifest +++ b/packages/gentoo/app-misc/powerline/Manifest @@ -1 +1 @@ -EBUILD powerline-9999.ebuild 4091 SHA256 d1d13b09e3ebefdaa1b90c50ccceb563bb444ca0f484e6448a993d2612dfbb78 SHA512 47f211249bb85608cb9c5b8e72daba5c36971e294e27843396cbf517bc792db64a4f80e843f5c883f8411ed4c9cef5618f9d617b305303a31a4590636879dcd3 WHIRLPOOL 2fc50e1da46d56d160140d3a87a4d9421bf63d67c792bfd88486e0dc72d379045ed79d152aa060a014e7f6bf4eb232642463014de9523909946bd8b2cbf83371 +EBUILD powerline-9999.ebuild 4107 SHA256 721f3360196aa4caa3656ff6e051add2c70cbfc37e965fce9830ecb668148b81 SHA512 27660689e5a0cf86d17268a18fdd917abfb8b2d88b33049fe66f3394c9a85211f24e50af8df1f39d93d11e8bfd442e4636ed92821441daddb56ae9d34162296a WHIRLPOOL 602a2d0d36b1e80da9d1f00c019872369010cd413c4761c1f92a8f53ee5bfb63122d8c13e896700406bf71d99db5994bcd3c7ae46c07218d173bd7084f1a13f1 diff --git a/packages/gentoo/app-misc/powerline/powerline-9999.ebuild b/packages/gentoo/app-misc/powerline/powerline-9999.ebuild index 8eadbabb..be065566 100644 --- a/packages/gentoo/app-misc/powerline/powerline-9999.ebuild +++ b/packages/gentoo/app-misc/powerline/powerline-9999.ebuild @@ -105,11 +105,11 @@ src_install() { doins init.lua rm init.lua exeinto /usr/share/awesome/lib/powerline - doexe powerline/bindings/awesome/powerline.sh + doexe powerline/bindings/awesome/powerline-awesome.py else rm powerline/bindings/awesome/powerline.lua fi - rm powerline/bindings/awesome/powerline.sh + rm powerline/bindings/awesome/powerline-awesome.py # There are no standard location for this, thus using /usr/share/powerline if use tmux ; then elog "" diff --git a/powerline/bindings/awesome/powerline-awesome.py b/powerline/bindings/awesome/powerline-awesome.py new file mode 100755 index 00000000..c0aa7961 --- /dev/null +++ b/powerline/bindings/awesome/powerline-awesome.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8:noet + +from powerline import Powerline +import sys +from time import sleep +from powerline.lib.monotonic import monotonic +from subprocess import Popen, PIPE +from threading import Thread +from select import select + +powerline = Powerline('wm', renderer_module='pango_markup') +powerline.update_renderer() + +try: + interval = float(sys.argv[1]) +except IndexError: + interval = 2 + +def read_to_log(pl, client): + for line in client.stdout: + if line: + pl.info(line, prefix='awesome-client') + for line in client.stderr: + if line: + pl.error(line, prefix='awesome-client') + if client.wait(): + pl.error('Client exited with {0}', client.returncode, prefix='awesome') + +while True: + start_time = monotonic() + s = powerline.render(side='right') + request = "powerline_widget:set_markup('" + s.replace('\\', '\\\\').replace("'", "\\'") + "')\n" + client = Popen(['awesome-client'], shell=False, stdout=PIPE, stderr=PIPE, stdin=PIPE) + client.stdin.write(request.encode('utf-8')) + client.stdin.close() + read_to_log(powerline.pl, client) + sleep(max(interval - (monotonic() - start_time), 0.1)) diff --git a/powerline/bindings/awesome/powerline.lua b/powerline/bindings/awesome/powerline.lua index 9424a2fc..659fade4 100644 --- a/powerline/bindings/awesome/powerline.lua +++ b/powerline/bindings/awesome/powerline.lua @@ -7,5 +7,5 @@ powerline_widget:set_align('right') function powerline(mode, widget) end bindings_path = string.gsub(debug.getinfo(1).source:match('@(.*)$'), '/[^/]+$', '') -powerline_cmd = bindings_path .. '/powerline.sh' -awful.util.spawn_with_shell('ps ax -u $USER | grep "' .. powerline_cmd .. '" | grep -v grep || (' .. powerline_cmd .. ')') +powerline_cmd = bindings_path .. '/powerline-awesome.py' +awful.util.spawn_with_shell('ps -C powerline-awesome.py || ' .. powerline_cmd) diff --git a/powerline/bindings/awesome/powerline.sh b/powerline/bindings/awesome/powerline.sh deleted file mode 100755 index d068b958..00000000 --- a/powerline/bindings/awesome/powerline.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -SLEEP=2 -[[ "$1" != "" ]] && SLEEP="$1" - -while true; do - PL_AWESOME_RIGHT=$(powerline wm right -r pango_markup) - echo "powerline_widget:set_markup('$PL_AWESOME_RIGHT')" | awesome-client - sleep $SLEEP -done From 6f57a3dd63788be8980709090ab9f7c8b372b969 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 7 Apr 2013 04:30:51 +0400 Subject: [PATCH 3/4] Some fixes for flake8 --- powerline/bindings/awesome/powerline-awesome.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerline/bindings/awesome/powerline-awesome.py b/powerline/bindings/awesome/powerline-awesome.py index c0aa7961..3e4125dc 100755 --- a/powerline/bindings/awesome/powerline-awesome.py +++ b/powerline/bindings/awesome/powerline-awesome.py @@ -6,8 +6,6 @@ import sys from time import sleep from powerline.lib.monotonic import monotonic from subprocess import Popen, PIPE -from threading import Thread -from select import select powerline = Powerline('wm', renderer_module='pango_markup') powerline.update_renderer() @@ -17,6 +15,7 @@ try: except IndexError: interval = 2 + def read_to_log(pl, client): for line in client.stdout: if line: @@ -27,6 +26,7 @@ def read_to_log(pl, client): if client.wait(): pl.error('Client exited with {0}', client.returncode, prefix='awesome') + while True: start_time = monotonic() s = powerline.render(side='right') From 66cdb36231ff1192a8a2e6b15c4b8d524cfbff6d Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 7 Apr 2013 04:42:36 +0400 Subject: [PATCH 4/4] Use xml.sax.saxutils.escape in place of xmlrpclib.escape The latter is not available in python 3 --- powerline/renderers/pango_markup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerline/renderers/pango_markup.py b/powerline/renderers/pango_markup.py index 0f2cb0ac..ea1fe15e 100644 --- a/powerline/renderers/pango_markup.py +++ b/powerline/renderers/pango_markup.py @@ -3,7 +3,7 @@ from powerline.renderer import Renderer from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE -from xmlrpclib import escape as _escape +from xml.sax.saxutils import escape as _escape class PangoMarkupRenderer(Renderer):