File indexing completed on 2024-02-18 16:19:52

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 1999, 2000 Matthias Ettrich <ettrich@kde.org>
0006     SPDX-FileCopyrightText: 2003 Lubos Lunak <l.lunak@kde.org>
0007     SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
0008 
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #pragma once
0013 
0014 #include "utils/xcbutils.h"
0015 
0016 namespace KWin
0017 {
0018 
0019 class KWIN_EXPORT Atoms
0020 {
0021 public:
0022     Atoms();
0023 
0024     Xcb::Atom activities;
0025 
0026     Xcb::Atom wm_protocols;
0027     Xcb::Atom wm_delete_window;
0028     Xcb::Atom wm_take_focus;
0029     Xcb::Atom wm_change_state;
0030     Xcb::Atom wm_client_leader;
0031     Xcb::Atom wm_window_role;
0032     Xcb::Atom wm_state;
0033     Xcb::Atom sm_client_id;
0034 
0035     Xcb::Atom motif_wm_hints;
0036     Xcb::Atom net_wm_context_help;
0037     Xcb::Atom net_wm_ping;
0038     Xcb::Atom net_wm_user_time;
0039     Xcb::Atom kde_net_wm_user_creation_time;
0040     Xcb::Atom net_wm_take_activity;
0041     Xcb::Atom net_wm_window_opacity;
0042     Xcb::Atom xdnd_selection;
0043     Xcb::Atom xdnd_aware;
0044     Xcb::Atom xdnd_enter;
0045     Xcb::Atom xdnd_type_list;
0046     Xcb::Atom xdnd_position;
0047     Xcb::Atom xdnd_status;
0048     Xcb::Atom xdnd_action_copy;
0049     Xcb::Atom xdnd_action_move;
0050     Xcb::Atom xdnd_action_ask;
0051     Xcb::Atom xdnd_drop;
0052     Xcb::Atom xdnd_leave;
0053     Xcb::Atom xdnd_finished;
0054     Xcb::Atom net_frame_extents;
0055     Xcb::Atom kde_net_wm_frame_strut;
0056     Xcb::Atom net_wm_sync_request_counter;
0057     Xcb::Atom net_wm_sync_request;
0058     Xcb::Atom kde_net_wm_shadow;
0059     Xcb::Atom kde_first_in_window_list;
0060     Xcb::Atom kde_color_sheme;
0061     Xcb::Atom kde_skip_close_animation;
0062     Xcb::Atom kde_screen_edge_show;
0063     Xcb::Atom utf8_string;
0064     Xcb::Atom text;
0065     Xcb::Atom uri_list;
0066     Xcb::Atom netscape_url;
0067     Xcb::Atom moz_url;
0068     Xcb::Atom wl_surface_id;
0069     Xcb::Atom wl_surface_serial;
0070     Xcb::Atom kde_net_wm_appmenu_service_name;
0071     Xcb::Atom kde_net_wm_appmenu_object_path;
0072     Xcb::Atom clipboard;
0073     Xcb::Atom timestamp;
0074     Xcb::Atom targets;
0075     Xcb::Atom delete_atom;
0076     Xcb::Atom incr;
0077     Xcb::Atom wl_selection;
0078     Xcb::Atom primary;
0079     Xcb::Atom edid;
0080 
0081     /**
0082      * @internal
0083      */
0084     void retrieveHelpers();
0085 
0086 private:
0087     // helper atoms we need to resolve to "announce" support (see #172028)
0088     Xcb::Atom m_dtSmWindowInfo;
0089     Xcb::Atom m_motifSupport;
0090     bool m_helpersRetrieved;
0091 };
0092 
0093 extern KWIN_EXPORT Atoms *atoms;
0094 
0095 } // namespace