Files
Modus/src/main.py
T

89 lines
2.2 KiB
Python

import os
from fabric import Application
from fabric.utils import get_relative_path, logger, monitor_file
from shared.data import APP_NAME, load_config
from utils.functions import set_process_name
from window.desktop.widget import Deskwidgets
from window.dock import Dock
from window.launcher.main import Launcher
from window.notification.notification import ModusNoti
from window.osd.main import OSDWindow
from window.panel.main import Panel
from window.switcher import ApplicationSwitcher
for log in [
"fabric",
"services",
"window",
"utils",
]:
logger.disable(log)
def main():
# Generate colors.css if it doesn't exist
colors_css_path = get_relative_path("shared/styles/colors.css")
if not os.path.exists(colors_css_path):
from utils.utils import generate_colors_from_wallpaper
default_wallpaper = get_relative_path("assets/wallpaper_example/example-1.png")
if os.path.exists(default_wallpaper):
generate_colors_from_wallpaper(default_wallpaper)
set_process_name(APP_NAME)
load_config()
switcher = ApplicationSwitcher()
panel = Panel()
modusnoti = ModusNoti()
launcher = Launcher()
deskwidget = Deskwidgets()
dock = Dock()
osd = OSDWindow()
# Monitor CSS files for changes
css_file = monitor_file(get_relative_path("shared/styles"))
_ = css_file.connect("changed", lambda *_: set_css())
app = Application(
f"{APP_NAME}",
panel,
modusnoti,
deskwidget.top_left,
deskwidget.bottom_left,
osd,
launcher,
switcher,
dock,
)
def set_css():
app.set_stylesheet_from_file(
get_relative_path("shared/styles/main.css"),
)
app.set_css = set_css
app.set_css()
# Inject into the executing module's namespace (__main__)
# to emulate what happened when this file was run directly.
# This allows fabric-cli exec to execute commands flawlessly.
import __main__
__main__.app = app
__main__.switcher = switcher
__main__.panel = panel
__main__.modusnoti = modusnoti
__main__.launcher = launcher
__main__.deskwidget = deskwidget
__main__.dock = dock
__main__.osd = osd
app.run()
if __name__ == "__main__":
main()