dont use #ifdef HAVE_FOO for ansi functions/headers
[mikachu/openbox.git] / cwmcc / atom.h
1 #ifndef __cwmcc_atom_h
2 #define __cwmcc_atom_h
3
4 #include <X11/Xlib.h>
5
6 /*! Atoms for basic data types for properties */
7 struct TypeAtoms {
8     Atom cardinal; /*!< The atom which represents the Cardinal data type */
9     Atom window;   /*!< The atom which represents window ids */
10     Atom pixmap;   /*!< The atom which represents pixmap ids */
11     Atom atom;     /*!< The atom which represents atom values */
12     Atom string;   /*!< The atom which represents ascii strings */
13     Atom utf8;     /*!< The atom which represents utf8-encoded strings */
14 };
15
16 /*! Atoms for client window properties */
17 struct ClientAtoms {
18     Atom wm_protocols;
19     Atom wm_state;
20     Atom wm_name;
21     Atom wm_icon_name;
22     Atom wm_class;
23     Atom wm_window_role;
24     Atom motif_wm_hints;
25     Atom net_wm_name;
26     Atom net_wm_visible_name;
27     Atom net_wm_icon_name;
28     Atom net_wm_visible_icon_name;
29     Atom net_wm_desktop;
30     Atom net_wm_window_type;
31     Atom net_wm_state;
32     Atom net_wm_strut;
33     Atom net_wm_icon;
34     Atom net_wm_allowed_actions;
35     Atom kwm_win_icon;
36     Atom openbox_premax;
37 };
38
39 /*! Atoms for root window properties */
40 struct RootAtoms {
41     Atom net_supported;
42     Atom net_client_list;
43     Atom net_client_list_stacking;
44     Atom net_number_of_desktops;
45     Atom net_desktop_geometry;
46     Atom net_desktop_viewport;
47     Atom net_current_desktop;
48     Atom net_desktop_names;
49     Atom net_active_window;
50     Atom net_workarea;
51     Atom net_supporting_wm_check;
52     Atom net_desktop_layout;
53     Atom net_showing_desktop;
54     Atom openbox_pid;
55 };
56
57 /*! Atoms used for protocols or client messages, or for setting as values of
58   properties */
59 struct DataAtoms {
60     /* window hints */
61     Atom wm_delete_window;
62     Atom wm_take_focus;
63     Atom wm_change_state;
64     Atom net_close_window;
65     Atom net_wm_moveresize;
66
67     Atom net_wm_window_type_desktop;
68     Atom net_wm_window_type_dock;
69     Atom net_wm_window_type_toolbar;
70     Atom net_wm_window_type_menu;
71     Atom net_wm_window_type_utility;
72     Atom net_wm_window_type_splash;
73     Atom net_wm_window_type_dialog;
74     Atom net_wm_window_type_normal;
75     Atom kde_net_wm_window_type_override;
76
77     Atom net_wm_moveresize_size_topleft;
78     Atom net_wm_moveresize_size_topright;
79     Atom net_wm_moveresize_size_bottomleft;
80     Atom net_wm_moveresize_size_bottomright;
81     Atom net_wm_moveresize_move;
82
83     Atom net_wm_action_move;
84     Atom net_wm_action_resize;
85     Atom net_wm_action_minimize;
86     Atom net_wm_action_shade;
87     Atom net_wm_action_stick;
88     Atom net_wm_action_maximize_horz;
89     Atom net_wm_action_maximize_vert;
90     Atom net_wm_action_fullscreen;
91     Atom net_wm_action_change_desktop;
92     Atom net_wm_action_close;
93
94     Atom net_wm_state_modal;
95     Atom net_wm_state_sticky;
96     Atom net_wm_state_maximized_vert;
97     Atom net_wm_state_maximized_horz;
98     Atom net_wm_state_shaded;
99     Atom net_wm_state_skip_taskbar;
100     Atom net_wm_state_skip_pager;
101     Atom net_wm_state_hidden;
102     Atom net_wm_state_fullscreen;
103     Atom net_wm_state_above;
104     Atom net_wm_state_below;
105
106     Atom net_wm_state_add;
107     Atom net_wm_state_remove;
108     Atom net_wm_state_toggle;
109
110     Atom net_wm_orientation_horz;
111     Atom net_wm_orientation_vert;
112     Atom net_wm_topleft;
113     Atom net_wm_topright;
114     Atom net_wm_bottomright;
115     Atom net_wm_bottomleft;
116 };
117
118 extern struct TypeAtoms cwmcc_atom_type;
119 extern struct ClientAtoms cwmcc_atom_client;
120 extern struct RootAtoms cwmcc_atom_root;
121 extern struct DataAtoms cwmcc_atom_data;
122
123 #define CWMCC_ATOM(type, name) (cwmcc_atom_##type.name)
124
125 void atom_startup();
126
127 #endif