2 * Copyright (C) 2004-2008 Kim Woelders
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:
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.
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.
26 #include <Ecore_X_Atoms.h>
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
38 int ecore_x_client_message32_send(Ecore_X_Window win,
41 long d0, long d1, long d2,
44 void ecore_x_window_prop_card32_set(Ecore_X_Window win,
48 int ecore_x_window_prop_card32_get(Ecore_X_Window win,
52 int ecore_x_window_prop_card32_list_get(Ecore_X_Window win,
56 void ecore_x_window_prop_xid_set(Ecore_X_Window win,
61 int ecore_x_window_prop_xid_get(Ecore_X_Window win,
66 int ecore_x_window_prop_xid_list_get(Ecore_X_Window win,
70 void ecore_x_window_prop_xid_list_change(Ecore_X_Window win,
75 void ecore_x_window_prop_atom_set(Ecore_X_Window win,
79 int ecore_x_window_prop_atom_get(Ecore_X_Window win,
83 int ecore_x_window_prop_atom_list_get(Ecore_X_Window win,
85 Ecore_X_Atom ** plst);
86 void ecore_x_window_prop_atom_list_change(Ecore_X_Window win,
90 void ecore_x_window_prop_window_set(Ecore_X_Window win,
94 int ecore_x_window_prop_window_get(Ecore_X_Window win,
98 int ecore_x_window_prop_window_list_get(Ecore_X_Window win,
100 Ecore_X_Window ** plst);
102 void ecore_x_window_prop_string_set(Ecore_X_Window win,
105 char *ecore_x_window_prop_string_get(Ecore_X_Window win,
109 #include "X11/Xatom.h"
110 extern unsigned int atoms_icccm[];
112 #define ECORE_X_ATOM_UTF8_STRING atoms_icccm[8]
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]
124 #define CHECK_COUNT_ICCCM 9
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
135 void ecore_x_icccm_init(void);
137 void ecore_x_icccm_delete_window_send(Ecore_X_Window win,
139 void ecore_x_icccm_take_focus_send(Ecore_X_Window win,
142 void ecore_x_icccm_title_set(Ecore_X_Window win,
144 char *ecore_x_icccm_title_get(Ecore_X_Window win);
145 void ecore_x_icccm_name_class_set(Ecore_X_Window win,
148 void ecore_x_icccm_name_class_get(Ecore_X_Window win,
149 char **name, char **clss);
152 extern unsigned int atoms_netwm[];
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]
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]
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]
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]
178 #define ECORE_X_ATOM_NET_WM_DESKTOP atoms_netwm[17]
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]
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]
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]
218 #define ECORE_X_ATOM_NET_WM_STRUT atoms_netwm[53]
219 #define ECORE_X_ATOM_NET_WM_STRUT_PARTIAL atoms_netwm[54]
221 #define ECORE_X_ATOM_NET_FRAME_EXTENTS atoms_netwm[55]
223 #define ECORE_X_ATOM_NET_WM_ICON atoms_netwm[56]
225 #define ECORE_X_ATOM_NET_WM_USER_TIME atoms_netwm[57]
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]
232 #define ECORE_X_ATOM_NET_WM_PING atoms_netwm[0]
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]
237 #define ECORE_X_ATOM_NET_WM_WINDOW_OPACITY atoms_netwm[60]
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]
245 #if 0 /* Not yet implemented */
246 #define ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS atoms_netwm[0]
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]
254 #define CHECK_COUNT_NETWM 68
256 void ecore_x_netwm_init(void);
258 void ecore_x_netwm_wm_identify(Ecore_X_Window root,
259 Ecore_X_Window check,
260 const char *wm_name);
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,
269 unsigned int n_desks);
270 void ecore_x_netwm_desk_size_set(Ecore_X_Window root,
272 unsigned int height);
273 void ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
275 unsigned int n_desks);
276 void ecore_x_netwm_desk_current_set(Ecore_X_Window root,
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,
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,
292 void ecore_x_netwm_client_active_set(Ecore_X_Window root,
294 void ecore_x_netwm_name_set(Ecore_X_Window win,
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,
299 int ecore_x_netwm_icon_name_get(Ecore_X_Window win,
301 void ecore_x_netwm_visible_name_set(Ecore_X_Window win,
303 int ecore_x_netwm_visible_name_get(Ecore_X_Window win,
305 void ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win,
307 int ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win,
310 void ecore_x_netwm_desktop_set(Ecore_X_Window win,
312 int ecore_x_netwm_desktop_get(Ecore_X_Window win,
315 int ecore_x_netwm_user_time_get(Ecore_X_Window win,
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);
323 void ecore_x_netwm_startup_id_set(Ecore_X_Window win,
325 int ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id);
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);
333 void ecore_x_window_prop_string_list_set(Ecore_X_Window win,
335 char **lst, int num);
336 int ecore_x_window_prop_string_list_get(Ecore_X_Window win,