1 #ifndef PANEL_H 2 #define PANEL_H 3 4 5 #include <X11/Xlib.h> 6 #include <gtk/gtk.h> 7 #include <gdk/gdk.h> 8 9 #include "config.h" 10 11 enum { ALLIGN_NONE, ALLIGN_LEFT, ALLIGN_RIGHT, ALLIGN_CENTER }; 12 enum { EDGE_NONE, EDGE_LEFT, EDGE_RIGHT, EDGE_TOP, EDGE_BOTTOM }; 13 enum { DISTANCEFROM_NONE, DISTANCEFROM_LEFT, DISTANCEFROM_RIGHT, DISTANCEFROM_TOP, DISTANCEFROM_BOTTOM }; 14 enum { WIDTH_NONE, WIDTH_REQUEST, WIDTH_PIXEL, WIDTH_PERCENT }; 15 enum { HEIGHT_NONE, HEIGHT_PIXEL, HEIGHT_REQUEST }; 16 enum { ORIENT_NONE, ORIENT_VERT, ORIENT_HORIZ }; 17 enum { POS_NONE, POS_START, POS_END }; 18 19 #define PANEL_HEIGHT_DEFAULT 26 20 #define PANEL_HEIGHT_MAX 200 21 #define PANEL_HEIGHT_MIN 2 22 #define PANEL_WIDTH_DEFAULT 100 23 24 typedef struct { 25 26 GtkWidget *topgwin; /* main panel window */ 27 GdkWindow* topGdkWindow; // and it parent gdk window 28 Window topxwin; /* and it X window */ 29 GtkWidget *lbox; /* primary layout box */ 30 GtkWidget *box; /* box that contains all plugins */ 31 GtkWidget *(*my_box_new) (gboolean, gint); 32 Pixmap xtopbg; 33 GdkPixmap *gtopbg; 34 35 int alpha; 36 guint32 tintcolor; 37 38 int ax, ay, aw, ah; /* actual location and size of a panel */ 39 int allign, edge, margin; 40 int orientation; 41 int widthtype, width; 42 int heighttype, height; 43 44 int self_destroy : 1; 45 int setdocktype : 1; 46 int setstrut : 1; 47 int transparent : 1; 48 int on_primary : 1; 49 int monitor; 50 int icon_spacing; 51 52 // Import from plugin structure 53 gpointer priv; 54 int expand; 55 int padding; 56 int lower; 57 } panel; 58 59 60 typedef struct { 61 unsigned int modal : 1; 62 unsigned int sticky : 1; 63 unsigned int maximized_vert : 1; 64 unsigned int maximized_horz : 1; 65 unsigned int shaded : 1; 66 unsigned int skip_taskbar : 1; 67 unsigned int skip_pager : 1; 68 unsigned int hidden : 1; 69 unsigned int fullscreen : 1; 70 unsigned int above : 1; 71 unsigned int below : 1; 72 } net_wm_state; 73 74 typedef struct { 75 unsigned int desktop : 1; 76 unsigned int dock : 1; 77 unsigned int toolbar : 1; 78 unsigned int menu : 1; 79 unsigned int utility : 1; 80 unsigned int splash : 1; 81 unsigned int dialog : 1; 82 unsigned int normal : 1; 83 } net_wm_window_type; 84 85 86 extern Atom a_UTF8_STRING; 87 extern Atom a_XROOTPMAP_ID; 88 89 extern Atom a_WM_STATE; 90 extern Atom a_WM_CLASS; 91 92 extern Atom a_NET_WORKAREA; 93 extern Atom a_NET_CLIENT_LIST; 94 extern Atom a_NET_CLIENT_LIST_STACKING; 95 extern Atom a_NET_NUMBER_OF_DESKTOPS; 96 extern Atom a_NET_CURRENT_DESKTOP; 97 extern Atom a_NET_DESKTOP_NAMES; 98 extern Atom a_NET_ACTIVE_WINDOW; 99 extern Atom a_NET_WM_STATE; 100 extern Atom a_NET_WM_STATE_SKIP_TASKBAR; 101 extern Atom a_NET_WM_STATE_SKIP_PAGER; 102 extern Atom a_NET_WM_STATE_STICKY; 103 extern Atom a_NET_WM_STATE_HIDDEN; 104 extern Atom a_NET_WM_STATE_SHADED; 105 106 #define a_NET_WM_STATE_REMOVE 0 /* remove/unset property */ 107 #define a_NET_WM_STATE_ADD 1 /* add/set property */ 108 #define a_NET_WM_STATE_TOGGLE 2 /* toggle property */ 109 110 extern Atom a_NET_WM_WINDOW_TYPE; 111 extern Atom a_NET_WM_WINDOW_TYPE_DESKTOP; 112 extern Atom a_NET_WM_WINDOW_TYPE_DOCK; 113 extern Atom a_NET_WM_WINDOW_TYPE_TOOLBAR; 114 extern Atom a_NET_WM_WINDOW_TYPE_MENU; 115 extern Atom a_NET_WM_WINDOW_TYPE_UTILITY; 116 extern Atom a_NET_WM_WINDOW_TYPE_SPLASH; 117 extern Atom a_NET_WM_WINDOW_TYPE_DIALOG; 118 extern Atom a_NET_WM_WINDOW_TYPE_NORMAL; 119 120 extern Atom a_NET_WM_DESKTOP; 121 extern Atom a_NET_WM_NAME; 122 extern Atom a_NET_WM_STRUT; 123 extern Atom a_NET_WM_STRUT_PARTIAL; 124 125 extern Atom a_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR; 126 127 #endif 128