/* * Matchbox Window Manager II - A lightweight window manager not for the * desktop. * * Authored By Matthew Allum * * Copyright (c) 2005 OpenedHand Ltd - http://o-hand.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef _HAVE_MB_WM_TYPES_H #define _HAVE_MB_WM_TYPES_H #include #if USE_GLIB_MAINLOOP #include #endif #include /* XXX: The plan is to eventually move this into mb-wm-window-manager.h * the way we expose private struct members currently ends up resulting * in *lots* of circular typedef dependencies! */ typedef struct MBWMManager MBWMManager; typedef struct MBWMFuncInfo { void *func; void *data; void *userdata; unsigned long signal; unsigned long id; } MBWMFuncInfo; typedef struct MBGeometry { int x,y; int width,height; } MBGeometry; typedef struct MBWMClientWindowAttributes /* Needs to be sorted */ { Visual *visual; Window root; int class; int bit_gravity; int win_gravity; int backing_store; unsigned long backing_planes; unsigned long backing_pixel; Bool save_under; Colormap colormap; Bool map_installed; int map_state; long all_event_masks; long your_event_mask; long do_not_propagate_mask; Bool override_redirect; } MBWMClientWindowAttributes ; typedef struct MBWMRgbaIcon { int width; int height; unsigned long *pixels; } MBWMRgbaIcon; typedef enum MBWMClientType { MBWMClientTypeApp = (1 << 0), MBWMClientTypeDialog = (1 << 1), MBWMClientTypePanel = (1 << 2), MBWMClientTypeDesktop = (1 << 3), MBWMClientTypeInput = (1 << 4), MBWMClientTypeMenu = (1 << 5), MBWMClientTypeNote = (1 << 6), MBWMClientTypeOverride = (1 << 7), MBWMClientTypeLast = MBWMClientTypeOverride, } MBWMClientType; typedef enum _MBWMCompMgrClientEvent { MBWMCompMgrClientEventNone = 0, MBWMCompMgrClientEventMinimize, MBWMCompMgrClientEventMap, MBWMCompMgrClientEventUnmap, _MBWMCompMgrClientEventLast, } MBWMCompMgrClientEvent; typedef enum _MBWMGravity { MBWMGravityNone = 0, MBWMGravityNorth, MBWMGravityNorthEast, MBWMGravityEast, MBWMGravitySouthEast, MBWMGravitySouth, MBWMGravitySouthWest, MBWMGravityWest, MBWMGravityNorthWest, MBWMGravityCenter, } MBWMGravity; typedef unsigned long MBWMCookie; typedef enum MBWMAtom { /* ICCCM */ MBWM_ATOM_WM_NAME = 0, MBWM_ATOM_WM_STATE, MBWM_ATOM_WM_HINTS, MBWM_ATOM_WM_NORMAL_HINTS, MBWM_ATOM_WM_CHANGE_STATE, MBWM_ATOM_WM_PROTOCOLS, MBWM_ATOM_WM_DELETE_WINDOW, MBWM_ATOM_WM_COLORMAP_WINDOWS, MBWM_ATOM_WM_CLIENT_MACHINE, MBWM_ATOM_WM_TRANSIENT_FOR, MBWM_ATOM_WM_TAKE_FOCUS, /* EWMH */ MBWM_ATOM_NET_WM_WINDOW_TYPE, MBWM_ATOM_NET_WM_WINDOW_TYPE_NORMAL, MBWM_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR, MBWM_ATOM_NET_WM_WINDOW_TYPE_INPUT, MBWM_ATOM_NET_WM_WINDOW_TYPE_DOCK, MBWM_ATOM_NET_WM_WINDOW_TYPE_MENU, MBWM_ATOM_NET_WM_WINDOW_TYPE_POPUP_MENU, MBWM_ATOM_NET_WM_WINDOW_TYPE_DROPDOWN_MENU, MBWM_ATOM_NET_WM_WINDOW_TYPE_DIALOG, MBWM_ATOM_NET_WM_WINDOW_TYPE_SPLASH, MBWM_ATOM_NET_WM_WINDOW_TYPE_DESKTOP, MBWM_ATOM_NET_WM_WINDOW_TYPE_NOTIFICATION, MBWM_ATOM_NET_WM_STATE, MBWM_ATOM_NET_WM_STATE_FULLSCREEN, MBWM_ATOM_NET_WM_STATE_MODAL, MBWM_ATOM_NET_WM_STATE_ABOVE, MBWM_ATOM_NET_WM_STATE_STICKY, MBWM_ATOM_NET_WM_STATE_MAXIMIZED_VERT, MBWM_ATOM_NET_WM_STATE_MAXIMIZED_HORZ, MBWM_ATOM_NET_WM_STATE_SHADED, MBWM_ATOM_NET_WM_STATE_SKIP_TASKBAR, MBWM_ATOM_NET_WM_STATE_SKIP_PAGER, MBWM_ATOM_NET_WM_STATE_HIDDEN, MBWM_ATOM_NET_WM_STATE_BELOW, MBWM_ATOM_NET_WM_STATE_DEMANDS_ATTENTION, MBWM_ATOM_NET_SUPPORTED, MBWM_ATOM_NET_CLIENT_LIST, MBWM_ATOM_NET_NUMBER_OF_DESKTOPS, MBWM_ATOM_NET_ACTIVE_WINDOW, MBWM_ATOM_NET_SUPPORTING_WM_CHECK, MBWM_ATOM_NET_CLOSE_WINDOW, MBWM_ATOM_NET_WM_NAME, MBWM_ATOM_NET_WM_USER_TIME, MBWM_ATOM_NET_CLIENT_LIST_STACKING, MBWM_ATOM_NET_CURRENT_DESKTOP, MBWM_ATOM_NET_WM_DESKTOP, MBWM_ATOM_NET_WM_ICON, MBWM_ATOM_NET_DESKTOP_GEOMETRY, MBWM_ATOM_NET_WORKAREA, MBWM_ATOM_NET_SHOWING_DESKTOP, MBWM_ATOM_NET_DESKTOP_VIEWPORT, MBWM_ATOM_NET_FRAME_EXTENTS, MBWM_ATOM_NET_WM_FULL_PLACEMENT, MBWM_ATOM_NET_WM_ALLOWED_ACTIONS, MBWM_ATOM_NET_WM_ACTION_MOVE, MBWM_ATOM_NET_WM_ACTION_RESIZE, MBWM_ATOM_NET_WM_ACTION_MINIMIZE, MBWM_ATOM_NET_WM_ACTION_SHADE, MBWM_ATOM_NET_WM_ACTION_STICK, MBWM_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ, MBWM_ATOM_NET_WM_ACTION_MAXIMIZE_VERT, MBWM_ATOM_NET_WM_ACTION_FULLSCREEN, MBWM_ATOM_NET_WM_ACTION_CHANGE_DESKTOP, MBWM_ATOM_NET_WM_ACTION_CLOSE, MBWM_ATOM_NET_WM_PING, MBWM_ATOM_NET_WM_PID, /* Startup Notification */ MBWM_ATOM_NET_STARTUP_ID, /* Misc */ MBWM_ATOM_UTF8_STRING, MBWM_ATOM_MOTIF_WM_HINTS, MBWM_ATOM_WIN_SUPPORTING_WM_CHECK, MBWM_ATOM_NET_WM_CONTEXT_HELP, MBWM_ATOM_NET_WM_CONTEXT_ACCEPT, MBWM_ATOM_NET_WM_CONTEXT_CUSTOM, MBWM_ATOM_NET_WM_SYNC_REQUEST, MBWM_ATOM_CM_TRANSLUCENCY, MBWM_ATOM_MB_APP_WINDOW_LIST_STACKING, MBWM_ATOM_MB_THEME, MBWM_ATOM_MB_THEME_NAME, MBWM_ATOM_MB_COMMAND, MBWM_ATOM_MB_GRAB_TRANSFER, MBWM_ATOM_MB_CURRENT_APP_WINDOW, /* FIXME: Custom/Unused to sort out * * MB_WM_STATE_DOCK_TITLEBAR, * * _NET_WM_SYNC_REQUEST_COUNTER, * _NET_WM_SYNC_REQUEST, * * MB_CLIENT_EXEC_MAP, * MB_CLIENT_STARTUP_LIST, * MB_DOCK_TITLEBAR_SHOW_ON_DESKTOP, * * WINDOW_TYPE_MESSAGE, * */ MBWM_ATOM_COUNT } MBWMAtom; /* Event Callbacks */ typedef Bool (*MBWMXEventFunc) (void *xev, void *userdata); typedef Bool (*MBWMManagerMapNotifyFunc) (XMapEvent *xev, void *userdata); typedef Bool (*MBWindowManagerClientMessageFunc) (XClientMessageEvent *xev, void *userdata); typedef Bool (*MBWMManagerMapRequestFunc) (XMapRequestEvent *xev, void *userdata); typedef Bool (*MBWMManagerUnmapNotifyFunc) (XUnmapEvent *xev, void *userdata); typedef Bool (*MBWMManagerDestroyNotifyFunc) (XDestroyWindowEvent *xev, void *userdata); typedef Bool (*MBWMManagerConfigureNotifyFunc) (XConfigureEvent *xev, void *userdata); typedef Bool (*MBWMManagerConfigureRequestFunc) (XConfigureRequestEvent *xev, void *userdata); typedef Bool (*MBWMManagerKeyPressFunc) (XKeyEvent *xev, void *userdata); typedef Bool (*MBWMManagerPropertyNotifyFunc) (XPropertyEvent *xev, void *userdata); typedef Bool (*MBWMManagerButtonPressFunc) (XButtonEvent *xev, void *userdata); typedef Bool (*MBWMManagerButtonReleaseFunc) (XButtonEvent *xev, void *userdata); typedef Bool (*MBWMManagerMotionNotifyFunc) (XMotionEvent *xev, void *userdata); typedef Bool (*MBWMManagerTimeOutFunc) (void *userdata); #if USE_GLIB_MAINLOOP typedef GIOChannel MBWMIOChannel; typedef GIOCondition MBWMIOCondition; #else typedef int MBWMIOChannel; typedef int MBWMIOCondition; #endif typedef Bool (*MBWMManagerFdWatchFunc) (MBWMIOChannel *channel, MBWMIOCondition events, void *userdata); typedef struct MBWMXEventFuncInfo { MBWMXEventFunc func; Window xwindow; void *userdata; unsigned long id; } MBWMXEventFuncInfo; typedef struct MBWMTimeOutEventInfo MBWMTimeOutEventInfo; typedef struct MBWMFdWatchInfo MBWMFdWatchInfo; typedef enum MBWMDecorButtonFlags { MB_WM_DECOR_BUTTON_INVISIBLE = (1<<1) } MBWMDecorButtonFlags; typedef enum MBWMDecorType { MBWMDecorTypeNorth = 1, MBWMDecorTypeSouth, MBWMDecorTypeEast, MBWMDecorTypeWest, } MBWMDecorType; typedef enum MBWMSyncType { MBWMSyncStacking = (1<<1), MBWMSyncGeometry = (1<<2), MBWMSyncVisibility = (1<<3), MBWMSyncDecor = (1<<4), MBWMSyncConfigRequestAck = (1<<5), MBWMSyncFullscreen = (1<<6), } MBWMSyncType; typedef struct MBWMColor { double r; double g; double b; double a; Bool set; }MBWMColor; typedef enum MBWMCompMgrShadowType { MBWM_COMP_MGR_SHADOW_NONE = 0, MBWM_COMP_MGR_SHADOW_SIMPLE, MBWM_COMP_MGR_SHADOW_GAUSSIAN, } MBWMCompMgrShadowType; typedef enum MBWMModality { MBWMModalityNormal = 0, /* Handle modality per EWMH */ MBWMModalitySystem, /* Treat all modal dialogs as if system modal */ MBWMModalityNone, /* Ignore modality */ }MBWMModality; /* mb remote commands */ #define MB_CMD_SET_THEME 1 #define MB_CMD_EXIT 2 #define MB_CMD_DESKTOP 3 #define MB_CMD_NEXT 4 #define MB_CMD_PREV 5 #define MB_CMD_MISC 7 /* spare, used for debugging */ #define MB_CMD_COMPOSITE 8 #define MB_CMB_KEYS_RELOAD 9 /** * MBWMXlibFilterReturn: * @MB_WM_XLIB_FILTER_CONTINUE: The event was not handled, continues the * processing * @MB_WM_XLIB_FILTER_REMOVE: Remove the event, stops the processing * * Return values for the #MBWMXlibFilterFunc function. */ typedef enum _MBWMXlibFilterReturn { MB_WM_XLIB_FILTER_CONTINUE, MB_WM_XLIB_FILTER_REMOVE } MBWMXlibFilterReturn; /** * MBWMXlibFilterFunc: * * A callback function that can be registered with * _mb_wm_manager_xlib_add_filter. The function should return * %MB_WM_XLIB_FILTER_REMOVE if it wants to prevent further processing * or %MB_WM_XLIB_FILTER_CONTINUE otherwise. */ typedef MBWMXlibFilterReturn (* MBWMXlibFilterFunc) (XEvent *xevent, void *data); #endif