File transfer

This commit is contained in:
Emma Nora Theuer 2025-02-26 15:26:24 +01:00
parent e24b69597b
commit c31c452f7e
3 changed files with 24 additions and 11 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

View file

@ -5,7 +5,7 @@ enable_wallpaper_sets = true
used_sets = ["anime", "nature"] used_sets = ["anime", "nature"]
wallpapers_per_set = 5 wallpapers_per_set = 5
notify = false notify = false
fallback_wallpaper = "/path/to/paper" fallback_wallpaper = "/etc/wallman/DefaultFallbackWallpaper.jpg"
loglevel = "INFO" loglevel = "INFO"
systray = true systray = true
behavior = "fill" behavior = "fill"

View file

@ -13,7 +13,7 @@ from wallman.wallman_classes import ConfigError, ConfigGeneral, ConfigFile
global logger global logger
logger = logging.getLogger("wallman") logger = logging.getLogger("wallman")
class _ConfigLib: class _Config:
# Initializes the most important config values. TODO: Add handling for the empty config edge case and the FileNotFound case # Initializes the most important config values. TODO: Add handling for the empty config edge case and the FileNotFound case
def __init__(self) -> None: def __init__(self) -> None:
self.config_file: ConfigFile = self._initialize_config() # Full config self.config_file: ConfigFile = self._initialize_config() # Full config
@ -45,7 +45,7 @@ class _ConfigLib:
if self.config_systray: if self.config_systray:
self._verify_systray_deps() self._verify_systray_deps()
# Read config. TODO: Add error handling for the config not found case. # Read config
def _initialize_config(self) -> ConfigFile: def _initialize_config(self) -> ConfigFile:
chdir(str(getenv("HOME")) + "/.config/wallman/") chdir(str(getenv("HOME")) + "/.config/wallman/")
try: try:
@ -76,14 +76,12 @@ class _ConfigLib:
system("touch wallman.log") system("touch wallman.log")
logging.basicConfig(filename="wallman.log", encoding="utf-8", level=numeric_level) logging.basicConfig(filename="wallman.log", encoding="utf-8", level=numeric_level)
# TODO: Make this all just work inside the try/except block, there is no need for get()
# TODO: Adjust these variable names
def _set_behavior(self) -> str: def _set_behavior(self) -> str:
try: try:
self.config_general.get("behavior") behavior = self.config_general["behavior"]
except KeyError: except KeyError:
logger.error("There is no wallpaper behavior specified in general, defaulting to fill...") logger.warning("There is no wallpaper behavior specified in general, defaulting to fill...")
print("ERROR: There is no wallpaper behavior specified in general, defaulting to fill...") print("WARNING: There is no wallpaper behavior specified in general, defaulting to fill...")
human_behaviors: List[str] = ["plain", "tile", "center", "fill", "max", "scale"] human_behaviors: List[str] = ["plain", "tile", "center", "fill", "max", "scale"]
machine_behaviors: List[str] = ["--bg", "--bg-tile", "--bg-center", "--bg-fill", "--bg-max", "--bg-scale"] machine_behaviors: List[str] = ["--bg", "--bg-tile", "--bg-center", "--bg-fill", "--bg-max", "--bg-scale"]
@ -110,7 +108,6 @@ class _ConfigLib:
logger.info(f"The wallpaper behavior '{behavior}' has been set.") logger.info(f"The wallpaper behavior '{behavior}' has been set.")
return behavior return behavior
def _set_fallback_wallpaper(self) -> None: def _set_fallback_wallpaper(self) -> None:
if self.config_general["fallback_wallpaper"]: if self.config_general["fallback_wallpaper"]:
system(f"feh {self.config_behavior} --no-fehbg {self.config_general['fallback_wallpaper']}") system(f"feh {self.config_behavior} --no-fehbg {self.config_general['fallback_wallpaper']}")
@ -119,6 +116,23 @@ class _ConfigLib:
logger.critical("An Error occured and no fallback wallpaper was provided, exiting...") logger.critical("An Error occured and no fallback wallpaper was provided, exiting...")
raise ConfigError("An error occured and no fallback wallpaper has been set, exiting...") raise ConfigError("An error occured and no fallback wallpaper has been set, exiting...")
def _initialize_general(self) -> bool:
# Create Config General Dict
try:
self.config_general: ConfigGeneral = self.config_file["general"]
except KeyError:
print("CRITICAL: No general dictionary found in Config file.")
return False
# Set up logger.
self.config_log_level = self.config_general.get("log_level", "INFO").upper()
self._set_log_level()
logger.debug(f"Log level has been set to {self.config_log_level}")
logger.debug("Logger initialized successfully")
# Set up fallback wallpaper
return True
class ConfigValidity(_ConfigLib): class ConfigValidity(_ConfigLib):
# TODO: Add handling for the empty config case. # TODO: Add handling for the empty config case.
def __init__(self): def __init__(self):
@ -201,7 +215,6 @@ class ConfigValidity(_ConfigLib):
return False return False
def validate_config(self) -> bool: def validate_config(self) -> bool:
# NOTE: Consider changing this to exit(-1)
# HACK: Consider using different exit codes for different errors to help users debug. # HACK: Consider using different exit codes for different errors to help users debug.
if not self._check_fallback_wallpaper(): if not self._check_fallback_wallpaper():
pass pass
@ -218,7 +231,7 @@ class ConfigValidity(_ConfigLib):
# TODO: Improve modularity. See notes inside the class for more details. # TODO: Improve modularity. See notes inside the class for more details.
# TODO: Ensure functionality and if needed add handling for the 1 wallpaper per set case. # TODO: Ensure functionality and if needed add handling for the 1 wallpaper per set case.
class WallpaperLogic(_ConfigLib): class WallpaperLogic(_Config):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
self.wallpaper_list: List[str] = None # pyright: ignore self.wallpaper_list: List[str] = None # pyright: ignore