c/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 |
#ifndef __atoms_h #define __atoms_h #include <X11/Xlib.h> #include <glib.h> #ifdef HAVE_STRING_H # include <string.h> #endif #include "openbox.h" /*! 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 */ /* 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; /* 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_virtual_roots; */ Atom net_desktop_layout; Atom net_showing_desktop; /* root window messages */ Atom net_close_window; Atom net_wm_moveresize; /* application window properties */ /* Atom net_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_icon_geometry; */ Atom net_wm_icon; /* Atom net_wm_pid; */ /* Atom net_wm_handled_icons; */ 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_topright; Atom net_wm_moveresize_size_bottomleft; Atom net_wm_moveresize_size_bottomright; Atom net_wm_moveresize_move; 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_system_tray_windows; Atom kde_net_wm_system_tray_window_for; Atom kde_net_wm_window_type_override; Atom kwm_win_icon; Atom rootpmapid; Atom esetrootid; /* Openbox specific atoms */ Atom openbox_pid; Atom openbox_premax; } Atoms; Atoms prop_atoms; void prop_init(); gboolean prop_get(Window win, Atom prop, Atom type, int size, guchar **data, gulong num); gboolean prop_get_prealloc(Window win, Atom prop, Atom type, int size, guchar *data, gulong num); gboolean prop_get_all(Window win, Atom prop, Atom type, int size, guchar **data, gulong *num); gboolean prop_get_string(Window win, Atom prop, Atom type, guchar **data); gboolean prop_get_strings(Window win, Atom prop, Atom type, GPtrArray *data); void prop_erase(Window win, Atom prop); /* Set an 8-bit property from a string */ #define PROP_SETS(win, prop, type, value) \ (XChangeProperty(ob_display, win, prop_atoms.prop, prop_atoms.type, 8, \ PropModeReplace, (guchar*)value, strlen(value))) /* Set a 32-bit property from a single value */ #define PROP_SET32(win, prop, type, value) \ (XChangeProperty(ob_display, win, prop_atoms.prop, prop_atoms.type, 32, \ PropModeReplace, (guchar*)&value, 1)) /* Set a 32-bit property from an array */ #define PROP_SET32A(win, prop, type, value, num) \ (XChangeProperty(ob_display, win, prop_atoms.prop, prop_atoms.type, 32, \ PropModeReplace, (guchar*)value, num)) /* Get an 8-bit property into a string */ #define PROP_GETS(win, prop, type, value) \ (prop_get_string(win, prop_atoms.prop, prop_atoms.type, \ (guchar**)&value)) /* Get an 8-bit property into a GPtrArray of strings (The strings must be freed, the GPtrArray must already be created.) */ #define PROP_GETSA(win, prop, type, value) \ (prop_get_strings(win, prop_atoms.prop, prop_atoms.type, \ value)) /* Get an entire 8-bit property into an array (which must be freed) */ #define PROP_GET8U(win, prop, type, value, num) \ (prop_get_all(win, prop_atoms.prop, prop_atoms.type, 8, \ (guchar**)&value, &num)) /* Get 1 element of a 32-bit property into a given variable */ #define PROP_GET32(win, prop, type, value) \ (prop_get_prealloc(win, prop_atoms.prop, prop_atoms.type, 32, \ (guchar*)&value, 1)) /* Get an amount of a 32-bit property into an array (which must be freed) */ #define PROP_GET32A(win, prop, type, value, num) \ (prop_get(win, prop_atoms.prop, prop_atoms.type, 32, \ (guchar**)&value, num)) /* Get an entire 32-bit property into an array (which must be freed) */ #define PROP_GET32U(win, prop, type, value, num) \ (prop_get_all(win, prop_atoms.prop, prop_atoms.type, 32, \ (guchar**)&value, &num)) #define PROP_ERASE(win, prop) (prop_erase(win, prop_atoms.prop)) #endif |