chiark / gitweb /
Imported Upstream version 1.0.0
[e16] / src / e16-ecore_hints.h
1 /*
2  * Copyright (C) 2004-2008 Kim Woelders
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to
6  * deal in the Software without restriction, including without limitation the
7  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8  * sell copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies of the Software, its documentation and marketing & publicity
13  * materials, and acknowledgment shall be given in the documentation, materials
14  * and software packages that this Software was used.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22  */
23 #ifdef USE_ECORE_X
24
25 #include <Ecore_X.h>
26 #include <Ecore_X_Atoms.h>
27
28 #else
29
30 #define Ecore_X_ID       XID
31 #define Ecore_X_Drawable Drawable
32 #define Ecore_X_Window   Window
33 #define Ecore_X_Pixmap   Pixmap
34 #define Ecore_X_Atom     Atom
35 #define Ecore_X_Time     Time
36 #define Ecore_X_GC       GC
37
38 int                 ecore_x_client_message32_send(Ecore_X_Window win,
39                                                   Ecore_X_Atom type,
40                                                   long mask,
41                                                   long d0, long d1, long d2,
42                                                   long d3, long d4);
43
44 void                ecore_x_window_prop_card32_set(Ecore_X_Window win,
45                                                    Ecore_X_Atom atom,
46                                                    unsigned int *val,
47                                                    unsigned int num);
48 int                 ecore_x_window_prop_card32_get(Ecore_X_Window win,
49                                                    Ecore_X_Atom atom,
50                                                    unsigned int *val,
51                                                    unsigned int len);
52 int                 ecore_x_window_prop_card32_list_get(Ecore_X_Window win,
53                                                         Ecore_X_Atom atom,
54                                                         unsigned int **plst);
55
56 void                ecore_x_window_prop_xid_set(Ecore_X_Window win,
57                                                 Ecore_X_Atom atom,
58                                                 Ecore_X_Atom type,
59                                                 Ecore_X_ID * lst,
60                                                 unsigned int num);
61 int                 ecore_x_window_prop_xid_get(Ecore_X_Window win,
62                                                 Ecore_X_Atom atom,
63                                                 Ecore_X_Atom type,
64                                                 Ecore_X_ID * lst,
65                                                 unsigned int len);
66 int                 ecore_x_window_prop_xid_list_get(Ecore_X_Window win,
67                                                      Ecore_X_Atom atom,
68                                                      Ecore_X_Atom type,
69                                                      Ecore_X_ID ** plst);
70 void                ecore_x_window_prop_xid_list_change(Ecore_X_Window win,
71                                                         Ecore_X_Atom atom,
72                                                         Ecore_X_Atom type,
73                                                         Ecore_X_ID item,
74                                                         int op);
75 void                ecore_x_window_prop_atom_set(Ecore_X_Window win,
76                                                  Ecore_X_Atom atom,
77                                                  Ecore_X_Atom * val,
78                                                  unsigned int num);
79 int                 ecore_x_window_prop_atom_get(Ecore_X_Window win,
80                                                  Ecore_X_Atom atom,
81                                                  Ecore_X_Atom * val,
82                                                  unsigned int len);
83 int                 ecore_x_window_prop_atom_list_get(Ecore_X_Window win,
84                                                       Ecore_X_Atom atom,
85                                                       Ecore_X_Atom ** plst);
86 void                ecore_x_window_prop_atom_list_change(Ecore_X_Window win,
87                                                          Ecore_X_Atom atom,
88                                                          Ecore_X_Atom item,
89                                                          int op);
90 void                ecore_x_window_prop_window_set(Ecore_X_Window win,
91                                                    Ecore_X_Atom atom,
92                                                    Ecore_X_Window * val,
93                                                    unsigned int num);
94 int                 ecore_x_window_prop_window_get(Ecore_X_Window win,
95                                                    Ecore_X_Atom atom,
96                                                    Ecore_X_Window * val,
97                                                    unsigned int len);
98 int                 ecore_x_window_prop_window_list_get(Ecore_X_Window win,
99                                                         Ecore_X_Atom atom,
100                                                         Ecore_X_Window ** plst);
101
102 void                ecore_x_window_prop_string_set(Ecore_X_Window win,
103                                                    Ecore_X_Atom atom,
104                                                    const char *str);
105 char               *ecore_x_window_prop_string_get(Ecore_X_Window win,
106                                                    Ecore_X_Atom atom);
107
108 /* Misc. */
109 #include "X11/Xatom.h"
110 extern unsigned int atoms_icccm[];
111
112 #define ECORE_X_ATOM_UTF8_STRING                atoms_icccm[8]
113
114 /* ICCCM */
115 #define ECORE_X_ATOM_WM_STATE                   atoms_icccm[0]
116 #define ECORE_X_ATOM_WM_WINDOW_ROLE             atoms_icccm[1]
117 #define ECORE_X_ATOM_WM_CLIENT_LEADER           atoms_icccm[2]
118 #define ECORE_X_ATOM_WM_COLORMAP_WINDOWS        atoms_icccm[3]
119 #define ECORE_X_ATOM_WM_CHANGE_STATE            atoms_icccm[4]
120 #define ECORE_X_ATOM_WM_PROTOCOLS               atoms_icccm[5]
121 #define ECORE_X_ATOM_WM_DELETE_WINDOW           atoms_icccm[6]
122 #define ECORE_X_ATOM_WM_TAKE_FOCUS              atoms_icccm[7]
123
124 #define CHECK_COUNT_ICCCM 9
125
126 #define ECORE_X_ATOM_WM_CLASS                   XA_WM_CLASS
127 #define ECORE_X_ATOM_WM_NAME                    XA_WM_NAME
128 #define ECORE_X_ATOM_WM_COMMAND                 XA_WM_COMMAND
129 #define ECORE_X_ATOM_WM_ICON_NAME               XA_WM_ICON_NAME
130 #define ECORE_X_ATOM_WM_CLIENT_MACHINE          XA_WM_CLIENT_MACHINE
131 #define ECORE_X_ATOM_WM_HINTS                   XA_WM_HINTS
132 #define ECORE_X_ATOM_WM_NORMAL_HINTS            XA_WM_NORMAL_HINTS
133 #define ECORE_X_ATOM_WM_TRANSIENT_FOR           XA_WM_TRANSIENT_FOR
134
135 void                ecore_x_icccm_init(void);
136
137 void                ecore_x_icccm_delete_window_send(Ecore_X_Window win,
138                                                      Ecore_X_Time ts);
139 void                ecore_x_icccm_take_focus_send(Ecore_X_Window win,
140                                                   Ecore_X_Time ts);
141
142 void                ecore_x_icccm_title_set(Ecore_X_Window win,
143                                             const char *title);
144 char               *ecore_x_icccm_title_get(Ecore_X_Window win);
145 void                ecore_x_icccm_name_class_set(Ecore_X_Window win,
146                                                  const char *name,
147                                                  const char *clss);
148 void                ecore_x_icccm_name_class_get(Ecore_X_Window win,
149                                                  char **name, char **clss);
150
151 /* NETWM (EWMH) */
152 extern unsigned int atoms_netwm[];
153
154 /* Window manager info */
155 #define ECORE_X_ATOM_NET_SUPPORTED                      atoms_netwm[0]
156 #define ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK            atoms_netwm[1]
157
158 /* Desktop status/requests */
159 #define ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS             atoms_netwm[2]
160 #define ECORE_X_ATOM_NET_VIRTUAL_ROOTS                  atoms_netwm[3]
161 #define ECORE_X_ATOM_NET_DESKTOP_GEOMETRY               atoms_netwm[4]
162 #define ECORE_X_ATOM_NET_DESKTOP_NAMES                  atoms_netwm[5]
163 #define ECORE_X_ATOM_NET_DESKTOP_VIEWPORT               atoms_netwm[6]
164 #define ECORE_X_ATOM_NET_WORKAREA                       atoms_netwm[7]
165 #define ECORE_X_ATOM_NET_CURRENT_DESKTOP                atoms_netwm[8]
166 #define ECORE_X_ATOM_NET_SHOWING_DESKTOP                atoms_netwm[9]
167
168 #define ECORE_X_ATOM_NET_ACTIVE_WINDOW                  atoms_netwm[10]
169 #define ECORE_X_ATOM_NET_CLIENT_LIST                    atoms_netwm[11]
170 #define ECORE_X_ATOM_NET_CLIENT_LIST_STACKING           atoms_netwm[12]
171
172 /* Client window props/client messages */
173 #define ECORE_X_ATOM_NET_WM_NAME                        atoms_netwm[13]
174 #define ECORE_X_ATOM_NET_WM_VISIBLE_NAME                atoms_netwm[14]
175 #define ECORE_X_ATOM_NET_WM_ICON_NAME                   atoms_netwm[15]
176 #define ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME           atoms_netwm[16]
177
178 #define ECORE_X_ATOM_NET_WM_DESKTOP                     atoms_netwm[17]
179
180 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE                 atoms_netwm[18]
181 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP         atoms_netwm[19]
182 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK            atoms_netwm[20]
183 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR         atoms_netwm[21]
184 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU            atoms_netwm[22]
185 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY         atoms_netwm[23]
186 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH          atoms_netwm[24]
187 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG          atoms_netwm[25]
188 #define ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL          atoms_netwm[26]
189
190 #define ECORE_X_ATOM_NET_WM_STATE                       atoms_netwm[27]
191 #define ECORE_X_ATOM_NET_WM_STATE_MODAL                 atoms_netwm[28]
192 #define ECORE_X_ATOM_NET_WM_STATE_STICKY                atoms_netwm[29]
193 #define ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT        atoms_netwm[30]
194 #define ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ        atoms_netwm[31]
195 #define ECORE_X_ATOM_NET_WM_STATE_SHADED                atoms_netwm[32]
196 #define ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR          atoms_netwm[33]
197 #define ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER            atoms_netwm[34]
198 #define ECORE_X_ATOM_NET_WM_STATE_HIDDEN                atoms_netwm[35]
199 #define ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN            atoms_netwm[36]
200 #define ECORE_X_ATOM_NET_WM_STATE_ABOVE                 atoms_netwm[37]
201 #define ECORE_X_ATOM_NET_WM_STATE_BELOW                 atoms_netwm[38]
202 #define ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION     atoms_netwm[39]
203
204 #define ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS             atoms_netwm[40]
205 #define ECORE_X_ATOM_NET_WM_ACTION_MOVE                 atoms_netwm[41]
206 #define ECORE_X_ATOM_NET_WM_ACTION_RESIZE               atoms_netwm[42]
207 #define ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE             atoms_netwm[43]
208 #define ECORE_X_ATOM_NET_WM_ACTION_SHADE                atoms_netwm[44]
209 #define ECORE_X_ATOM_NET_WM_ACTION_STICK                atoms_netwm[45]
210 #define ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ        atoms_netwm[46]
211 #define ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT        atoms_netwm[47]
212 #define ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN           atoms_netwm[48]
213 #define ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP       atoms_netwm[49]
214 #define ECORE_X_ATOM_NET_WM_ACTION_CLOSE                atoms_netwm[50]
215 #define ECORE_X_ATOM_NET_WM_ACTION_ABOVE                atoms_netwm[51]
216 #define ECORE_X_ATOM_NET_WM_ACTION_BELOW                atoms_netwm[52]
217
218 #define ECORE_X_ATOM_NET_WM_STRUT                       atoms_netwm[53]
219 #define ECORE_X_ATOM_NET_WM_STRUT_PARTIAL               atoms_netwm[54]
220
221 #define ECORE_X_ATOM_NET_FRAME_EXTENTS                  atoms_netwm[55]
222
223 #define ECORE_X_ATOM_NET_WM_ICON                        atoms_netwm[56]
224
225 #define ECORE_X_ATOM_NET_WM_USER_TIME                   atoms_netwm[57]
226
227 #if 0                           /* Not used */
228 #define ECORE_X_ATOM_NET_WM_ICON_GEOMETRY               atoms_netwm[0]
229 #define ECORE_X_ATOM_NET_WM_PID                         atoms_netwm[0]
230 #define ECORE_X_ATOM_NET_WM_HANDLED_ICONS               atoms_netwm[0]
231
232 #define ECORE_X_ATOM_NET_WM_PING                        atoms_netwm[0]
233 #endif
234 #define ECORE_X_ATOM_NET_WM_SYNC_REQUEST                atoms_netwm[58]
235 #define ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER        atoms_netwm[59]
236
237 #define ECORE_X_ATOM_NET_WM_WINDOW_OPACITY              atoms_netwm[60]
238
239 /* Misc window ops */
240 #define ECORE_X_ATOM_NET_CLOSE_WINDOW                   atoms_netwm[61]
241 #define ECORE_X_ATOM_NET_MOVERESIZE_WINDOW              atoms_netwm[62]
242 #define ECORE_X_ATOM_NET_WM_MOVERESIZE                  atoms_netwm[63]
243 #define ECORE_X_ATOM_NET_RESTACK_WINDOW                 atoms_netwm[64]
244
245 #if 0                           /* Not yet implemented */
246 #define ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS          atoms_netwm[0]
247 #endif
248
249 /* Startup notification */
250 #define ECORE_X_ATOM_NET_STARTUP_ID                     atoms_netwm[65]
251 #define ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN             atoms_netwm[66]
252 #define ECORE_X_ATOM_NET_STARTUP_INFO                   atoms_netwm[67]
253
254 #define CHECK_COUNT_NETWM 68
255
256 void                ecore_x_netwm_init(void);
257
258 void                ecore_x_netwm_wm_identify(Ecore_X_Window root,
259                                               Ecore_X_Window check,
260                                               const char *wm_name);
261
262 void                ecore_x_netwm_desk_count_set(Ecore_X_Window root,
263                                                  unsigned int n_desks);
264 void                ecore_x_netwm_desk_roots_set(Ecore_X_Window root,
265                                                  Ecore_X_Window * vroots,
266                                                  unsigned int n_desks);
267 void                ecore_x_netwm_desk_names_set(Ecore_X_Window root,
268                                                  const char **names,
269                                                  unsigned int n_desks);
270 void                ecore_x_netwm_desk_size_set(Ecore_X_Window root,
271                                                 unsigned int width,
272                                                 unsigned int height);
273 void                ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
274                                                      unsigned int *areas,
275                                                      unsigned int n_desks);
276 void                ecore_x_netwm_desk_current_set(Ecore_X_Window root,
277                                                    unsigned int desk);
278 void                ecore_x_netwm_desk_viewports_set(Ecore_X_Window root,
279                                                      unsigned int *origins,
280                                                      unsigned int n_desks);
281 void                ecore_x_netwm_showing_desktop_set(Ecore_X_Window root,
282                                                       int on);
283
284 void                ecore_x_netwm_client_list_set(Ecore_X_Window root,
285                                                   Ecore_X_Window * p_clients,
286                                                   unsigned int n_clients);
287 void                ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root,
288                                                            Ecore_X_Window *
289                                                            p_clients,
290                                                            unsigned int
291                                                            n_clients);
292 void                ecore_x_netwm_client_active_set(Ecore_X_Window root,
293                                                     Ecore_X_Window win);
294 void                ecore_x_netwm_name_set(Ecore_X_Window win,
295                                            const char *name);
296 int                 ecore_x_netwm_name_get(Ecore_X_Window win, char **name);
297 void                ecore_x_netwm_icon_name_set(Ecore_X_Window win,
298                                                 const char *name);
299 int                 ecore_x_netwm_icon_name_get(Ecore_X_Window win,
300                                                 char **name);
301 void                ecore_x_netwm_visible_name_set(Ecore_X_Window win,
302                                                    const char *name);
303 int                 ecore_x_netwm_visible_name_get(Ecore_X_Window win,
304                                                    char **name);
305 void                ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win,
306                                                         const char *name);
307 int                 ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win,
308                                                         char **name);
309
310 void                ecore_x_netwm_desktop_set(Ecore_X_Window win,
311                                               unsigned int desk);
312 int                 ecore_x_netwm_desktop_get(Ecore_X_Window win,
313                                               unsigned int *desk);
314
315 int                 ecore_x_netwm_user_time_get(Ecore_X_Window win,
316                                                 unsigned int *ts);
317
318 void                ecore_x_netwm_opacity_set(Ecore_X_Window win,
319                                               unsigned int opacity);
320 int                 ecore_x_netwm_opacity_get(Ecore_X_Window win,
321                                               unsigned int *opacity);
322
323 void                ecore_x_netwm_startup_id_set(Ecore_X_Window win,
324                                                  const char *id);
325 int                 ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id);
326
327 #endif
328
329 void                ecore_x_icccm_state_set_iconic(Ecore_X_Window win);
330 void                ecore_x_icccm_state_set_normal(Ecore_X_Window win);
331 void                ecore_x_icccm_state_set_withdrawn(Ecore_X_Window win);
332
333 void                ecore_x_window_prop_string_list_set(Ecore_X_Window win,
334                                                         Ecore_X_Atom atom,
335                                                         char **lst, int num);
336 int                 ecore_x_window_prop_string_list_get(Ecore_X_Window win,
337                                                         Ecore_X_Atom atom,
338                                                         char ***plst);