summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChandler J <cjustice2000@gmail.com>2024-03-18 13:14:40 -0600
committerChandler J <cjustice2000@gmail.com>2024-03-18 13:14:40 -0600
commit0f6fd394f39406b76e8f18fe4c2ddb791194f978 (patch)
treebcb56d1b0c019854eaf89a36e24f83356d6894dd /src
parent83a3b5ebcc355e875c0d3f43a5a854e7194d6540 (diff)
began implementating save states for color palettes and MOAR POLISH
Diffstat (limited to 'src')
-rw-r--r--src/color_engine.py4
-rw-r--r--src/get_args.py23
-rw-r--r--src/initialize_rofi.py7
-rw-r--r--src/instant_rice.py16
-rw-r--r--src/manage_saves.py21
-rw-r--r--src/user_interface.py1
6 files changed, 58 insertions, 14 deletions
diff --git a/src/color_engine.py b/src/color_engine.py
index fb885a8..0e43475 100644
--- a/src/color_engine.py
+++ b/src/color_engine.py
@@ -1,7 +1,7 @@
import cv2 as cv
from sklearn.cluster import KMeans
-def grabColors(img_path: str, num_colors: int) -> list():
+def grabColors(img_path: str, num_colors: int) -> list:
"""
Takes in an image, and Number of colors, then returns a list of those colors.
The list of colors will contain the most prominent colors present in the image.
@@ -32,7 +32,7 @@ def compColors(color_list: list) -> list:
compliments.append('#' + ''.join(comp))
return compliments
-def checkContrast(hex_color_list: list, hex_compliment_list: list) -> list():
+def checkContrast(hex_color_list: list, hex_compliment_list: list) -> list:
"""
Given the list of colors and their compliments, reutrn a list of the contrast values
between the colors
diff --git a/src/get_args.py b/src/get_args.py
index ade7740..ebdf464 100644
--- a/src/get_args.py
+++ b/src/get_args.py
@@ -1,24 +1,39 @@
import user_interface
+import manage_saves
import os
+from rich import print
def get_args(args, walls_dir) -> tuple:
# arguments that can be passed into program
initialize = False
reconfigure = False
-
+ color_save = None
+ VALID_ARGS = ['-r', '-p', '--initialize', '--reconfigure']
+ if '-p' in args:
+ index = args.index('-p')
+ if os.path.isfile(args[index + 1]):
+ color_save = manage_saves.load_color_palette(args[index + 1])
+ else:
+ print('invalid arguments. -p should be followed by a color palette save')
+ exit(2)
+
if '-r' in args:
img_path = user_interface.pickRandomWallpaper(walls_dir)
else:
img_path = f"{os.getcwd()}/{args[1]}"
+ if not os.path.exists(img_path) and\
+ args[1] not in VALID_ARGS:
+ print(f'[bold red]ERROR: invalid image path {os.getcwd()}/{args[1]}')
+ exit(3)
+
if '--initialize' in args:
initialize = True
if '--reconfigure' in args:
reconfigure = True
- return img_path, initialize, reconfigure
+ return img_path, initialize, reconfigure, color_save
def usage(args) -> None:
- print(f"""
-Instant Rice - An automatic theming utilitiy
+ print(f"""Instant Rice - An automatic theming utilitiy
Usage: python3 {args[0]} [Relative Image Path] [-r, --initialize, --reconfigure, --dmenu, --nolock]
diff --git a/src/initialize_rofi.py b/src/initialize_rofi.py
index cc3fd0a..9ebd3e3 100644
--- a/src/initialize_rofi.py
+++ b/src/initialize_rofi.py
@@ -11,9 +11,9 @@ def reconfigureRofi() -> None:
print('[bold red]Initializing Rofi Theme')
def changeConfigContents() -> None:
- print('path exists')
+ print('[bold green]path exists')
if os.path.exists(f'{configPath}config.rasi'):
- print('config present')
+ print('[bold green]config present. modifying existing configuration')
with open(f'{configPath}config.rasi', 'r') as file:
data = file.readlines()
themeSet = False
@@ -34,9 +34,10 @@ def reconfigureRofi() -> None:
dirExists = os.path.isdir(configPath)
if dirExists:
changeConfigContents()
+ dropRofiTheme()
else:
# Drop the Rofi theme config in rofi
- print(f'path doesnt exist. Creating directory {configPath}')
+ print(f'[bold red]path doesnt exist. Creating directory {configPath}')
os.makedirs(configPath)
changeConfigContents()
dropRofiTheme()
diff --git a/src/instant_rice.py b/src/instant_rice.py
index 5076a6b..e13f67b 100644
--- a/src/instant_rice.py
+++ b/src/instant_rice.py
@@ -1,20 +1,28 @@
import sys
+
import user_interface
import update_rofi
import update_i3
import update_polybar
+import initialize_i3
+import initialize_rofi
from get_args import get_args,usage
from load_config import systemConfig
-
+from rich import print
if __name__ == '__main__':
if len(sys.argv) > 1:
+
config = systemConfig()
- img_path, initialize, reconfigure = get_args(sys.argv, config.wallpaper_directory)
+ img_path, initialize, reconfigure, color_save = get_args(sys.argv, config.wallpaper_directory)
+ if initialize:
+ initialize_rofi.reconfigureRofi()
+ print('[bold green]Initialization Completed. Exiting...')
+ exit(0)
hex_colors, hex_compliments = user_interface.colorPickerUI(img_path, config.num_palettes)
- if config.polybar_config != "":
+ if config.polybar_config:
update_polybar.updatePolybarTheme(config.polybar_config, hex_colors, hex_compliments)
- if config.rofi_config != "":
+ if config.rofi_config:
update_rofi.updateRofiTheme(config.rofi_config, hex_colors, hex_compliments)
if config.i3_config:
update_i3.updatei3Theme(config.i3_config, img_path, hex_colors, hex_compliments, config.generate_i3_lock, config.use_dmenu, config.i3_lock_image)
diff --git a/src/manage_saves.py b/src/manage_saves.py
new file mode 100644
index 0000000..988b9a2
--- /dev/null
+++ b/src/manage_saves.py
@@ -0,0 +1,21 @@
+import pickle
+from rich import print
+
+def save_color_palette(hex_colors, hex_compliments, save_directory):
+
+ colors = [hex_colors, hex_compliments]
+
+ with open(save_directory, 'wb') as file:
+ pickle.dump(colors, file, pickle.HIGHEST_PROTOCOL)
+
+ print('[bold green]color palette saved successfully')
+
+def load_color_palette(save_location):
+ with open(save_location, 'rb') as file:
+ try:
+ data = pickle.load(file)
+ except:
+ print('invalid arguments. -p should be followed by a color palette save')
+ exit(2)
+
+ return data
diff --git a/src/user_interface.py b/src/user_interface.py
index c31f8fe..934098c 100644
--- a/src/user_interface.py
+++ b/src/user_interface.py
@@ -1,6 +1,5 @@
import os
import random
-
import color_engine
from rich import print