redraw_fixer: a couple of style fixes
[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 The configuration for the window manager (the layers.json file, as specified
60 int the next section) needs to be available. The environment variable
61 LAYERS_JSON=/path/to/layers.json needs to be set.
62
63 To run from the build directory use:
64
65 env LAYERS_JSON=/path/to/layers.json afb-daemon --ldpaths=/path/to/winman-binding/
66
67
68
69 JSON Configurations
70 ---------- ----- -- - -
71 layers.json: Layers and layout description. In order for the window manager to
72              work, this file needs to be available and passed to the window manager
73              using the environment variable LAYERS_JSON. An *example* layers.json is
74              provided.