""" Usage: 1. Copy this directory to `ignis/modules//` (`` must match [a-z][a-z0-9_]*). 2. Adjust `id` / `module.json` / the implementation below. 3. Keep the manifest import-light: do NOT import `gi` / `ignis` / `user_settings` (or anything that pulls them in) at module top level. Do runtime/GTK imports lazily inside `setup()` and factories. """ from core.module import Module # , SettingsTab, BarWidget # enable as needed def setup(ctx): # Example: lazily import the implementation here and provide a service. # from .impl import create_service # ctx.provide("my_service", create_service()) # # Dependencies: ctx.get("optional_service") / ctx.require("required_service") pass # Example: SettingsTab (lazy factory) # def _tab(): # from .settings_tab import MyTab # return MyTab() # # SETTINGS_TABS = ( # SettingsTab(id="my_tab", title="My Tab", icon="tune", order=50, group="Shell", factory=_tab), # ) # Example: BarWidget (lazy factory; bar widgets stay inside `bar`) # def _widget(): # from .widget import MyWidget # return MyWidget() # # BAR_WIDGETS = ( # BarWidget(id="my_widget", factory=_widget, default_location=2, default_bar_id=0, # default_visible=True, name="My Widget", description="Description"), # ) MODULE = Module( id="my_module", # must match the directory name: [a-z][a-z0-9_]* # requires=("other_module",), # module ids only # provides=("my_service",), # service names provided # needs=(), # required service names # settings="settings.json", # JSON (shared by Python/Nix), optional setup=setup, # settings_tabs=SETTINGS_TABS, # bar_widgets=BAR_WIDGETS, # styles=None, # nix_options=None, enabled_by_default=True, )