Something went wrong. Try again.
A Material 3 inspired desktop shell for Niri and Hyprland created with Ignis.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455"""Usage: 1. Copy this directory to `ignis/modules/<name>/` (`<name>` 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,)