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. To run from the build directory use: afb-daemon --ldpaths=$PWD/src JSON Configurations ---------- ----- -- - - ids.json: This file configures a mapping of surface id to some layer id. Also In this configuration are information on the actual drawing rectangles that applications need to use on a particular layer. layout.json: A layout spcification. It is as of yet mostly unused and if not parsed correctly should not interfere with window manager operation.