openbox/prop.h (raw)
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 210 211 212 213 214 215 216 217 218 |
/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- prop.h for the Openbox window manager Copyright (c) 2006 Mikael Magnusson Copyright (c) 2003 Ben Jansens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. See the COPYING file for a copy of the GNU General Public License. */ #ifndef __atoms_h #define __atoms_h #include <X11/Xlib.h> #include <glib.h> #ifdef HAVE_STRING_H # include <string.h> #endif /*! The atoms on the X server which this class will cache */ typedef struct Atoms { /* types */ Atom cardinal; /*!< The atom which represents the Cardinal data type */ Atom window; /*!< The atom which represents window ids */ Atom pixmap; /*!< The atom which represents pixmap ids */ Atom atom; /*!< The atom which represents atom values */ Atom string; /*!< The atom which represents ascii strings */ Atom utf8; /*!< The atom which represents utf8-encoded strings */ /* selection stuff */ Atom manager; /* window hints */ Atom wm_colormap_windows; Atom wm_protocols; Atom wm_state; Atom wm_delete_window; Atom wm_take_focus; Atom wm_change_state; Atom wm_name; Atom wm_icon_name; Atom wm_class; Atom wm_window_role; Atom motif_wm_hints; /* SM atoms */ Atom sm_client_id; /* NETWM atoms */ /* root window properties */ Atom net_supported; Atom net_client_list; Atom net_client_list_stacking; Atom net_number_of_desktops; Atom net_desktop_geometry; Atom net_desktop_viewport; Atom net_current_desktop; Atom net_desktop_names; Atom net_active_window; Atom net_workarea; Atom net_supporting_wm_check; Atom net_desktop_layout; Atom net_showing_desktop; /* root window messages */ Atom net_close_window; Atom net_wm_moveresize; Atom net_moveresize_window; /* startup-notification extension */ Atom net_startup_id; /* application window properties */ Atom net_wm_name; Atom net_wm_visible_name; Atom net_wm_icon_name; Atom net_wm_visible_icon_name; Atom net_wm_desktop; Atom net_wm_window_type; Atom net_wm_state; Atom net_wm_strut; Atom net_wm_strut_partial; Atom net_wm_icon; /* Atom net_wm_pid; */ Atom net_wm_allowed_actions; /* application protocols */ /* Atom Atom net_wm_ping; */ Atom net_wm_window_type_desktop; Atom net_wm_window_type_dock; Atom net_wm_window_type_toolbar; Atom net_wm_window_type_menu; Atom net_wm_window_type_utility; Atom net_wm_window_type_splash; Atom net_wm_window_type_dialog; Atom net_wm_window_type_normal; Atom net_wm_moveresize_size_topleft; Atom net_wm_moveresize_size_top; Atom net_wm_moveresize_size_topright; Atom net_wm_moveresize_size_right; Atom net_wm_moveresize_size_bottomright; Atom net_wm_moveresize_size_bottom; Atom net_wm_moveresize_size_bottomleft; Atom net_wm_moveresize_size_left; Atom net_wm_moveresize_move; Atom net_wm_moveresize_size_keyboard; Atom net_wm_moveresize_move_keyboard; Atom net_wm_action_move; Atom net_wm_action_resize; Atom net_wm_action_minimize; Atom net_wm_action_shade; Atom net_wm_action_stick; Atom net_wm_action_maximize_horz; Atom net_wm_action_maximize_vert; Atom net_wm_action_fullscreen; Atom net_wm_action_change_desktop; Atom net_wm_action_close; Atom net_wm_state_modal; Atom net_wm_state_sticky; Atom net_wm_state_maximized_vert; Atom net_wm_state_maximized_horz; Atom net_wm_state_shaded; Atom net_wm_state_skip_taskbar; Atom net_wm_state_skip_pager; Atom net_wm_state_hidden; Atom net_wm_state_fullscreen; Atom net_wm_state_above; Atom net_wm_state_below; Atom net_wm_state_add; Atom net_wm_state_remove; Atom net_wm_state_toggle; Atom net_wm_orientation_horz; Atom net_wm_orientation_vert; Atom net_wm_topleft; Atom net_wm_topright; Atom net_wm_bottomright; Atom net_wm_bottomleft; /* Extra atoms */ Atom kde_net_wm_frame_strut; Atom kde_wm_change_state; Atom kde_net_wm_window_type_override; Atom kwm_win_icon; Atom rootpmapid; Atom esetrootid; /* Openbox specific atoms */ Atom openbox_pid; Atom ob_wm_state_undecorated; Atom ob_control; } Atoms; Atoms prop_atoms; void prop_startup(); gboolean prop_get32(Window win, Atom prop, Atom type, guint32 *ret); gboolean prop_get_array32(Window win, Atom prop, Atom type, guint32 **ret, guint *nret); gboolean prop_get_string_locale(Window win, Atom prop, gchar **ret); gboolean prop_get_string_utf8(Window win, Atom prop, gchar **ret); gboolean prop_get_strings_locale(Window win, Atom prop, gchar ***ret); gboolean prop_get_strings_utf8(Window win, Atom prop, gchar ***ret); void prop_set32(Window win, Atom prop, Atom type, gulong val); void prop_set_array32(Window win, Atom prop, Atom type, gulong *val, guint num); void prop_set_string_utf8(Window win, Atom prop, gchar *val); void prop_set_strings_utf8(Window win, Atom prop, gchar **strs); void prop_erase(Window win, Atom prop); void prop_message(Window about, Atom messagetype, glong data0, glong data1, glong data2, glong data3, glong mask); #define PROP_GET32(win, prop, type, ret) \ (prop_get32(win, prop_atoms.prop, prop_atoms.type, ret)) #define PROP_GETA32(win, prop, type, ret, nret) \ (prop_get_array32(win, prop_atoms.prop, prop_atoms.type, ret, \ nret)) #define PROP_GETS(win, prop, type, ret) \ (prop_get_string_##type(win, prop_atoms.prop, ret)) #define PROP_GETSS(win, prop, type, ret) \ (prop_get_strings_##type(win, prop_atoms.prop, ret)) #define PROP_SET32(win, prop, type, val) \ prop_set32(win, prop_atoms.prop, prop_atoms.type, val) #define PROP_SETA32(win, prop, type, val, num) \ prop_set_array32(win, prop_atoms.prop, prop_atoms.type, val, num) #define PROP_SETS(win, prop, val) \ prop_set_string_utf8(win, prop_atoms.prop, val) #define PROP_SETSS(win, prop, strs) \ prop_set_strings_utf8(win, prop_atoms.prop, strs) #define PROP_ERASE(win, prop) prop_erase(win, prop_atoms.prop) #define PROP_MSG(about, msgtype, data0, data1, data2, data3) \ (prop_message(about, prop_atoms.msgtype, data0, data1, data2, data3, \ SubstructureNotifyMask | SubstructureRedirectMask)) #endif |