File indexing completed on 2024-05-05 12:24:26
0001 /* 0002 SPDX-FileCopyrightText: 2015 Thomas Lübking <thomas.luebking@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #if (!defined ATOMS_H) || (defined ENUM_CREATE_CHAR_ARRAY) 0008 0009 #undef ENUM_BEGIN 0010 #undef ENUM 0011 #undef ENUM_END 0012 #undef ENUM_COUNT 0013 0014 // the following macros are set in a way so that 0015 // the code below will either construct an enum for "<typ>" 0016 // or a const *char array "<typ>Strings" containing all enum 0017 // symbols as strings, depending on whether ENUM_CREATE_CHAR_ARRAY is 0018 // defined 0019 // The enum gets one extra item "<typ>Count", describing also the 0020 // length of the array 0021 0022 // The header is safe for re-inclusion unless you define ENUM_CREATE_CHAR_ARRAY 0023 // which is therefore undefined after usage 0024 0025 // => You *must* "#define ENUM_CREATE_CHAR_ARRAY 1" *every* time you want to create 0026 // a string array! 0027 0028 // clang-format off 0029 0030 #ifndef ENUM_CREATE_CHAR_ARRAY 0031 #define ATOMS_H 0032 #define ENUM_BEGIN(typ) enum typ { 0033 #define ENUM(nam) nam 0034 #define ENUM_COUNT(typ) , typ##Count 0035 #else 0036 #define ENUM_BEGIN(typ) const char * typ##Strings [] = { 0037 #define ENUM(nam) #nam 0038 #define ENUM_COUNT(typ) 0039 #undef ENUM_CREATE_CHAR_ARRAY 0040 #endif 0041 0042 #define ENUM_END(typ) }; 0043 0044 ENUM_BEGIN(KwsAtom) 0045 ENUM(UTF8_STRING), 0046 0047 // root window properties 0048 ENUM(_NET_SUPPORTED), 0049 ENUM(_NET_SUPPORTING_WM_CHECK), 0050 ENUM(_NET_CLIENT_LIST), 0051 ENUM(_NET_CLIENT_LIST_STACKING), 0052 ENUM(_NET_NUMBER_OF_DESKTOPS), 0053 ENUM(_NET_DESKTOP_GEOMETRY), 0054 ENUM(_NET_DESKTOP_VIEWPORT), 0055 ENUM(_NET_CURRENT_DESKTOP), 0056 ENUM(_NET_DESKTOP_NAMES), 0057 ENUM(_NET_ACTIVE_WINDOW), 0058 ENUM(_NET_WORKAREA), 0059 ENUM(_NET_VIRTUAL_ROOTS), 0060 ENUM(_NET_DESKTOP_LAYOUT), 0061 ENUM(_NET_SHOWING_DESKTOP), 0062 0063 // root window messages 0064 ENUM(_NET_CLOSE_WINDOW), 0065 ENUM(_NET_RESTACK_WINDOW), 0066 ENUM(_NET_WM_MOVERESIZE), 0067 ENUM(_NET_MOVERESIZE_WINDOW), 0068 0069 // application window properties 0070 ENUM(_NET_WM_NAME), 0071 ENUM(_NET_WM_VISIBLE_NAME), 0072 ENUM(_NET_WM_ICON_NAME), 0073 ENUM(_NET_WM_VISIBLE_ICON_NAME), 0074 ENUM(_NET_WM_DESKTOP), 0075 ENUM(_NET_WM_WINDOW_TYPE), 0076 ENUM(_NET_WM_STATE), 0077 ENUM(_NET_WM_STRUT), 0078 ENUM(_NET_WM_STRUT_PARTIAL), 0079 ENUM(_NET_WM_ICON_GEOMETRY), 0080 ENUM(_NET_WM_ICON), 0081 ENUM(_NET_WM_PID), 0082 ENUM(_NET_WM_USER_TIME), 0083 ENUM(_NET_WM_HANDLED_ICONS), 0084 ENUM(_NET_STARTUP_ID), 0085 ENUM(_NET_WM_ALLOWED_ACTIONS), 0086 ENUM(WM_WINDOW_ROLE), 0087 ENUM(_NET_FRAME_EXTENTS), 0088 ENUM(_NET_WM_WINDOW_OPACITY), 0089 ENUM(_NET_WM_FULLSCREEN_MONITORS), 0090 ENUM(_NET_WM_OPAQUE_REGION), 0091 ENUM(_KDE_NET_WM_DESKTOP_FILE), 0092 // used to determine whether application window is managed or not 0093 ENUM(WM_STATE), 0094 0095 // application window types 0096 ENUM(_NET_WM_WINDOW_TYPE_NORMAL), 0097 ENUM(_NET_WM_WINDOW_TYPE_DESKTOP), 0098 ENUM(_NET_WM_WINDOW_TYPE_DOCK), 0099 ENUM(_NET_WM_WINDOW_TYPE_TOOLBAR), 0100 ENUM(_NET_WM_WINDOW_TYPE_MENU), 0101 ENUM(_NET_WM_WINDOW_TYPE_DIALOG), 0102 ENUM(_NET_WM_WINDOW_TYPE_UTILITY), 0103 ENUM(_NET_WM_WINDOW_TYPE_SPLASH), 0104 ENUM(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU), 0105 ENUM(_NET_WM_WINDOW_TYPE_POPUP_MENU), 0106 ENUM(_NET_WM_WINDOW_TYPE_TOOLTIP), 0107 ENUM(_NET_WM_WINDOW_TYPE_NOTIFICATION), 0108 ENUM(_NET_WM_WINDOW_TYPE_COMBO), 0109 ENUM(_NET_WM_WINDOW_TYPE_DND), 0110 0111 // application window state 0112 ENUM(_NET_WM_STATE_MODAL), 0113 ENUM(_NET_WM_STATE_STICKY), 0114 ENUM(_NET_WM_STATE_MAXIMIZED_VERT), 0115 ENUM(_NET_WM_STATE_MAXIMIZED_HORZ), 0116 ENUM(_NET_WM_STATE_SHADED), 0117 ENUM(_NET_WM_STATE_SKIP_TASKBAR), 0118 ENUM(_NET_WM_STATE_SKIP_PAGER), 0119 ENUM(_NET_WM_STATE_HIDDEN), 0120 ENUM(_NET_WM_STATE_FULLSCREEN), 0121 ENUM(_NET_WM_STATE_ABOVE), 0122 ENUM(_NET_WM_STATE_BELOW), 0123 ENUM(_NET_WM_STATE_DEMANDS_ATTENTION), 0124 ENUM(_NET_WM_STATE_FOCUSED), 0125 // KDE-specific atom 0126 ENUM(_KDE_NET_WM_STATE_SKIP_SWITCHER), 0127 0128 // allowed actions 0129 ENUM(_NET_WM_ACTION_MOVE), 0130 ENUM(_NET_WM_ACTION_RESIZE), 0131 ENUM(_NET_WM_ACTION_MINIMIZE), 0132 ENUM(_NET_WM_ACTION_SHADE), 0133 ENUM(_NET_WM_ACTION_STICK), 0134 ENUM(_NET_WM_ACTION_MAXIMIZE_VERT), 0135 ENUM(_NET_WM_ACTION_MAXIMIZE_HORZ), 0136 ENUM(_NET_WM_ACTION_FULLSCREEN), 0137 ENUM(_NET_WM_ACTION_CHANGE_DESKTOP), 0138 ENUM(_NET_WM_ACTION_CLOSE), 0139 0140 // KDE extensions 0141 ENUM(_KDE_NET_WM_FRAME_STRUT), 0142 ENUM(_KDE_NET_WM_WINDOW_TYPE_OVERRIDE), 0143 ENUM(_KDE_NET_WM_WINDOW_TYPE_TOPMENU), 0144 ENUM(_KDE_NET_WM_WINDOW_TYPE_ON_SCREEN_DISPLAY), 0145 ENUM(_KDE_NET_WM_WINDOW_TYPE_CRITICAL_NOTIFICATION), 0146 ENUM(_KDE_NET_WM_WINDOW_TYPE_APPLET_POPUP), 0147 ENUM(_KDE_NET_WM_TEMPORARY_RULES), 0148 ENUM(_NET_WM_FRAME_OVERLAP), 0149 ENUM(_KDE_NET_WM_APPMENU_SERVICE_NAME), 0150 ENUM(_KDE_NET_WM_APPMENU_OBJECT_PATH), 0151 0152 // deprecated and naming convention violation 0153 ENUM(_NET_WM_STATE_STAYS_ON_TOP), 0154 0155 // GTK extensions 0156 ENUM(_GTK_FRAME_EXTENTS), 0157 ENUM(_GTK_APPLICATION_ID), 0158 ENUM(_GTK_SHOW_WINDOW_MENU), 0159 0160 // application protocols 0161 ENUM(WM_PROTOCOLS), 0162 ENUM(WM_TAKE_FOCUS), 0163 ENUM(WM_DELETE_WINDOW), 0164 ENUM(_NET_WM_PING), 0165 ENUM(_NET_WM_SYNC_REQUEST), 0166 ENUM(_NET_WM_CONTEXT_HELP), 0167 0168 // ability flags 0169 ENUM(_NET_WM_FULL_PLACEMENT), 0170 ENUM(_NET_WM_BYPASS_COMPOSITOR), 0171 ENUM(_KDE_NET_WM_ACTIVITIES), 0172 ENUM(_KDE_NET_WM_BLOCK_COMPOSITING), 0173 ENUM(_KDE_NET_WM_SHADOW) 0174 ENUM_COUNT(KwsAtom) 0175 ENUM_END(KwsAtom) 0176 0177 #endif // ATOMS_H