add simple README
[staging/windowmanager.git] / README
1 This is a WindowManager implementation for the AGL Project.
2
3
4
5 Limitations
6 ---------- ----- -- - -
7 Currently no configuration of where the ids.json and layouts.json
8 files are to be found is implemented, they will be searched in "..".
9 See "Building" and "Running" for more details.
10
11
12
13 Description
14 ---------- ----- -- - -
15 The application source is located in src/ and is loosely structured c++.
16
17 The code base is c++14, and uses nlohmanns json implementation[1]. Also
18 the std::experimental::optional is used where sensible.
19
20 There is not a single source file for each class. The different
21 modules have the following resposibilities:
22
23 * wayland: implement the basic wayland proxy wrappers and listeners,
24            this includes the rather large ivi_controller and its
25            dependent objects.
26 * app: the actual (or intended as) implementation of the application
27 * util: generic utilities
28 * main: AFB service entrypoint
29 * layout: layout related functionality (as of yet mostly unused/not functional)
30 * layers: layer related functionality (mostly just mapping surfaces
31           to layers, parsing configuration)
32 * result: a simple wrapper over optional, that allows to signal an error
33           and a description.
34 * json_helper: some json helper functions, mainly used for transforming
35                structures to json.
36 * controller_hooks: hooks to be used be the genivi::ivi_controller
37                     to call to the App class, without knowing of its
38                     existence.
39
40
41
42 Building
43 ---------- ----- -- - -
44 Prerequisites are the AGL app-framework-binder (which "infects" us with
45 json-c and libsystemd - i.e. these are needed too). Then proceed as follows:
46
47 mkdir build
48 cd build
49 cmake ..
50 make -j
51
52
53
54 Running
55 ---------- ----- -- - -
56 Prerequisites: a compositor implementing the ivi_controller interface must
57 be running and XDG_RUNTIME_DIR must be set so the wayland socket can be found.
58
59 To run from the build directory use:
60
61 afb-daemon --ldpaths=$PWD/src
62
63
64
65 JSON Configurations
66 ---------- ----- -- - -
67 ids.json: This file configures a mapping of surface id to some layer id. Also
68           In this configuration are information on the actual drawing rectangles
69           that applications need to use on a particular layer.
70 layout.json: A layout spcification. It is as of yet mostly unused and if not
71              parsed correctly should not interfere with window manager operation.