Merge pull request #42 from dylanaraps/wallpaper

export: Add wallpaper to export files.
This commit is contained in:
Dylan Araps 2017-07-10 00:09:11 +10:00 committed by GitHub
commit a6f99791ce
13 changed files with 74 additions and 40 deletions

View File

@ -89,13 +89,8 @@ def process_args(args):
# -i
if args.i:
image_file = image.get_image(args.i)
# Create a list of hex colors.
colors_plain = magic.get_colors(image_file, args.q)
if not args.n:
wallpaper.set_wallpaper(image_file)
# -f
elif args.f:
colors_plain = util.read_file_json(args.f)
@ -103,6 +98,10 @@ def process_args(args):
# -i or -f
if args.i or args.f:
sequences.send_sequences(colors_plain, args.t)
if not args.n:
wallpaper.set_wallpaper(colors_plain["wallpaper"])
export.export_all_templates(colors_plain)
reload.reload_env()

View File

@ -35,7 +35,9 @@ def export_all_templates(colors, template_dir=None, output_dir=CACHE_DIR):
# Merge all colors (specials and normals) into one dict so we can access
# their values simpler.
all_colors = {**colors["special"], **colors["colors"]}
all_colors = {"wallpaper": colors["wallpaper"],
**colors["special"],
**colors["colors"]}
# Turn all those colors into util.Color instances for accessing the
# .hex and .rgb formats

View File

@ -75,7 +75,7 @@ def get_colors(img, quiet):
# Generate the colors.
colors = gen_colors(img)
colors = sort_colors(colors)
colors = sort_colors(img, colors)
# Cache the colorscheme.
util.save_file_json(colors, cache_file)
@ -87,27 +87,29 @@ def get_colors(img, quiet):
return colors
def sort_colors(colors):
def sort_colors(img, colors):
"""Sort the generated colors and store them in a dict that
we will later save in json format."""
raw_colors = colors[:1] + colors[9:] + colors[8:]
# Wallpaper.
colors = {"wallpaper": img}
# Special colors.
colors_special = {}
colors_special.update({"background": raw_colors[0]})
colors_special.update({"foreground": raw_colors[15]})
colors_special.update({"cursor": raw_colors[15]})
# Colors 0-15
# Colors 0-15.
colors_hex = {}
[colors_hex.update({f"color{index}": color}) # pylint: disable=W0106
for index, color in enumerate(raw_colors)]
# Color 8
# Color 8.
colors_hex["color8"] = util.set_grey(raw_colors)
# Add the colors to a dict.
colors = {}
colors["special"] = colors_special
colors["colors"] = colors_hex

View File

