added features for saving user themes and loading random themes

This commit is contained in:
Austin Schey 2019-03-03 11:13:44 -06:00
parent 53740712a6
commit 788533e5c2
2 changed files with 28 additions and 1 deletions

View File

@ -45,7 +45,7 @@ def get_args():
arg.add_argument("--theme", "-f", metavar="/path/to/file or theme_name", arg.add_argument("--theme", "-f", metavar="/path/to/file or theme_name",
help="Which colorscheme file to use. \ 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="?") const="list_themes", nargs="?")
arg.add_argument("--iterative", action="store_true", arg.add_argument("--iterative", action="store_true",
@ -77,6 +77,11 @@ def get_args():
arg.add_argument("-o", metavar="\"script_name\"", action="append", arg.add_argument("-o", metavar="\"script_name\"", action="append",
help="External script to run after \"wal\".") 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", arg.add_argument("-q", action="store_true",
help="Quiet mode, don\'t print anything.") help="Quiet mode, don\'t print anything.")
@ -177,6 +182,9 @@ def parse_args(parser):
if not args.n: if not args.n:
wallpaper.change(colors_plain["wallpaper"]) 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) sequences.send(colors_plain, to_send=not args.s, vte_fix=args.vte)
if sys.stdout.isatty(): if sys.stdout.isatty():

View File

@ -33,6 +33,7 @@ def list_out():
print(" - random (select a random dark theme)") print(" - random (select a random dark theme)")
print(" - random_dark (select a random dark theme)") print(" - random_dark (select a random dark theme)")
print(" - random_light (select a random light theme)") print(" - random_light (select a random light theme)")
print(" - random_user (select a random user theme)")
def list_themes(dark=True): def list_themes(dark=True):
@ -88,6 +89,13 @@ def get_random_theme(dark=True):
return themes[0] 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): def file(input_file, light=False):
"""Import colorscheme from json file.""" """Import colorscheme from json file."""
util.create_dir(os.path.join(CONF_DIR, "colorschemes/light/")) 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": elif input_file == "random_light":
theme_file = get_random_theme(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): elif os.path.isfile(user_theme_file):
theme_file = 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 adding '-l' to set light themes.")
logging.error("Try removing '-l' to set dark themes.") logging.error("Try removing '-l' to set dark themes.")
sys.exit(1) 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)