aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-04-07 10:01:18 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-04-07 10:01:18 +1200
commitf6a3bd15b3b8c3d30abf6e5209e10cff3c4784e0 (patch)
tree09c6140ab5e1e57166897ae0f3142e6d834bbed0 /libmproxy
parent1cb1ee411b9c8ffc40f83bcca99770af7f43a521 (diff)
downloadmitmproxy-f6a3bd15b3b8c3d30abf6e5209e10cff3c4784e0.tar.gz
mitmproxy-f6a3bd15b3b8c3d30abf6e5209e10cff3c4784e0.tar.bz2
mitmproxy-f6a3bd15b3b8c3d30abf6e5209e10cff3c4784e0.zip
console: All palettes now explicitly set a background colour
There's a new option --palette-transparent to turn this off if you want to use your own terminal background.
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/cmdline.py5
-rw-r--r--libmproxy/console/__init__.py4
-rw-r--r--libmproxy/console/palettes.py50
-rw-r--r--libmproxy/console/window.py9
-rw-r--r--libmproxy/main.py1
5 files changed, 53 insertions, 16 deletions
diff --git a/libmproxy/cmdline.py b/libmproxy/cmdline.py
index 51ecea15..7ea9be8c 100644
--- a/libmproxy/cmdline.py
+++ b/libmproxy/cmdline.py
@@ -581,6 +581,11 @@ def mitmproxy():
help="Select color palette: " + ", ".join(palettes.palettes.keys())
)
parser.add_argument(
+ "--palette-transparent",
+ action="store_true", dest="palette_transparent", default=False,
+ help="Set transparent background for palette."
+ )
+ parser.add_argument(
"-e", "--eventlog",
action="store_true", dest="eventlog",
help="Show event log."
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py
index 1fdf503a..804f73bc 100644
--- a/libmproxy/console/__init__.py
+++ b/libmproxy/console/__init__.py
@@ -132,6 +132,7 @@ class Options(object):
"wfile",
"nopop",
"palette",
+ "palette_transparent"
]
def __init__(self, **kwargs):
@@ -183,6 +184,7 @@ class ConsoleMaster(flow.FlowMaster):
self.nopop = options.nopop
self.showhost = options.showhost
self.palette = options.palette
+ self.palette_transparent = options.palette_transparent
self.eventlog = options.eventlog
self.eventlist = urwid.SimpleListWalker([])
@@ -393,7 +395,7 @@ class ConsoleMaster(flow.FlowMaster):
def set_palette(self, name):
self.palette = name
self.ui.register_palette(
- palettes.palettes[name].palette()
+ palettes.palettes[name].palette(self.palette_transparent)
)
self.ui.clear()
diff --git a/libmproxy/console/palettes.py b/libmproxy/console/palettes.py
index a6ad3f45..52d7ab8f 100644
--- a/libmproxy/console/palettes.py
+++ b/libmproxy/console/palettes.py
@@ -1,4 +1,3 @@
-
# Low-color themes should ONLY use the standard foreground and background
# colours listed here:
#
@@ -6,9 +5,9 @@
#
-
class Palette:
_fields = [
+ 'background',
'title',
# Status bar & heading
@@ -35,15 +34,33 @@ class Palette:
]
high = None
- def palette(self):
+ def palette(self, transparent):
l = []
+ highback, lowback = None, None
+ if not transparent:
+ if self.high and self.high.get("background"):
+ highback = self.high["background"][1]
+ lowback = self.low["background"][1]
+
for i in self._fields:
- v = [i]
- v.extend(self.low[i])
- if self.high and i in self.high:
- v.append(None)
- v.extend(self.high[i])
- l.append(tuple(v))
+ if transparent and i == "background":
+ l.append(["background", "default", "default"])
+ else:
+ v = [i]
+ low = list(self.low[i])
+ if lowback and low[1] == "default":
+ low[1] = lowback
+ v.extend(low)
+ if self.high and i in self.high:
+ v.append(None)
+ high = list(self.high[i])
+ if highback and high[1] == "default":
+ high[1] = highback
+ v.extend(high)
+ elif highback:
+ high = [None, low[0], highback]
+ v.extend(high)
+ l.append(tuple(v))
return l
@@ -52,6 +69,7 @@ class LowDark(Palette):
Low-color dark background
"""
low = dict(
+ background = ('white', 'black'),
title = ('white,bold', 'default'),
# Status bar & heading
@@ -110,6 +128,7 @@ class LowLight(Palette):
Low-color light background
"""
low = dict(
+ background = ('black', 'white'),
title = ('dark magenta', 'default'),
# Status bar & heading
@@ -158,6 +177,7 @@ class LowLight(Palette):
class Light(LowLight):
high = dict(
+ background = ('black', 'g100'),
heading = ('g99', '#08f'),
heading_key = ('#0ff,bold', '#08f'),
heading_inactive = ('g35', 'g85'),
@@ -171,10 +191,10 @@ sol_base03 = "h234"
sol_base02 = "h235"
sol_base01 = "h240"
sol_base00 = "h241"
-sol_base0 = "h244"
-sol_base1 = "h245"
-sol_base2 = "h254"
-sol_base3 = "h230"
+sol_base0 = "h244"
+sol_base1 = "h245"
+sol_base2 = "h254"
+sol_base3 = "h230"
sol_yellow = "h136"
sol_orange = "h166"
sol_red = "h160"
@@ -183,8 +203,11 @@ sol_violet = "h61"
sol_blue = "h33"
sol_cyan = "h37"
sol_green = "h64"
+
+
class SolarizedLight(LowLight):
high = dict(
+ background = (sol_base00, sol_base3),
title = (sol_cyan, 'default'),
text = (sol_base00, 'default'),
@@ -233,6 +256,7 @@ class SolarizedLight(LowLight):
class SolarizedDark(LowDark):
high = dict(
+ background = (sol_base2, sol_base03),
title = (sol_blue, 'default'),
text = (sol_base1, 'default'),
diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py
index af9da81f..d64e83df 100644
--- a/libmproxy/console/window.py
+++ b/libmproxy/console/window.py
@@ -1,10 +1,15 @@
import urwid
-from . import grideditor, signals, contentview
+from . import signals
class Window(urwid.Frame):
def __init__(self, master, body, header, footer, helpctx):
- urwid.Frame.__init__(self, body, header=header, footer=footer)
+ urwid.Frame.__init__(
+ self,
+ urwid.AttrWrap(body, "background"),
+ header = urwid.AttrWrap(header, "background") if header else None,
+ footer = urwid.AttrWrap(footer, "background") if footer else None
+ )
self.master = master
self.helpctx = helpctx
signals.focus.connect(self.sig_focus)
diff --git a/libmproxy/main.py b/libmproxy/main.py
index e5b7f56b..7d22b48c 100644
--- a/libmproxy/main.py
+++ b/libmproxy/main.py
@@ -89,6 +89,7 @@ def mitmproxy(): # pragma: nocover
proxy_config = process_proxy_options(parser, options)
console_options = console.Options(**cmdline.get_common_options(options))
console_options.palette = options.palette
+ console_options.palette_transparent = options.palette_transparent
console_options.eventlog = options.eventlog
console_options.intercept = options.intercept