1 /* -*-c-*- */
2 /* vim: set ts=8 shiftwidth=8: */
3 
4 #ifndef FvwmProxy_h
5 #define FvwmProxy_h
6 
7 /* TODO check what headers we really need */
8 #include <stdio.h>
9 #include <signal.h>
10 #include <fcntl.h>
11 #include <sys/wait.h>
12 #include <ctype.h>
13 
14 #include <X11/Xlib.h>
15 #include <X11/Xutil.h>
16 #include <X11/Xproto.h>
17 #include <X11/Xatom.h>
18 #include <X11/Intrinsic.h>
19 #include <X11/keysym.h>
20 #include <X11/cursorfont.h>
21 
22 #include "libs/Module.h"
23 #include "libs/fvwmlib.h"
24 #include "libs/Colorset.h"
25 #include "libs/fvwmsignal.h"
26 #include "fvwm/fvwm.h"
27 #include "libs/vpacket.h"
28 #include "libs/PictureBase.h"
29 
30 typedef struct sWindowName
31 {
32 	char			*name;
33 	struct sWindowName	*next;
34 	struct
35 	{
36 		unsigned soft_raise : 2;
37 		unsigned pad0 : 2;
38 		unsigned hard_raise : 2;
39 		unsigned pad1 : 2;
40 
41 		unsigned soft_desk : 2;
42 		unsigned pad2 : 2;
43 		unsigned hard_desk : 2;
44 		unsigned pad3 : 2;
45 
46 		unsigned soft_drag : 2;
47 		unsigned pad4 : 2;
48 		unsigned hard_drag : 2;
49 		unsigned pad5 : 2;
50 
51 		unsigned soft_icon : 2;
52 		unsigned pad6 : 2;
53 		unsigned hard_icon : 2;
54 		unsigned pad7 : 2;
55 
56 		unsigned pad8 : 4;
57 
58 		unsigned is_soft : 1;
59 		unsigned pad9 : 4;
60 
61 		unsigned is_weak : 1;
62 	} flags;
63 } WindowName;
64 
65 typedef struct sProxyGroup
66 {
67 	char			*name;
68 	WindowName		*includes;
69 	WindowName		*excludes;
70 	struct sProxyGroup	*next;
71 	struct
72 	{
73 
74 		unsigned soft_raise : 2;
75 		unsigned pad0 : 2;
76 		unsigned hard_raise : 2;
77 		unsigned pad1 : 2;
78 
79 		unsigned soft_desk : 2;
80 		unsigned pad2 : 2;
81 		unsigned hard_desk : 2;
82 		unsigned pad3 : 2;
83 
84 		unsigned soft_drag : 2;
85 		unsigned pad4 : 2;
86 		unsigned hard_drag : 2;
87 		unsigned pad5 : 2;
88 
89 		unsigned soft_icon : 2;
90 		unsigned pad6 : 2;
91 		unsigned hard_icon : 2;
92 		unsigned pad7 : 2;
93 
94 		unsigned pad8 : 4;
95 
96 		unsigned auto_include : 1;
97 		unsigned pad9 : 3;
98 
99 		unsigned auto_soft : 1;
100 		unsigned pad10 : 3;
101 
102 		unsigned isolated : 1;
103 		unsigned pad11 : 3;
104 
105 		unsigned ignore_ids : 1;
106 	} flags;
107 } ProxyGroup;
108 
109 typedef struct sGeometryStamp
110 {
111 	int			x,y;
112 	int			w,h;
113 	Window			window;
114 } GeometryStamp;
115 
116 typedef struct sProxyWindow
117 {
118 	Window			window;
119 	int			leader;
120 	int			pid;
121 	int			ppid;
122 	int			x,y;
123 	int			w,h;
124 	int			border_width;
125 	int			title_height;
126 	int			goal_width;
127 	int			goal_height;
128 	int			incx,incy;
129 	int			desk;
130 	int			stack;
131 	int			stack_desired;
132 	int			stack_tmp;
133 	int			group;
134 	ProxyGroup		*proxy_group;
135 	Window			proxy;
136 	int			proxyx,proxyy;
137 	int			proxyw,proxyh;
138 	int			tweakx,tweaky;
139 	int			pending_config;
140 	int			raised;
141 	FvwmPicture		picture;
142 	char			*name;
143 	char			*iconname;
144 	struct sProxyWindow	*next;
145 	struct sProxyWindow	*prev;
146 	struct
147 	{
148 		unsigned is_shown : 1;
149 		unsigned is_iconified : 1;
150 		unsigned is_soft : 1;
151 		unsigned is_isolated : 1;
152 	} flags;
153 } ProxyWindow;
154 
155 #endif	/* FvwmProxy_h */
156