diff --git a/main.py b/main.py new file mode 100644 index 0000000..7488f5d --- /dev/null +++ b/main.py @@ -0,0 +1,61 @@ +import os + +import setproctitle +from fabric import Application +from fabric.utils import get_relative_path, monitor_file, exec_shell_command_async +from loguru import logger + +from modules.bar.bar import Bar, Corners +from modules.launcher.launcher import Launcher + +from modules.dock import Dock +from modules.notification_popup import NotificationPopup +from modules.osd import OSD +from config.data import APP_NAME, CACHE_DIR, CONFIG_FILE, DOCK_ICON_SIZE, VERTICAL, APP_NAME_CAP + + +for log in [ + "fabric.hyprland.widgets", + "fabric.audio.service", + "fabric.bluetooth.service", +]: + logger.disable(log) + + + +if __name__ == "__main__": + setproctitle.setproctitle(APP_NAME) + + if not os.path.isfile(CONFIG_FILE): + exec_shell_command_async(f"python {get_relative_path('../config/config.py')}") + bar = Bar() + dock = Dock() + corners = Corners() + osd = OSD() + notif = NotificationPopup() + launcher = Launcher() + bar.launcher = launcher + launcher.bar = bar + + app = Application(f"{APP_NAME}", bar, launcher, osd, dock) + + # Monitor CSS files for changes + css_file = monitor_file(get_relative_path("styles")) + _ = css_file.connect("changed", lambda *_: set_css()) + + color_css_file = monitor_file(get_relative_path("./styles/colors.css")) + _ = color_css_file.connect("changed", lambda *_: set_css()) + + def set_css(): + logger.info("[Main] Applying CSS") + app.set_stylesheet_from_file(get_relative_path("styles/main.css"), + exposed_functions={ + "dock_nmargin": lambda: f"margin-bottom: -{32 + DOCK_ICON_SIZE}px;" if not VERTICAL else f"margin-right: -{32 + DOCK_ICON_SIZE}px;", + "dock_sep": lambda: f"margin: 8px 0;" if not VERTICAL else f"margin: 0 8px;", + },) + + app.set_css = set_css + + app.set_css() + + app.run()