File indexing completed on 2024-04-21 03:59:21

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