summaryrefslogtreecommitdiffstats
path: root/interfaces/windowmanager.xml
blob: f288b3228376dff46c87d01b4c0c1b9c2181f26c (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<!-- Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License. -->
<node>
	<!--
	  org.agl.windowmanager:
	  @short_description: A Layout-based interface for the WindowManager.

	  A Layout defines a list of surfaces areas.
	-->
	<interface name="org.agl.windowmanager">
		<!--
		  addLayout:
		  @layoutId: A unique ID that represents this layout. If the ID is already in use WINDOWMANAGER_ERROR_ID_ALREADY_DEFINED will be returned.
		  @layoutName: A user readable string for the layout. If the string is already in use WINDOWMANAGER_ERROR_NAME_ALREADY_DEFINED will be returned.
		  @surfaceAreas: A list of surface areas.
		  @error: WINDOWMANAGER_NO_ERROR or the first error that occurred.

		  Add a layout definition to the WindowManayer layout database.
		  The layout database is temoprary and not stored persistently. It has to be recreated by the client after
		  a WindowManager restart.
		-->
		<method name="addLayout">
			<arg name="layoutId" type="i" direction="in"/>
			<arg name="layoutName" type="s" direction="in"/>
			<arg name="surfaceAreas" type="a(iiii)" direction="in"/>
			<annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="QList&lt;LayoutArea&gt;"/>
			<arg name="error" type="i" direction="out"/>
		</method>

		<!--
		  deleteLayoutById:
		  @layoutId: The ID of the layout to delete.
		  @error: WINDOWMANAGER_NO_ERROR or the first error that occurred.

		  Deletes the layout with the given ID. This cannot be the current active layout!
		-->
		<method name="deleteLayoutById">
			<arg name="layoutId" type="i" direction="in"/>
			<arg name="error" type="i" direction="out"/>
		</method>

		<!--
		  setLayoutById:
		  @layoutId: The ID of the layout to activate.
		  @error: WINDOWMANAGER_NO_ERROR or the first error that occurred.

		  Switch to the layout with the given ID.
		-->
		<method name="setLayoutById">
			<arg name="layoutId" type="i" direction="in"/>
			<arg name="error" type="i" direction="out"/>
		</method>
		<!--
		  setLayoutByName:
		  @layoutName: The name of the layout to activate.
		  @error: WINDOWMANAGER_NO_ERROR or the first error that occurred.

		  Switch to the layout with the given name.
		-->
		<method name="setLayoutByName">
			<arg name="layoutName" type="s" direction="in"/>
			<arg name="error" type="i" direction="out"/>
		</method>

		<!--
		  getLayoutName:
		  @layoutId: The ID of the requested layout name.
		  @layoutName: The name of the layout with the given ID.

		  Request the name of the layout with the given ID. This does not set or activate a layout.
		  It is just returning the name of the given layout.
		-->
		<method name="getLayoutName">
			<arg name="layoutId" type="i" direction="in"/>
			<arg name="layoutName" type="s" direction="out"/>
		</method>

		<!--
		  layout:
		  The current active layout with all its information.
		-->
		<property>
			<arg name="layout" type="(isa(iiii))" access="read"/>
			<annotation name="org.qtproject.QtDBus.QtTypeName" value="Layout"/>
		</property>
		<!--
		  layoutId:
		  The current active layout id. This property is redundant, since its info is already available
		  in the property layout. But this property is more lightweight.
		-->
		<property name="layoutId" type="i" access="read"/>
		<!--
		  layoutName:
		  The name of the current active layout. This property is redundant, since its info is already available
		  in the property layout. But this property is more lightweight.
		-->
		<property name="layoutName" type="s" access="read"/>

		<!--
		  getAllLayouts:
		  @layouts: A list of all layouts.

		  Returns a list of all layouts that were added to the WindowManager.
		-->
		<method name="getAllLayouts">
			<arg name="layoutIds" type="a(isa(iiii))" direction="out"/>
			<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList&lt;Layout&gt;"/>
		</method>

		<!--
		  getAvailableLayouts:
		  @numberOfAppSurfaces: The ID of the requested layout name.
		  @layoutIds: A list of layouts that offer the exact requested ammount of surface render areas.

		  Returns a list of layouts that offer the exact requested ammount of surface render areas.
		  If the list is empty, no layout fits the exact ammount.
		-->

		<method name="getAvailableLayouts">
			<arg name="numberOfAppSurfaces" type="i" direction="in"/>
			<arg name="layoutIds" type="ai" direction="out"/>
			<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList&lt;int&gt;"/>
		</method>

		<!--
		  setSurfaceToLayoutArea:
		  @surfaceId: The ID of the surface that shall be positioned.
		  @layoutAreaId: The ID of the layout area where the surface shall be rendered.
		  @error: WINDOWMANAGER_NO_ERROR or the first error that occurred.

		  The surface will be scaled to the size of the layout area.
		  The surface will be made visible with this call.
		-->
		<method name="setSurfaceToLayoutArea">
			<arg name="surfaceId" type="i" direction="in"/>
			<arg name="layoutAreaId" type="i" direction="in"/>
			<arg name="error" type="i" direction="out"/>
		</method>

		<!--
		  getAvailableSurfaces:
		  @surfaceIds: A list of all known surfaceIds except for the surfaces created by the Home Screen app.

		  If no surfaces are available, the returned list is empty.
		-->
		<method name="getAvailableSurfaces">
			<arg name="surfaceIds" type="a(i)" direction="out"/>
			<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList&lt;int&gt;"/> 
		</method>

		<!--
		  surfaceVisibilityChanged:
		  @surfaceId: The surface that changed.
		  @visible: True, if the surface is visible.

		  This is emitted when the visible property of the surfaces changes.
		-->
		<signal name="surfaceVisibilityChanged">
			<arg name="surfaceId" type="i"/>
			<arg name="visible" type="b"/>
		</signal>

		<!--
		  showLayer:
		  @layer: The ID of the layer to show. POPUP=0, HOMESCREEN_OVERLAY=1, APPS=2, HOMESCREEN=3
		  @pid: The PID of the app to show. (used only when layer is APPS=2)

		  Show complete layers.
		  By default, all layers are shown.
		-->
		<method name="showLayer">
			<arg name="layer" type="i" direction="in"/>
			<arg name="pid" type="i" direction="in"/>
		</method>
		<!--
		  showAppLayer:
		  @pid: The PID of the app to show.

		  Show layer for application .
		-->
		<method name="showAppLayer">
			<arg name="name" type="s" direction="in"/>
			<arg name="pid" type="i" direction="in"/>
		</method>
		<!--
		  hideLayer:
		  @layer: The ID of the layer to hide. POPUP=0, HOMESCREEN_OVERLAY=1, APPS=2, HOMESCREEN=3

		  Hide complete layers.
		  By default, all layers are shown.
		-->
		<method name="hideLayer">
			<arg name="layer" type="i" direction="in"/>
		</method>
	</interface>
</node>