summaryrefslogtreecommitdiffstats
path: root/README
blob: 51cc0c88c96e77144e226fa53b6540e91c559ffb (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
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.