aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: f7146a95a1ddc8476c724180041040d1a20de880 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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.