diff options
author | Maximilian Hils <git@maximilianhils.com> | 2017-10-24 14:36:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-24 14:36:46 +0200 |
commit | 964eadeacf41864223eb1e13e44f61fc1df40d48 (patch) | |
tree | a433534a6ce91f519d3ca50b2b5dd215142fdcc4 | |
parent | c7d14ef4e588e2f2ed3bcff78b6e9ea5366edb90 (diff) | |
parent | 3d66ebd526b3d488e8c91bf32938c82f788b42d0 (diff) | |
download | mitmproxy-964eadeacf41864223eb1e13e44f61fc1df40d48.tar.gz mitmproxy-964eadeacf41864223eb1e13e44f61fc1df40d48.tar.bz2 mitmproxy-964eadeacf41864223eb1e13e44f61fc1df40d48.zip |
Merge pull request #2603 from mhils/wsl
Fix urwid display on WSL
-rw-r--r-- | mitmproxy/tools/console/common.py | 6 | ||||
-rw-r--r-- | mitmproxy/tools/console/master.py | 2 | ||||
-rw-r--r-- | mitmproxy/tools/console/window.py | 13 |
3 files changed, 19 insertions, 2 deletions
diff --git a/mitmproxy/tools/console/common.py b/mitmproxy/tools/console/common.py index de024d1a..47a30272 100644 --- a/mitmproxy/tools/console/common.py +++ b/mitmproxy/tools/console/common.py @@ -1,9 +1,13 @@ +import platform + import urwid import urwid.util from functools import lru_cache from mitmproxy.utils import human +# Detect Windows Subsystem for Linux +IS_WSL = "Microsoft" in platform.platform() METHOD_OPTIONS = [ ("get", "g"), @@ -90,7 +94,7 @@ def fcol(s, attr): ) -if urwid.util.detected_encoding: +if urwid.util.detected_encoding and not IS_WSL: SYMBOL_REPLAY = u"\u21ba" SYMBOL_RETURN = u"\u2190" SYMBOL_MARK = u"\u25cf" diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py index 0d9dee9b..4c7f9cc1 100644 --- a/mitmproxy/tools/console/master.py +++ b/mitmproxy/tools/console/master.py @@ -176,7 +176,7 @@ class ConsoleMaster(master.Master): "Please run mitmproxy in an interactive shell environment.", file=sys.stderr) sys.exit(1) - self.ui = urwid.raw_display.Screen() + self.ui = window.Screen() self.ui.set_terminal_properties(256) self.set_palette(self.options, None) self.options.subscribe( diff --git a/mitmproxy/tools/console/window.py b/mitmproxy/tools/console/window.py index 6145b645..c6ff78f8 100644 --- a/mitmproxy/tools/console/window.py +++ b/mitmproxy/tools/console/window.py @@ -1,4 +1,7 @@ +import re + import urwid +from mitmproxy.tools.console import common from mitmproxy.tools.console import signals from mitmproxy.tools.console import statusbar from mitmproxy.tools.console import flowlist @@ -274,3 +277,13 @@ class Window(urwid.Frame): k = fs.keypress(size, k) if k: return self.master.keymap.handle(fs.keyctx, k) + + +class Screen(urwid.raw_display.Screen): + + def write(self, data): + if common.IS_WSL: + # replace urwid's SI/SO, which produce artifacts under WSL. + # at some point we may figure out what they actually do. + data = re.sub("[\x0e\x0f]", "", data) + super().write(data) |