src/server.h (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
/************************************************************************** * server : * - * * Check COPYING file for Copyright * **************************************************************************/ #ifndef SERVER_H #define SERVER_H #include <X11/Xlib.h> #include <X11/Xatom.h> #include <X11/extensions/Xrandr.h> #include <X11/extensions/Xinerama.h> typedef struct Global_atom { Atom _XROOTPMAP_ID; Atom _NET_CURRENT_DESKTOP; Atom _NET_NUMBER_OF_DESKTOPS; Atom _NET_DESKTOP_GEOMETRY; Atom _NET_DESKTOP_VIEWPORT; Atom _NET_ACTIVE_WINDOW; Atom _NET_WM_WINDOW_TYPE; Atom _NET_WM_STATE_SKIP_PAGER; Atom _NET_WM_STATE_SKIP_TASKBAR; Atom _NET_WM_STATE_STICKY; Atom _NET_WM_STATE_DEMANDS_ATTENTION; Atom _NET_WM_WINDOW_TYPE_DOCK; Atom _NET_WM_WINDOW_TYPE_DESKTOP; Atom _NET_WM_WINDOW_TYPE_TOOLBAR; Atom _NET_WM_WINDOW_TYPE_MENU; Atom _NET_WM_WINDOW_TYPE_SPLASH; Atom _NET_WM_WINDOW_TYPE_DIALOG; Atom _NET_WM_WINDOW_TYPE_NORMAL; Atom _NET_WM_DESKTOP; Atom WM_STATE; Atom _NET_WM_STATE; Atom _NET_WM_STATE_SHADED; Atom _NET_WM_STATE_BELOW; Atom _NET_WM_STATE_MODAL; Atom _NET_CLIENT_LIST; Atom _NET_WM_NAME; Atom _NET_WM_VISIBLE_NAME; Atom _NET_WM_STRUT; Atom _NET_WM_ICON; Atom _NET_CLOSE_WINDOW; Atom UTF8_STRING; Atom _NET_SUPPORTING_WM_CHECK; Atom _WIN_LAYER; Atom _NET_WM_STRUT_PARTIAL; Atom WM_NAME; Atom __SWM_VROOT; Atom _MOTIF_WM_HINTS; Atom _NET_SYSTEM_TRAY_SCREEN; Atom _NET_SYSTEM_TRAY_OPCODE; Atom MANAGER; Atom _NET_SYSTEM_TRAY_MESSAGE_DATA; Atom _NET_SYSTEM_TRAY_ORIENTATION; } Global_atom; typedef struct Monitor { int x; int y; int width; int height; } Monitor; typedef struct { Display *dsp; Window root_win; // current desktop int desktop; int screen; int depth; int nb_desktop; // number of monitor (without monitor included into another one) int nb_monitor; Monitor *monitor; int got_root_win; Visual *visual; // root background Pixmap root_pmap; GC gc; Global_atom atom; } Server_global; Server_global server; void send_event32 (Window win, Atom at, long data1, long data2); int get_property32 (Window win, Atom at, Atom type); void *server_get_property (Window win, Atom at, Atom type, int *num_results); Atom server_get_atom (char *atom_name); void server_refresh_root_pixmap (); void server_refresh_main_pixmap (); void server_catch_error (Display *d, XErrorEvent *ev); void server_init_atoms (); // detect root background void get_root_pixmap(); // detect monitors and desktops void get_monitors_and_desktops(); #endif |