2 // Copyright (c) 2002 - 2002 Ben Janens (ben at orodu.net)
4 // Permission is hereby granted, free of charge, to any person obtaining a
5 // copy of this software and associated documentation files (the "Software"),
6 // to deal in the Software without restriction, including without limitation
7 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 // and/or sell copies of the Software, and to permit persons to whom the
9 // Software is 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 or substantial portions of the Software.
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 // DEALINGS IN THE SOFTWARE.
26 #include <X11/Xatom.h>
52 blackbox_change_attributes
,
55 // blackbox-protocol atoms (wm -> client)
56 blackbox_structure_messages
,
57 blackbox_notify_startup
,
58 blackbox_notify_window_add
,
59 blackbox_notify_window_del
,
60 blackbox_notify_window_focus
,
61 blackbox_notify_current_workspace
,
62 blackbox_notify_workspace_count
,
63 blackbox_notify_window_raise
,
64 blackbox_notify_window_lower
,
65 // blackbox-protocol atoms (client -> wm)
66 blackbox_change_workspace
,
67 blackbox_change_window_focus
,
68 blackbox_cycle_window_focus
,
71 // root window properties
74 net_client_list_stacking
,
75 net_number_of_desktops
,
82 net_supporting_wm_check
,
84 // root window messages
87 // application window properties
98 // application protocols
101 // constant for how many atoms exist in the enumerator
118 typedef std::vector
<Window
> SupportWindows
;
121 // windows used to specify support for NETWM
122 SupportWindows _support_windows
;
123 Atom _atoms
[NUM_ATOMS
];
125 Atom
create(const char *name
) const;
127 void setValue(Window win
, AvailableAtoms atom
, Atom type
, unsigned char *data
,
128 int size
, int nelements
, bool append
) const;
129 bool getValue(Window win
, AvailableAtoms atom
, Atom type
,
130 unsigned long *nelements
, unsigned char **value
,
134 XAtom(const XAtom
&);
135 XAtom
& operator=(const XAtom
&);
141 // setup support on a screen, each screen should call this once in its
143 void setSupported(const ScreenInfo
*screen
);
145 void setValue(Window win
, AvailableAtoms atom
, AtomType type
,
146 unsigned long value
) const;
147 void setValue(Window win
, AvailableAtoms atom
, StringType type
,
148 const std::string
&value
) const;
150 void addValue(Window win
, AvailableAtoms atom
, AtomType type
,
151 unsigned long value
) const;
152 void addValue(Window win
, AvailableAtoms atom
, StringType type
,
153 const std::string
&value
) const;
155 // the 'value' is allocated inside the function and
156 // delete [] value needs to be called when you are done with it.
157 // the 'value' array returned is null terminated, and has 'nelements'
158 // elements in it plus the null.
159 bool getValue(Window win
, AvailableAtoms atom
, AtomType type
,
160 unsigned long *nelements
, unsigned long **value
) const;
161 bool getValue(Window win
, AvailableAtoms atom
, StringType type
,
162 std::string
&value
) const;
164 void eraseValue(Window win
, AvailableAtoms atom
) const;
166 // temporary function!! remove when not used in blackbox.hh anymore!!
167 inline Atom
getAtom(AvailableAtoms a
)
168 { Atom ret
= _atoms
[a
]; assert(ret
!= 0); return ret
; }