mirror of
https://github.com/dylanaraps/pywal.git
synced 2024-12-03 05:13:27 +01:00
general: Split image functions into own module and remove un-needed pathlib imports.
This commit is contained in:
parent
615321de94
commit
6c08e44ca4
@ -9,6 +9,7 @@ import sys
|
|||||||
|
|
||||||
from pywal.settings import CACHE_DIR, __version__
|
from pywal.settings import CACHE_DIR, __version__
|
||||||
from pywal import export
|
from pywal import export
|
||||||
|
from pywal import image
|
||||||
from pywal import gen_colors
|
from pywal import gen_colors
|
||||||
from pywal import set_colors
|
from pywal import set_colors
|
||||||
from pywal import reload
|
from pywal import reload
|
||||||
@ -87,13 +88,13 @@ def process_args(args):
|
|||||||
|
|
||||||
# -i
|
# -i
|
||||||
if args.i:
|
if args.i:
|
||||||
image = gen_colors.get_image(args.i)
|
image_file = image.get_image(args.i)
|
||||||
|
|
||||||
# Create a list of hex colors.
|
# Create a list of hex colors.
|
||||||
colors_plain = gen_colors.get_colors(image, args.q)
|
colors_plain = gen_colors.get_colors(image_file, args.q)
|
||||||
|
|
||||||
if not args.n:
|
if not args.n:
|
||||||
wallpaper.set_wallpaper(image)
|
wallpaper.set_wallpaper(image_file)
|
||||||
|
|
||||||
# -f
|
# -f
|
||||||
elif args.f:
|
elif args.f:
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
Generate a colorscheme.
|
Generate a colorscheme.
|
||||||
"""
|
"""
|
||||||
import os
|
|
||||||
import pathlib
|
|
||||||
import random
|
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -13,45 +10,6 @@ from pywal import set_colors
|
|||||||
from pywal import util
|
from pywal import util
|
||||||
|
|
||||||
|
|
||||||
def random_img(img_dir):
|
|
||||||
"""Pick a random image file from a directory."""
|
|
||||||
current_wall = pathlib.Path(CACHE_DIR / "wal")
|
|
||||||
|
|
||||||
if current_wall.is_file():
|
|
||||||
current_wall = util.read_file(current_wall)
|
|
||||||
current_wall = os.path.basename(current_wall[0])
|
|
||||||
|
|
||||||
# Add all images to a list excluding the current wallpaper.
|
|
||||||
file_types = (".png", ".jpg", ".jpeg", ".jpe", ".gif")
|
|
||||||
images = [img for img in os.scandir(img_dir)
|
|
||||||
if img.name.endswith(file_types) and img.name != current_wall]
|
|
||||||
|
|
||||||
# If no images are found, use the current wallpaper.
|
|
||||||
if not images:
|
|
||||||
print("image: No new images found (nothing to do), exiting...")
|
|
||||||
quit(1)
|
|
||||||
|
|
||||||
return pathlib.Path(img_dir / random.choice(images).name)
|
|
||||||
|
|
||||||
|
|
||||||
def get_image(img):
|
|
||||||
"""Validate image input."""
|
|
||||||
image = pathlib.Path(img)
|
|
||||||
|
|
||||||
if image.is_file():
|
|
||||||
wal_img = image
|
|
||||||
|
|
||||||
elif image.is_dir():
|
|
||||||
wal_img = random_img(image)
|
|
||||||
|
|
||||||
else:
|
|
||||||
print("error: No valid image file found.")
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
print("image: Using image", wal_img)
|
|
||||||
return str(wal_img)
|
|
||||||
|
|
||||||
|
|
||||||
def imagemagick(color_count, img):
|
def imagemagick(color_count, img):
|
||||||
"""Call Imagemagick to generate a scheme."""
|
"""Call Imagemagick to generate a scheme."""
|
||||||
colors = subprocess.Popen(["convert", img, "+dither", "-colors",
|
colors = subprocess.Popen(["convert", img, "+dither", "-colors",
|
||||||
@ -96,8 +54,8 @@ def get_colors(img, quiet):
|
|||||||
util.save_file(img, CACHE_DIR / "wal")
|
util.save_file(img, CACHE_DIR / "wal")
|
||||||
|
|
||||||
# Cache the sequences file.
|
# Cache the sequences file.
|
||||||
cache_file = pathlib.Path(CACHE_DIR / "schemes" / img.replace("/", "_"))
|
cache_file = CACHE_DIR / "schemes" / img.replace("/", "_")
|
||||||
cache_file = pathlib.Path(cache_file.with_suffix(".json"))
|
cache_file = cache_file.with_suffix(".json")
|
||||||
|
|
||||||
if cache_file.is_file():
|
if cache_file.is_file():
|
||||||
colors = util.read_file_json(cache_file)
|
colors = util.read_file_json(cache_file)
|
||||||
|
48
pywal/image.py
Normal file
48
pywal/image.py
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
"""
|
||||||
|
Get the image file.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
import random
|
||||||
|
|
||||||
|
from pywal.settings import CACHE_DIR
|
||||||
|
from pywal import util
|
||||||
|
|
||||||
|
|
||||||
|
def get_random_image(img_dir):
|
||||||
|
"""Pick a random image file from a directory."""
|
||||||
|
current_wall = CACHE_DIR / "wal"
|
||||||
|
|
||||||
|
if current_wall.is_file():
|
||||||
|
current_wall = util.read_file(current_wall)
|
||||||
|
current_wall = os.path.basename(current_wall[0])
|
||||||
|
|
||||||
|
# Add all images to a list excluding the current wallpaper.
|
||||||
|
file_types = (".png", ".jpg", ".jpeg", ".jpe", ".gif")
|
||||||
|
images = [img for img in os.scandir(img_dir)
|
||||||
|
if img.name.endswith(file_types) and img.name != current_wall]
|
||||||
|
|
||||||
|
# If no images are found, use the current wallpaper.
|
||||||
|
if not images:
|
||||||
|
print("image: No new images found (nothing to do), exiting...")
|
||||||
|
quit(1)
|
||||||
|
|
||||||
|
return img_dir / random.choice(images).name
|
||||||
|
|
||||||
|
|
||||||
|
def get_image(img):
|
||||||
|
"""Validate image input."""
|
||||||
|
image = pathlib.Path(img)
|
||||||
|
|
||||||
|
if image.is_file():
|
||||||
|
wal_img = image
|
||||||
|
|
||||||
|
elif image.is_dir():
|
||||||
|
wal_img = get_random_image(image)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print("error: No valid image file found.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
print("image: Using image", wal_img)
|
||||||
|
return str(wal_img)
|
@ -2,7 +2,6 @@
|
|||||||
Send sequences to all open terminals.
|
Send sequences to all open terminals.
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
import pathlib
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from pywal.settings import CACHE_DIR
|
from pywal.settings import CACHE_DIR
|
||||||
@ -72,7 +71,7 @@ def send_sequences(colors, vte):
|
|||||||
|
|
||||||
def reload_colors(vte):
|
def reload_colors(vte):
|
||||||
"""Reload colors."""
|
"""Reload colors."""
|
||||||
sequence_file = pathlib.Path(CACHE_DIR / "sequences")
|
sequence_file = CACHE_DIR / "sequences"
|
||||||
|
|
||||||
if sequence_file.is_file():
|
if sequence_file.is_file():
|
||||||
sequences = "".join(util.read_file(sequence_file))
|
sequences = "".join(util.read_file(sequence_file))
|
||||||
|
Loading…
Reference in New Issue
Block a user