This is a WindowManager implementation for the AGL Project. Limitations ---------- ----- -- - - Currently no configuration of where the ids.json and layouts.json files are to be found is implemented, they will be searched in "..". See "Building" and "Running" for more details. Description ---------- ----- -- - - The application source is located in src/ and is loosely structured c++. The code base is c++14, and uses nlohmanns json implementation[1]. Also the std::experimental::optional is used where sensible. There is not a single source file for each class. The different modules have the following resposibilities: * wayland: implement the basic wayland proxy wrappers and listeners, this includes the rather large ivi_controller and its dependent objects. * app: the actual (or intended as) implementation of the application * util: generic utilities * main: AFB service entrypoint * layout: layout related functionality (as of yet mostly unused/not functional) * layers: layer related functionality (mostly just mapping surfaces to layers, parsing configuration) * result: a simple wrapper over optional, that allows to signal an error and a description. * json_helper: some json helper functions, mainly used for transforming structures to json. * controller_hooks: hooks to be used be the genivi::ivi_controller to call to the App class, without knowing of its existence. Building ---------- ----- -- - - Prerequisites are the AGL app-framework-binder (which "infects" us with json-c and libsystemd - i.e. these are needed too). Then proceed as follows: mkdir build cd build cmake .. make -j Running ---------- ----- -- - - Prerequisites: a compositor implementing the ivi_controller interface must be running and XDG_RUNTIME_DIR must be set so the wayland socket can be found. The configuration for the window manager (the layers.json file, as specified int the next section) needs to be available. The environment variable LAYERS_JSON=/path/to/layers.json needs to be set. To run from the build directory use: env LAYERS_JSON=/path/to/layers.json afb-daemon --ldpaths=/path/to/winman-binding/ JSON Configurations ---------- ----- -- - - layers.json: Layers and layout description. In order for the window manager to work, this file needs to be available and passed to the window manager using the environment variable LAYERS_JSON. An *example* layers.json is provided.