@ -1,9 +1,14 @@
/* CSS variables
Generated by 'wal' */
:root {{
--wallpaper: "{wallpaper}";
/* Special */
--background: {background};
--foreground: {foreground};
--cursor: {cursor};
/* Colors */
--color0: {color0};
--color1: {color1};
--color2: {color2};

View File

@ -1,4 +1,6 @@
{{
"wallpaper": "{wallpaper}",
"special": {{
"background": "{background}",
"foreground": "{foreground}",

View File

@ -1,8 +1,13 @@
// SCSS Variables
// Generated by 'wal'
$wallpaper: "{wallpaper}";
// Special
$background: {background};
$foreground: {foreground};
$cursor: {cursor};
// Colors
$color0: {color0};
$color1: {color1};
$color2: {color2};

View File

@ -1,8 +1,13 @@
# Shell variables
# Generated by 'wal'
wallpaper='{wallpaper}'
# Special
background='{background}'
foreground='{foreground}'
cursor='{cursor}'
# Colors
color0='{color0}'
color1='{color1}'
color2='{color2}'

View File

@ -54,6 +54,11 @@ def read_file_json(input_file):
"""Read data from a json file."""
with open(input_file) as json_file:
data = json.load(json_file)
# If wallpaper is unset, set it to "None"
if "wallpaper" not in data:
data["wallpaper"] = "None"
return data

View File

@ -82,6 +82,9 @@ def set_desktop_wallpaper(desktop, img):
def set_wallpaper(img):
"""Set the wallpaper."""
if not os.path.isfile(img):
return
desktop = get_desktop_env()
if desktop:

View File

@ -27,9 +27,9 @@ class TestExportColors(unittest.TestCase):
self.assertTrue(result)
content = pathlib.Path("/tmp/test_template").read_text()
self.assertEqual(content, '\n'.join(["test1 #3A5130",
"test2 #3A5130",
"test3 58,81,48", ""]))
self.assertEqual(content, '\n'.join(["test1 #1F211E",
"test2 #1F211E",
"test3 31,33,30", ""]))
if __name__ == "__main__":

View File

@ -1,26 +1,27 @@
{
"special": {
"background":"#3A5130",
"foreground":"#FAF9F5",
"cursor":"#FAF9F5"
},
"wallpaper": "5.png",
"special": {
"background": "#1F211E",
"foreground": "#F5F1F4",
"cursor": "#F5F1F4"
},
"colors": {
"color0":"#3A5130",
"color1":"#E3A19D",
"color2":"#E1CEAE",
"color3":"#D6DDCC",
"color4":"#F1D2CB",
"color5":"#F5E9D6",
"color6":"#F9F0E5",
"color7":"#FAF9F5",
"color8":"#999999",
"color9":"#E3A19D",
"color10":"#E1CEAE",
"color11":"#D6DDCC",
"color12":"#F1D2CB",
"color13":"#F5E9D6",
"color14":"#F9F0E5",
"color15":"#FAF9F5"
"color0": "#1F211E",
"color1": "#4B7A85",
"color2": "#CC6A93",
"color3": "#5C9894",
"color4": "#A0A89B",
"color5": "#D1B9A9",
"color6": "#E3D6D8",
"color7": "#F5F1F4",
"color8": "#666666",
"color9": "#4B7A85",
"color10": "#CC6A93",
"color11": "#5C9894",
"color12": "#A0A89B",
"color13": "#D1B9A9",
"color14": "#E3D6D8",
"color15": "#F5F1F4"
}
}

View File

@ -15,12 +15,12 @@ class Testsequences(unittest.TestCase):
def test_set_special(self):
"""> Create special escape sequence."""
result = sequences.set_special(11, COLORS["special"]["background"])
self.assertEqual(result, "\x1b]11;#3A5130\x07")
self.assertEqual(result, "\033]11;#1F211E\007")
def test_set_color(self):
"""> Create color escape sequence."""
result = sequences.set_color(11, COLORS["colors"]["color0"])
self.assertEqual(result, "\033]4;11;#3A5130\007")
self.assertEqual(result, "\033]4;11;#1F211E\007")
if __name__ == "__main__":

View File

@ -16,7 +16,7 @@ class TestUtil(unittest.TestCase):
"""> Get grey color based on brightness of color0"""
colors = [list(COLORS["colors"].values())]
result = util.set_grey(colors[0])
self.assertEqual(result, "#999999")
self.assertEqual(result, "#666666")
def test_read_file(self):
"""> Read colors from a file."""
@ -26,12 +26,17 @@ class TestUtil(unittest.TestCase):
def test_read_file_start(self):
"""> Read colors from a file."""
result = util.read_file_json("tests/test_files/test_file.json")
self.assertEqual(result["colors"]["color0"], "#3A5130")
self.assertEqual(result["colors"]["color0"], "#1F211E")
def test_read_file_end(self):
"""> Read colors from a file."""
result = util.read_file_json("tests/test_files/test_file.json")
self.assertEqual(result["colors"]["color15"], "#FAF9F5")
self.assertEqual(result["colors"]["color15"], "#F5F1F4")
def test_read_wallpaper(self):
"""> Read wallpaper from json file."""
result = util.read_file_json("tests/test_files/test_file.json")
self.assertEqual(result["wallpaper"], "5.png")
def test_save_file(self):
"""> Save colors to a file."""