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