summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pywal/__main__.py10
-rw-r--r--pywal/theme.py19
2 files changed, 28 insertions, 1 deletions
diff --git a/pywal/__main__.py b/pywal/__main__.py
index 2e50ca9..15b7228 100644
--- a/pywal/__main__.py
+++ b/pywal/__main__.py
@@ -45,7 +45,7 @@ def get_args():
arg.add_argument("--theme", "-f", metavar="/path/to/file or theme_name",
help="Which colorscheme file to use. \
- Use 'wal --theme' to list builtin themes.",
+ Use 'wal --theme' to list builtin and user themes.",
const="list_themes", nargs="?")
arg.add_argument("--iterative", action="store_true",
@@ -77,6 +77,11 @@ def get_args():
arg.add_argument("-o", metavar="\"script_name\"", action="append",
help="External script to run after \"wal\".")
+ arg.add_argument("-p", metavar="\"theme_name\"",
+ help="permanently save theme to "
+ "$XDG_CONFIG_HOME/wal/colorschemes with "
+ "the specified name")
+
arg.add_argument("-q", action="store_true",
help="Quiet mode, don\'t print anything.")
@@ -177,6 +182,9 @@ def parse_args(parser):
if not args.n:
wallpaper.change(colors_plain["wallpaper"])
+ if args.p:
+ theme.save(colors_plain, args.p, args.l)
+
sequences.send(colors_plain, to_send=not args.s, vte_fix=args.vte)
if sys.stdout.isatty():
diff --git a/pywal/theme.py b/pywal/theme.py
index fcd1dd1..62695b5 100644
--- a/pywal/theme.py
+++ b/pywal/theme.py
@@ -33,6 +33,7 @@ def list_out():
print(" - random (select a random dark theme)")
print(" - random_dark (select a random dark theme)")
print(" - random_light (select a random light theme)")
+ print(" - random_user (select a random user theme)")
def list_themes(dark=True):
@@ -88,6 +89,13 @@ def get_random_theme(dark=True):
return themes[0]
+def get_random_theme_user():
+ """Get a random theme file from user theme directories."""
+ themes = [theme.path for theme in list_themes_user()]
+ random.shuffle(themes)
+ return themes[0]
+
+
def file(input_file, light=False):
"""Import colorscheme from json file."""
util.create_dir(os.path.join(CONF_DIR, "colorschemes/light/"))
@@ -106,6 +114,9 @@ def file(input_file, light=False):
elif input_file == "random_light":
theme_file = get_random_theme(light)
+ elif input_file == "random_user":
+ theme_file = get_random_theme_user()
+
elif os.path.isfile(user_theme_file):
theme_file = user_theme_file
@@ -122,3 +133,11 @@ def file(input_file, light=False):
logging.error("Try adding '-l' to set light themes.")
logging.error("Try removing '-l' to set dark themes.")
sys.exit(1)
+
+
+def save(colors, theme_name, light=False):
+ """Save colors to a theme file."""
+ theme_file = theme_name + ".json"
+ theme_path = os.path.join(CONF_DIR, "colorschemes",
+ "light" if light else "dark", theme_file)
+ util.save_file_json(colors, theme_path)