This change is preparation for modularization of ilia pages. This means that pages can be provided/loaded as separate shared libraries. These shared libaries can be packaged independently and allow ilia to be distro agnostic such that it could be used by other X11/Wayland environments if people choose to do so.
The modularization requires that all interaction between module (aka "plugin") and the host program are specified by interfaces. As such, global state is pulled down into interface contracts.
This change is preparation for modularization of
ilia
pages. This means that pages can be provided/loaded as separate shared libraries. These shared libaries can be packaged independently and allowilia
to be distro agnostic such that it could be used by other X11/Wayland environments if people choose to do so.The modularization requires that all interaction between module (aka "plugin") and the host program are specified by interfaces. As such, global state is pulled down into interface contracts.