1 /*
2     KWin - the KDE window manager
3     This file is part of the KDE project.
4 
5     SPDX-FileCopyrightText: 1999, 2000 Matthias Ettrich <ettrich@kde.org>
6     SPDX-FileCopyrightText: 2003 Lubos Lunak <l.lunak@kde.org>
7     SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
8 
9     SPDX-License-Identifier: GPL-2.0-or-later
10 */
11 
12 #ifndef KWIN_ATOMS_H
13 #define KWIN_ATOMS_H
14 
15 #include "xcbutils.h"
16 
17 namespace KWin
18 {
19 
20 class KWIN_EXPORT Atoms
21 {
22 public:
23     Atoms();
24 
25     Xcb::Atom kwin_running;
26     Xcb::Atom activities;
27 
28     Xcb::Atom wm_protocols;
29     Xcb::Atom wm_delete_window;
30     Xcb::Atom wm_take_focus;
31     Xcb::Atom wm_change_state;
32     Xcb::Atom wm_client_leader;
33     Xcb::Atom wm_window_role;
34     Xcb::Atom wm_state;
35     Xcb::Atom sm_client_id;
36 
37     Xcb::Atom motif_wm_hints;
38     Xcb::Atom net_wm_context_help;
39     Xcb::Atom net_wm_ping;
40     Xcb::Atom net_wm_user_time;
41     Xcb::Atom kde_net_wm_user_creation_time;
42     Xcb::Atom net_wm_take_activity;
43     Xcb::Atom net_wm_window_opacity;
44     Xcb::Atom xdnd_selection;
45     Xcb::Atom xdnd_aware;
46     Xcb::Atom xdnd_enter;
47     Xcb::Atom xdnd_type_list;
48     Xcb::Atom xdnd_position;
49     Xcb::Atom xdnd_status;
50     Xcb::Atom xdnd_action_copy;
51     Xcb::Atom xdnd_action_move;
52     Xcb::Atom xdnd_action_ask;
53     Xcb::Atom xdnd_drop;
54     Xcb::Atom xdnd_leave;
55     Xcb::Atom xdnd_finished;
56     Xcb::Atom net_frame_extents;
57     Xcb::Atom kde_net_wm_frame_strut;
58     Xcb::Atom net_wm_sync_request_counter;
59     Xcb::Atom net_wm_sync_request;
60     Xcb::Atom kde_net_wm_shadow;
61     Xcb::Atom kde_first_in_window_list;
62     Xcb::Atom kde_color_sheme;
63     Xcb::Atom kde_skip_close_animation;
64     Xcb::Atom kde_screen_edge_show;
65     Xcb::Atom kwin_dbus_service;
66     Xcb::Atom utf8_string;
67     Xcb::Atom text;
68     Xcb::Atom uri_list;
69     Xcb::Atom netscape_url;
70     Xcb::Atom moz_url;
71     Xcb::Atom wl_surface_id;
72     Xcb::Atom kde_net_wm_appmenu_service_name;
73     Xcb::Atom kde_net_wm_appmenu_object_path;
74     Xcb::Atom clipboard;
75     Xcb::Atom timestamp;
76     Xcb::Atom targets;
77     Xcb::Atom delete_atom;
78     Xcb::Atom incr;
79     Xcb::Atom wl_selection;
80     Xcb::Atom primary;
81 
82     /**
83      * @internal
84      */
85     void retrieveHelpers();
86 
87 private:
88     // helper atoms we need to resolve to "announce" support (see #172028)
89     Xcb::Atom m_dtSmWindowInfo;
90     Xcb::Atom m_motifSupport;
91     bool m_helpersRetrieved;
92 };
93 
94 
95 extern KWIN_EXPORT Atoms* atoms;
96 
97 } // namespace
98 
99 #endif
100