diff --git a/bar/config.py b/bar/config.py index 69049a1..90fe190 100644 --- a/bar/config.py +++ b/bar/config.py @@ -54,3 +54,4 @@ BATTERY = app_config.get("battery", {"enable": False}) WINDOW_TITLE = app_config.get("window_title", {"enable": True}) STYLIX = app_config.get("stylix", {"enable": False}) BAR_HEIGHT = app_config.get("height", 40) +DEV = app_config.get("dev", False) diff --git a/bar/main.py b/bar/main.py index 7e8d65a..b8ecb62 100644 --- a/bar/main.py +++ b/bar/main.py @@ -1,5 +1,16 @@ from loguru import logger +# Configure logging based on dev flag +from .config import DEV +if DEV: + # In dev mode, disable fabric logs but keep stylix and bar logs + logger.disable("fabric") +else: + # In production, disable all debug logs, only keep warnings and errors + logger.disable("fabric") + logger.disable("bar") + logger.configure(handlers=[{"sink": lambda msg: print(msg, end=""), "level": "WARNING"}]) + from fabric import Application from fabric.system_tray.widgets import SystemTray from fabric.widgets.wayland import WaylandWindow as Window @@ -11,7 +22,7 @@ from fabric.utils import ( ) from .modules.bar import StatusBar from .modules.window_fuzzy import FuzzyWindowFinder -from .modules.stylix import get_stylix_css_path +from .modules.stylix import get_colors_css_path from .config import STYLIX @@ -25,20 +36,29 @@ bar_windows = [] app = Application("bar", dummy, finder) -# Load CSS - use Stylix if enabled, otherwise use default -if STYLIX.get("enable", False): - stylix_css_path = get_stylix_css_path() - if stylix_css_path: - logger.info("[Bar] Using Stylix CSS") - # Load base styles first for structure - app.set_stylesheet_from_file(get_relative_path("styles/main.css")) - # Then apply Stylix theme colors - app.set_stylesheet_from_file(stylix_css_path) - else: - logger.warning("[Bar] Stylix enabled but CSS generation failed, falling back to default") - app.set_stylesheet_from_file(get_relative_path("styles/main.css")) +# Generate colors.css (either Stylix or default) in XDG config directory +colors_css_path = get_colors_css_path() +if colors_css_path: + # Update main.css to import the generated colors.css + import tempfile + with open(get_relative_path("styles/main.css"), "r") as f: + main_css = f.read() + + # Replace the colors.css import with our generated file path + updated_main_css = main_css.replace( + '@import url("./colors.css");', + f'@import url("file://{colors_css_path}");' + ) + + # Write updated main.css to temp file and load it + with tempfile.NamedTemporaryFile(mode="w", suffix=".css", delete=False) as temp_main: + temp_main.write(updated_main_css) + temp_main_path = temp_main.name + + logger.info(f"[Bar] Loading CSS with colors from {colors_css_path}") + app.set_stylesheet_from_file(temp_main_path) else: - logger.info("[Bar] Using default CSS") + logger.error("[Bar] Failed to generate colors.css, falling back to default") app.set_stylesheet_from_file(get_relative_path("styles/main.css")) diff --git a/example-stylix-dev.yaml b/example-stylix-dev.yaml index 10ad564..7cd9d0d 100644 --- a/example-stylix-dev.yaml +++ b/example-stylix-dev.yaml @@ -1,4 +1,5 @@ height: 42 +dev: true window_title: enable: false vinyl: