1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
3 obt/prop.h for the Openbox window manager
4 Copyright (c) 2006 Mikael Magnusson
5 Copyright (c) 2003-2007 Dana Jansens
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 See the COPYING file for a copy of the GNU General Public License.
30 OBT_PROP_CARDINAL
, /*!< The atom which represents the Cardinal data type */
31 OBT_PROP_WINDOW
, /*!< The atom which represents window ids */
32 OBT_PROP_PIXMAP
, /*!< The atom which represents pixmap ids */
33 OBT_PROP_ATOM
, /*!< The atom which represents atom values */
34 OBT_PROP_STRING
, /*!< The atom which represents ascii strings */
35 OBT_PROP_UTF8
, /*!< The atom which represents utf8-encoded strings */
41 OBT_PROP_WM_COLORMAP_WINDOWS
,
42 OBT_PROP_WM_PROTOCOLS
,
44 OBT_PROP_WM_DELETE_WINDOW
,
45 OBT_PROP_WM_TAKE_FOCUS
,
46 OBT_PROP_WM_CHANGE_STATE
,
48 OBT_PROP_WM_ICON_NAME
,
50 OBT_PROP_WM_WINDOW_ROLE
,
51 OBT_PROP_WM_CLIENT_MACHINE
,
53 OBT_PROP_WM_CLIENT_LEADER
,
54 OBT_PROP_MOTIF_WM_HINTS
,
57 OBT_PROP_SM_CLIENT_ID
,
61 /* Atoms that are used inside messages - these don't go in net_supported */
63 OBT_PROP_NET_WM_MOVERESIZE_SIZE_TOPLEFT
,
64 OBT_PROP_NET_WM_MOVERESIZE_SIZE_TOP
,
65 OBT_PROP_NET_WM_MOVERESIZE_SIZE_TOPRIGHT
,
66 OBT_PROP_NET_WM_MOVERESIZE_SIZE_RIGHT
,
67 OBT_PROP_NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT
,
68 OBT_PROP_NET_WM_MOVERESIZE_SIZE_BOTTOM
,
69 OBT_PROP_NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT
,
70 OBT_PROP_NET_WM_MOVERESIZE_SIZE_LEFT
,
71 OBT_PROP_NET_WM_MOVERESIZE_MOVE
,
72 OBT_PROP_NET_WM_MOVERESIZE_SIZE_KEYBOARD
,
73 OBT_PROP_NET_WM_MOVERESIZE_MOVE_KEYBOARD
,
74 OBT_PROP_NET_WM_MOVERESIZE_CANCEL
,
76 OBT_PROP_NET_WM_STATE_ADD
,
77 OBT_PROP_NET_WM_STATE_REMOVE
,
78 OBT_PROP_NET_WM_STATE_TOGGLE
,
80 OBT_PROP_NET_WM_ORIENTATION_HORZ
,
81 OBT_PROP_NET_WM_ORIENTATION_VERT
,
82 OBT_PROP_NET_WM_TOPLEFT
,
83 OBT_PROP_NET_WM_TOPRIGHT
,
84 OBT_PROP_NET_WM_BOTTOMRIGHT
,
85 OBT_PROP_NET_WM_BOTTOMLEFT
,
87 OBT_PROP_PRIVATE_PADDING1
,
88 OBT_PROP_PRIVATE_PADDING2
,
89 OBT_PROP_PRIVATE_PADDING3
,
90 OBT_PROP_PRIVATE_PADDING4
,
91 OBT_PROP_PRIVATE_PADDING5
,
92 OBT_PROP_PRIVATE_PADDING6
,
93 OBT_PROP_PRIVATE_PADDING7
,
94 OBT_PROP_PRIVATE_PADDING8
,
95 OBT_PROP_PRIVATE_PADDING9
,
96 OBT_PROP_PRIVATE_PADDING10
,
97 OBT_PROP_PRIVATE_PADDING11
,
98 OBT_PROP_PRIVATE_PADDING12
,
100 /* Everything below here must go in net_supported on the root window */
102 /* root window properties */
103 OBT_PROP_NET_SUPPORTED
,
104 OBT_PROP_NET_CLIENT_LIST
,
105 OBT_PROP_NET_CLIENT_LIST_STACKING
,
106 OBT_PROP_NET_NUMBER_OF_DESKTOPS
,
107 OBT_PROP_NET_DESKTOP_GEOMETRY
,
108 OBT_PROP_NET_DESKTOP_VIEWPORT
,
109 OBT_PROP_NET_CURRENT_DESKTOP
,
110 OBT_PROP_NET_DESKTOP_NAMES
,
111 OBT_PROP_NET_ACTIVE_WINDOW
,
112 /* Atom net_restack_window;*/
113 OBT_PROP_NET_WORKAREA
,
114 OBT_PROP_NET_SUPPORTING_WM_CHECK
,
115 OBT_PROP_NET_DESKTOP_LAYOUT
,
116 OBT_PROP_NET_SHOWING_DESKTOP
,
118 /* root window messages */
119 OBT_PROP_NET_CLOSE_WINDOW
,
120 OBT_PROP_NET_WM_MOVERESIZE
,
121 OBT_PROP_NET_MOVERESIZE_WINDOW
,
122 OBT_PROP_NET_REQUEST_FRAME_EXTENTS
,
123 OBT_PROP_NET_RESTACK_WINDOW
,
125 /* helpful hints to apps that aren't used for anything */
126 OBT_PROP_NET_WM_FULL_PLACEMENT
,
128 /* startup-notification extension */
129 OBT_PROP_NET_STARTUP_ID
,
131 /* application window properties */
132 OBT_PROP_NET_WM_NAME
,
133 OBT_PROP_NET_WM_VISIBLE_NAME
,
134 OBT_PROP_NET_WM_ICON_NAME
,
135 OBT_PROP_NET_WM_VISIBLE_ICON_NAME
,
136 OBT_PROP_NET_WM_DESKTOP
,
137 OBT_PROP_NET_WM_WINDOW_TYPE
,
138 OBT_PROP_NET_WM_STATE
,
139 OBT_PROP_NET_WM_STRUT
,
140 OBT_PROP_NET_WM_STRUT_PARTIAL
,
141 OBT_PROP_NET_WM_ICON
,
142 OBT_PROP_NET_WM_ICON_GEOMETRY
,
144 OBT_PROP_NET_WM_ALLOWED_ACTIONS
,
145 OBT_PROP_NET_WM_USER_TIME
,
146 /* OBT_PROP_NET_WM_USER_TIME_WINDOW, */
147 OBT_PROP_NET_FRAME_EXTENTS
,
149 /* application protocols */
150 OBT_PROP_NET_WM_PING
,
152 OBT_PROP_NET_WM_SYNC_REQUEST
,
153 OBT_PROP_NET_WM_SYNC_REQUEST_COUNTER
,
156 OBT_PROP_NET_WM_WINDOW_TYPE_DESKTOP
,
157 OBT_PROP_NET_WM_WINDOW_TYPE_DOCK
,
158 OBT_PROP_NET_WM_WINDOW_TYPE_TOOLBAR
,
159 OBT_PROP_NET_WM_WINDOW_TYPE_MENU
,
160 OBT_PROP_NET_WM_WINDOW_TYPE_UTILITY
,
161 OBT_PROP_NET_WM_WINDOW_TYPE_SPLASH
,
162 OBT_PROP_NET_WM_WINDOW_TYPE_DIALOG
,
163 OBT_PROP_NET_WM_WINDOW_TYPE_NORMAL
,
165 OBT_PROP_NET_WM_ACTION_MOVE
,
166 OBT_PROP_NET_WM_ACTION_RESIZE
,
167 OBT_PROP_NET_WM_ACTION_MINIMIZE
,
168 OBT_PROP_NET_WM_ACTION_SHADE
,
169 /* OBT_PROP_NET_WM_ACTION_STICK,*/
170 OBT_PROP_NET_WM_ACTION_MAXIMIZE_HORZ
,
171 OBT_PROP_NET_WM_ACTION_MAXIMIZE_VERT
,
172 OBT_PROP_NET_WM_ACTION_FULLSCREEN
,
173 OBT_PROP_NET_WM_ACTION_CHANGE_DESKTOP
,
174 OBT_PROP_NET_WM_ACTION_CLOSE
,
175 OBT_PROP_NET_WM_ACTION_ABOVE
,
176 OBT_PROP_NET_WM_ACTION_BELOW
,
178 OBT_PROP_NET_WM_STATE_MODAL
,
179 /* OBT_PROP_NET_WM_STATE_STICKY,*/
180 OBT_PROP_NET_WM_STATE_MAXIMIZED_VERT
,
181 OBT_PROP_NET_WM_STATE_MAXIMIZED_HORZ
,
182 OBT_PROP_NET_WM_STATE_SHADED
,
183 OBT_PROP_NET_WM_STATE_SKIP_TASKBAR
,
184 OBT_PROP_NET_WM_STATE_SKIP_PAGER
,
185 OBT_PROP_NET_WM_STATE_HIDDEN
,
186 OBT_PROP_NET_WM_STATE_FULLSCREEN
,
187 OBT_PROP_NET_WM_STATE_ABOVE
,
188 OBT_PROP_NET_WM_STATE_BELOW
,
189 OBT_PROP_NET_WM_STATE_DEMANDS_ATTENTION
,
193 OBT_PROP_KDE_WM_CHANGE_STATE
,
194 OBT_PROP_KDE_NET_WM_FRAME_STRUT
,
195 OBT_PROP_KDE_NET_WM_WINDOW_TYPE_OVERRIDE
,
202 /* Openbox specific atoms */
204 OBT_PROP_OB_WM_ACTION_UNDECORATE
,
205 OBT_PROP_OB_WM_STATE_UNDECORATED
,
206 OBT_PROP_OPENBOX_PID
, /* this is depreecated in favour of ob_control */
208 OBT_PROP_OB_CONFIG_FILE
,
214 Atom
obt_prop_atom(ObtPropAtom a
);
216 gboolean
obt_prop_get32(Window win
, Atom prop
, Atom type
, guint32
*ret
);
217 gboolean
obt_prop_get_array32(Window win
, Atom prop
, Atom type
, guint32
**ret
,
219 gboolean
obt_prop_get_string_locale(Window win
, Atom prop
, gchar
**ret
);
220 gboolean
obt_prop_get_string_utf8(Window win
, Atom prop
, gchar
**ret
);
221 gboolean
obt_prop_get_strings_locale(Window win
, Atom prop
, gchar
***ret
);
222 gboolean
obt_prop_get_strings_utf8(Window win
, Atom prop
, gchar
***ret
);
224 void obt_prop_set32(Window win
, Atom prop
, Atom type
, gulong val
);
225 void obt_prop_set_array32(Window win
, Atom prop
, Atom type
, gulong
*val
,
227 void obt_prop_set_string_locale(Window win
, Atom prop
, const gchar
*val
);
228 void obt_prop_set_string_utf8(Window win
, Atom prop
, const gchar
*val
);
229 void obt_prop_set_strings_locale(Window win
, Atom prop
, const gchar
**strs
);
230 void obt_prop_set_strings_utf8(Window win
, Atom prop
, const gchar
**strs
);
232 void obt_prop_erase(Window win
, Atom prop
);
234 void obt_prop_message(gint screen
, Window about
, Atom messagetype
,
235 glong data0
, glong data1
, glong data2
, glong data3
,
236 glong data4
, glong mask
);
237 void obt_prop_message_to(Window to
, Window about
, Atom messagetype
,
238 glong data0
, glong data1
, glong data2
, glong data3
,
239 glong data4
, glong mask
);
241 #define OBT_PROP_ATOM(prop) obt_prop_atom(OBT_PROP_##prop)
243 #define OBT_PROP_GET32(win, prop, type, ret) \
244 (obt_prop_get32(win, OBT_PROP_ATOM(prop), OBT_PROP_ATOM(type), ret))
245 #define OBT_PROP_GETA32(win, prop, type, ret, nret) \
246 (obt_prop_get_array32(win, OBT_PROP_ATOM(prop), OBT_PROP_ATOM(type), \
248 #define OBT_PROP_GETS(win, prop, type, ret) \
249 (obt_prop_get_string_##type(win, OBT_PROP_ATOM(prop), ret))
250 #define OBT_PROP_GETSS(win, prop, type, ret) \
251 (obt_prop_get_strings_##type(win, OBT_PROP_ATOM(prop), ret))
253 #define OBT_PROP_SET32(win, prop, type, val) \
254 (obt_prop_set32(win, OBT_PROP_ATOM(prop), OBT_PROP_ATOM(type), val))
255 #define OBT_PROP_SETA32(win, prop, type, val, num) \
256 (obt_prop_set_array32(win, OBT_PROP_ATOM(prop), OBT_PROP_ATOM(type), \
258 #define OBT_PROP_SETS(win, prop, type, val) \
259 (obt_prop_set_string_##type(win, OBT_PROP_ATOM(prop), val))
260 #define OBT_PROP_SETSS(win, prop, type, strs) \
261 (obt_prop_set_strings_##type(win, OBT_PROP_ATOM(prop), strs))
263 #define OBT_PROP_ERASE(win, prop) (obt_prop_erase(win, OBT_PROP_ATOM(prop)))
265 #define OBT_PROP_MSG(screen, about, msgtype, data0, data1, data2, data3, \
267 (obt_prop_message(screen, about, OBT_PROP_ATOM(msgtype), \
268 data0, data1, data2, data3, data4, \
269 SubstructureNotifyMask | SubstructureRedirectMask))
271 #define OBT_PROP_MSG_TO(to, about, msgtype, data0, data1, data2, data3, \
273 (obt_prop_message_to(to, about, OBT_PROP_ATOM(msgtype), \
274 data0, data1, data2, data3, data4, mask))
278 #endif /* __obt_prop_h */