Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge branch 'master' of github.com:dylanaraps/wal.py
Browse files Browse the repository at this point in the history
  • Loading branch information
dylanaraps committed Jul 10, 2017
2 parents bfae735 + a6f9979 commit 209196b
Show file tree
Hide file tree
Showing 13 changed files with 73 additions and 39 deletions.
9 changes: 4 additions & 5 deletions pywal/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,20 +89,19 @@ 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)

# -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()

Expand Down
4 changes: 3 additions & 1 deletion pywal/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 7 additions & 5 deletions pywal/magic.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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

Expand Down
5 changes: 5 additions & 0 deletions pywal/templates/colors.css
Original file line number Diff line number Diff line change
@@ -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};
Expand Down
2 changes: 2 additions & 0 deletions pywal/templates/colors.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{{
"wallpaper": "{wallpaper}",

"special": {{
"background": "{background}",
"foreground": "{foreground}",
Expand Down
5 changes: 5 additions & 0 deletions pywal/templates/colors.scss
Original file line number Diff line number Diff line change
@@ -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};
Expand Down
5 changes: 5 additions & 0 deletions pywal/templates/colors.sh
Original file line number Diff line number Diff line change
@@ -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}'
Expand Down
5 changes: 5 additions & 0 deletions pywal/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
3 changes: 3 additions & 0 deletions pywal/wallpaper.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
6 changes: 3 additions & 3 deletions tests/test_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ def test_template(self):
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__":
Expand Down
41 changes: 21 additions & 20 deletions tests/test_files/test_file.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
{
"wallpaper": "5.png",

"special": {
"background":"#3A5130",
"foreground":"#FAF9F5",
"cursor":"#FAF9F5"
"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"
}
}
4 changes: 2 additions & 2 deletions tests/test_sequences.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__":
Expand Down
11 changes: 8 additions & 3 deletions tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def test_set_grey(self):
"""> 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."""
Expand All @@ -26,12 +26,17 @@ def test_read_file(self):
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."""
Expand Down

0 comments on commit 209196b

Please sign in to comment.