1 /* 2 SPDX-FileCopyrightText: 2015 Thomas Lübking <thomas.luebking@gmail.com> 3 4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 5 */ 6 7 #if (!defined ATOMS_H) || (defined ENUM_CREATE_CHAR_ARRAY) 8 9 #undef ENUM_BEGIN 10 #undef ENUM 11 #undef ENUM_END 12 #undef ENUM_COUNT 13 14 // the following macros are set in a way so that 15 // the code below will either construct an enum for "<typ>" 16 // or a const *char array "<typ>Strings" containing all enum 17 // symbols as strings, depending on whether ENUM_CREATE_CHAR_ARRAY is 18 // defined 19 // The enum gets one extra item "<typ>Count", describing also the 20 // length of the array 21 22 // The header is safe for re-inclusion unless you define ENUM_CREATE_CHAR_ARRAY 23 // which is therefore undefined after usage 24 25 // => You *must* "#define ENUM_CREATE_CHAR_ARRAY 1" *every* time you want to create 26 // a string array! 27 28 // clang-format off 29 30 #ifndef ENUM_CREATE_CHAR_ARRAY 31 #define ATOMS_H 32 #define ENUM_BEGIN(typ) enum typ { 33 #define ENUM(nam) nam 34 #define ENUM_COUNT(typ) , typ##Count 35 #else 36 #define ENUM_BEGIN(typ) const char * typ##Strings [] = { 37 #define ENUM(nam) #nam 38 #define ENUM_COUNT(typ) 39 #undef ENUM_CREATE_CHAR_ARRAY 40 #endif 41 42 #define ENUM_END(typ) }; 43 44 ENUM_BEGIN(KwsAtom) 45 ENUM(UTF8_STRING), 46 47 // root window properties 48 ENUM(_NET_SUPPORTED), 49 ENUM(_NET_SUPPORTING_WM_CHECK), 50 ENUM(_NET_CLIENT_LIST), 51 ENUM(_NET_CLIENT_LIST_STACKING), 52 ENUM(_NET_NUMBER_OF_DESKTOPS), 53 ENUM(_NET_DESKTOP_GEOMETRY), 54 ENUM(_NET_DESKTOP_VIEWPORT), 55 ENUM(_NET_CURRENT_DESKTOP), 56 ENUM(_NET_DESKTOP_NAMES), 57 ENUM(_NET_ACTIVE_WINDOW), 58 ENUM(_NET_WORKAREA), 59 ENUM(_NET_VIRTUAL_ROOTS), 60 ENUM(_NET_DESKTOP_LAYOUT), 61 ENUM(_NET_SHOWING_DESKTOP), 62 63 // root window messages 64 ENUM(_NET_CLOSE_WINDOW), 65 ENUM(_NET_RESTACK_WINDOW), 66 ENUM(_NET_WM_MOVERESIZE), 67 ENUM(_NET_MOVERESIZE_WINDOW), 68 69 // application window properties 70 ENUM(_NET_WM_NAME), 71 ENUM(_NET_WM_VISIBLE_NAME), 72 ENUM(_NET_WM_ICON_NAME), 73 ENUM(_NET_WM_VISIBLE_ICON_NAME), 74 ENUM(_NET_WM_DESKTOP), 75 ENUM(_NET_WM_WINDOW_TYPE), 76 ENUM(_NET_WM_STATE), 77 ENUM(_NET_WM_STRUT), 78 ENUM(_NET_WM_STRUT_PARTIAL), 79 ENUM(_NET_WM_ICON_GEOMETRY), 80 ENUM(_NET_WM_ICON), 81 ENUM(_NET_WM_PID), 82 ENUM(_NET_WM_USER_TIME), 83 ENUM(_NET_WM_HANDLED_ICONS), 84 ENUM(_NET_STARTUP_ID), 85 ENUM(_NET_WM_ALLOWED_ACTIONS), 86 ENUM(WM_WINDOW_ROLE), 87 ENUM(_NET_FRAME_EXTENTS), 88 ENUM(_NET_WM_WINDOW_OPACITY), 89 ENUM(_NET_WM_FULLSCREEN_MONITORS), 90 ENUM(_NET_WM_OPAQUE_REGION), 91 ENUM(_KDE_NET_WM_DESKTOP_FILE), 92 // used to determine whether application window is managed or not 93 ENUM(WM_STATE), 94 95 // application window types 96 ENUM(_NET_WM_WINDOW_TYPE_NORMAL), 97 ENUM(_NET_WM_WINDOW_TYPE_DESKTOP), 98 ENUM(_NET_WM_WINDOW_TYPE_DOCK), 99 ENUM(_NET_WM_WINDOW_TYPE_TOOLBAR), 100 ENUM(_NET_WM_WINDOW_TYPE_MENU), 101 ENUM(_NET_WM_WINDOW_TYPE_DIALOG), 102 ENUM(_NET_WM_WINDOW_TYPE_UTILITY), 103 ENUM(_NET_WM_WINDOW_TYPE_SPLASH), 104 ENUM(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU), 105 ENUM(_NET_WM_WINDOW_TYPE_POPUP_MENU), 106 ENUM(_NET_WM_WINDOW_TYPE_TOOLTIP), 107 ENUM(_NET_WM_WINDOW_TYPE_NOTIFICATION), 108 ENUM(_NET_WM_WINDOW_TYPE_COMBO), 109 ENUM(_NET_WM_WINDOW_TYPE_DND), 110 111 // application window state 112 ENUM(_NET_WM_STATE_MODAL), 113 ENUM(_NET_WM_STATE_STICKY), 114 ENUM(_NET_WM_STATE_MAXIMIZED_VERT), 115 ENUM(_NET_WM_STATE_MAXIMIZED_HORZ), 116 ENUM(_NET_WM_STATE_SHADED), 117 ENUM(_NET_WM_STATE_SKIP_TASKBAR), 118 ENUM(_NET_WM_STATE_SKIP_PAGER), 119 ENUM(_NET_WM_STATE_HIDDEN), 120 ENUM(_NET_WM_STATE_FULLSCREEN), 121 ENUM(_NET_WM_STATE_ABOVE), 122 ENUM(_NET_WM_STATE_BELOW), 123 ENUM(_NET_WM_STATE_DEMANDS_ATTENTION), 124 ENUM(_NET_WM_STATE_FOCUSED), 125 // KDE-specific atom 126 ENUM(_KDE_NET_WM_STATE_SKIP_SWITCHER), 127 128 // allowed actions 129 ENUM(_NET_WM_ACTION_MOVE), 130 ENUM(_NET_WM_ACTION_RESIZE), 131 ENUM(_NET_WM_ACTION_MINIMIZE), 132 ENUM(_NET_WM_ACTION_SHADE), 133 ENUM(_NET_WM_ACTION_STICK), 134 ENUM(_NET_WM_ACTION_MAXIMIZE_VERT), 135 ENUM(_NET_WM_ACTION_MAXIMIZE_HORZ), 136 ENUM(_NET_WM_ACTION_FULLSCREEN), 137 ENUM(_NET_WM_ACTION_CHANGE_DESKTOP), 138 ENUM(_NET_WM_ACTION_CLOSE), 139 140 // KDE extensions 141 ENUM(_KDE_NET_WM_FRAME_STRUT), 142 ENUM(_KDE_NET_WM_WINDOW_TYPE_OVERRIDE), 143 ENUM(_KDE_NET_WM_WINDOW_TYPE_TOPMENU), 144 ENUM(_KDE_NET_WM_WINDOW_TYPE_ON_SCREEN_DISPLAY), 145 ENUM(_KDE_NET_WM_WINDOW_TYPE_CRITICAL_NOTIFICATION), 146 ENUM(_KDE_NET_WM_TEMPORARY_RULES), 147 ENUM(_NET_WM_FRAME_OVERLAP), 148 ENUM(_KDE_NET_WM_APPMENU_SERVICE_NAME), 149 ENUM(_KDE_NET_WM_APPMENU_OBJECT_PATH), 150 151 // deprecated and naming convention violation 152 ENUM(_NET_WM_STATE_STAYS_ON_TOP), 153 154 // GTK extensions 155 ENUM(_GTK_FRAME_EXTENTS), 156 157 // application protocols 158 ENUM(WM_PROTOCOLS), 159 ENUM(WM_TAKE_FOCUS), 160 ENUM(WM_DELETE_WINDOW), 161 ENUM(_NET_WM_PING), 162 ENUM(_NET_WM_SYNC_REQUEST), 163 ENUM(_NET_WM_CONTEXT_HELP), 164 165 // ability flags 166 ENUM(_NET_WM_FULL_PLACEMENT), 167 ENUM(_NET_WM_BYPASS_COMPOSITOR), 168 ENUM(_KDE_NET_WM_ACTIVITIES), 169 ENUM(_KDE_NET_WM_BLOCK_COMPOSITING), 170 ENUM(_KDE_NET_WM_SHADOW) 171 ENUM_COUNT(KwsAtom) 172 ENUM_END(KwsAtom) 173 174 #endif // ATOMS_H 175