Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-alpha-6.1.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-alpha-6.1.diff (8683B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 7054c06..4448d46 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -11,6 +11,8 @@ static const char normfgcolor[] = "#bbbbbb";
6 static const char selbordercolor[] = "#005577";
7 static const char selbgcolor[] = "#005577";
8 static const char selfgcolor[] = "#eeeeee";
9 +static unsigned int baralpha = 0xd0;
10 +static unsigned int borderalpha = OPAQUE;
11 static const unsigned int borderpx = 1; /* border pixel of wind…
12 static const unsigned int snap = 32; /* snap pixel */
13 static const int showbar = 1; /* 0 means no bar */
14 diff --git a/config.mk b/config.mk
15 index 4eefb71..de25d2a 100644
16 --- a/config.mk
17 +++ b/config.mk
18 @@ -22,7 +22,7 @@ FREETYPEINC = /usr/include/freetype2
19
20 # includes and libs
21 INCS = -I${X11INC} -I${FREETYPEINC}
22 -LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
23 +LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lXrender
24
25 # flags
26 CPPFLAGS = -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" $…
27 diff --git a/drw.c b/drw.c
28 index f49200b..12e3ebc 100644
29 --- a/drw.c
30 +++ b/drw.c
31 @@ -61,7 +61,7 @@ utf8decode(const char *c, long *u, size_t clen)
32 }
33
34 Drw *
35 -drw_create(Display *dpy, int screen, Window root, unsigned int w, unsig…
36 +drw_create(Display *dpy, int screen, Window root, unsigned int w, unsig…
37 {
38 Drw *drw;
39
40 @@ -71,8 +71,11 @@ drw_create(Display *dpy, int screen, Window root, uns…
41 drw->root = root;
42 drw->w = w;
43 drw->h = h;
44 - drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy…
45 - drw->gc = XCreateGC(dpy, root, 0, NULL);
46 + drw->visual = visual;
47 + drw->depth = depth;
48 + drw->cmap = cmap;
49 + drw->drawable = XCreatePixmap(dpy, root, w, h, depth);
50 + drw->gc = XCreateGC(dpy, drw->drawable, 0, NULL);
51 drw->fontcount = 0;
52 XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMit…
53
54 @@ -86,7 +89,7 @@ drw_resize(Drw *drw, unsigned int w, unsigned int h)
55 drw->h = h;
56 if (drw->drawable)
57 XFreePixmap(drw->dpy, drw->drawable);
58 - drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, Defaul…
59 + drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, drw->d…
60 }
61
62 void
63 @@ -180,16 +183,15 @@ drw_font_free(Fnt *font)
64 }
65
66 Clr *
67 -drw_clr_create(Drw *drw, const char *clrname)
68 +drw_clr_create(Drw *drw, const char *clrname, unsigned int alpha)
69 {
70 Clr *clr;
71
72 clr = ecalloc(1, sizeof(Clr));
73 - if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->s…
74 - DefaultColormap(drw->dpy, drw->screen),
75 + if (!XftColorAllocName(drw->dpy, drw->visual, drw->cmap,
76 clrname, &clr->rgb))
77 die("error, cannot allocate color '%s'\n", clrname);
78 - clr->pix = clr->rgb.pixel;
79 + clr->pix = (clr->rgb.pixel & 0x00ffffffU) | (alpha << 24);
80
81 return clr;
82 }
83 @@ -245,9 +247,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, uns…
84 XSetForeground(drw->dpy, drw->gc, invert ?
85 drw->scheme->fg->pix : drw->scheme->bg->…
86 XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, …
87 - d = XftDrawCreate(drw->dpy, drw->drawable,
88 - DefaultVisual(drw->dpy, drw->screen),
89 - DefaultColormap(drw->dpy, drw->screen…
90 + d = XftDrawCreate(drw->dpy, drw->drawable, drw->visual,…
91 }
92
93 curfont = drw->fonts[0];
94 diff --git a/drw.h b/drw.h
95 index e3b8515..1fed824 100644
96 --- a/drw.h
97 +++ b/drw.h
98 @@ -30,6 +30,9 @@ typedef struct {
99 Display *dpy;
100 int screen;
101 Window root;
102 + Visual *visual;
103 + unsigned int depth;
104 + Colormap cmap;
105 Drawable drawable;
106 GC gc;
107 ClrScheme *scheme;
108 @@ -43,7 +46,7 @@ typedef struct {
109 } Extnts;
110
111 /* Drawable abstraction */
112 -Drw *drw_create(Display *, int, Window, unsigned int, unsigned int);
113 +Drw *drw_create(Display *, int, Window, unsigned int, unsigned int, Vis…
114 void drw_resize(Drw *, unsigned int, unsigned int);
115 void drw_free(Drw *);
116
117 @@ -55,7 +58,7 @@ void drw_font_getexts(Fnt *, const char *, unsigned in…
118 unsigned int drw_font_getexts_width(Fnt *, const char *, unsigned int);
119
120 /* Colour abstraction */
121 -Clr *drw_clr_create(Drw *, const char *);
122 +Clr *drw_clr_create(Drw *, const char *, unsigned int);
123 void drw_clr_free(Clr *);
124
125 /* Cursor abstraction */
126 diff --git a/dwm.c b/dwm.c
127 index 0362114..17fe373 100644
128 --- a/dwm.c
129 +++ b/dwm.c
130 @@ -57,6 +57,8 @@
131 #define TAGMASK ((1 << LENGTH(tags)) - 1)
132 #define TEXTW(X) (drw_text(drw, 0, 0, 0, 0, (X), 0) + dr…
133
134 +#define OPAQUE 0xffU
135 +
136 /* enums */
137 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
138 enum { SchemeNorm, SchemeSel, SchemeLast }; /* color schemes */
139 @@ -232,6 +234,7 @@ static Monitor *wintomon(Window w);
140 static int xerror(Display *dpy, XErrorEvent *ee);
141 static int xerrordummy(Display *dpy, XErrorEvent *ee);
142 static int xerrorstart(Display *dpy, XErrorEvent *ee);
143 +static void xinitvisual();
144 static void zoom(const Arg *arg);
145
146 /* variables */
147 @@ -267,6 +270,11 @@ static Drw *drw;
148 static Monitor *mons, *selmon;
149 static Window root;
150
151 +static int useargb = 0;
152 +static Visual *visual;
153 +static int depth;
154 +static Colormap cmap;
155 +
156 /* configuration, allows nested code to access above variables */
157 #include "config.h"
158
159 @@ -1556,7 +1564,8 @@ setup(void)
160 sw = DisplayWidth(dpy, screen);
161 sh = DisplayHeight(dpy, screen);
162 root = RootWindow(dpy, screen);
163 - drw = drw_create(dpy, screen, root, sw, sh);
164 + xinitvisual();
165 + drw = drw_create(dpy, screen, root, sw, sh, visual, depth, cmap…
166 drw_load_fonts(drw, fonts, LENGTH(fonts));
167 if (!drw->fontcount)
168 die("no fonts could be loaded.\n");
169 @@ -1580,12 +1589,12 @@ setup(void)
170 cursor[CurResize] = drw_cur_create(drw, XC_sizing);
171 cursor[CurMove] = drw_cur_create(drw, XC_fleur);
172 /* init appearance */
173 - scheme[SchemeNorm].border = drw_clr_create(drw, normbordercolor…
174 - scheme[SchemeNorm].bg = drw_clr_create(drw, normbgcolor);
175 - scheme[SchemeNorm].fg = drw_clr_create(drw, normfgcolor);
176 - scheme[SchemeSel].border = drw_clr_create(drw, selbordercolor);
177 - scheme[SchemeSel].bg = drw_clr_create(drw, selbgcolor);
178 - scheme[SchemeSel].fg = drw_clr_create(drw, selfgcolor);
179 + scheme[SchemeNorm].border = drw_clr_create(drw, normbordercolor…
180 + scheme[SchemeNorm].bg = drw_clr_create(drw, normbgcolor, baralp…
181 + scheme[SchemeNorm].fg = drw_clr_create(drw, normfgcolor, OPAQUE…
182 + scheme[SchemeSel].border = drw_clr_create(drw, selbordercolor, …
183 + scheme[SchemeSel].bg = drw_clr_create(drw, selbgcolor, baralpha…
184 + scheme[SchemeSel].fg = drw_clr_create(drw, selfgcolor, OPAQUE);
185 /* init bars */
186 updatebars();
187 updatestatus();
188 @@ -1798,15 +1807,17 @@ updatebars(void)
189 Monitor *m;
190 XSetWindowAttributes wa = {
191 .override_redirect = True,
192 - .background_pixmap = ParentRelative,
193 + .background_pixel = 0,
194 + .border_pixel = 0,
195 + .colormap = cmap,
196 .event_mask = ButtonPressMask|ExposureMask
197 };
198 for (m = mons; m; m = m->next) {
199 if (m->barwin)
200 continue;
201 - m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->w…
202 - CopyFromParent, DefaultVisual…
203 - CWOverrideRedirect|CWBackPixm…
204 + m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->w…
205 + InputOutput, visual,
206 + CWOverrideRedirect|CWBackPixe…
207 XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor…
208 XMapRaised(dpy, m->barwin);
209 }
210 @@ -2107,6 +2118,43 @@ xerrorstart(Display *dpy, XErrorEvent *ee)
211 }
212
213 void
214 +xinitvisual()
215 +{
216 + XVisualInfo *infos;
217 + XRenderPictFormat *fmt;
218 + int nitems;
219 + int i;
220 +
221 + XVisualInfo tpl = {
222 + .screen = screen,
223 + .depth = 32,
224 + .class = TrueColor
225 + };
226 + long masks = VisualScreenMask | VisualDepthMask | VisualClassMa…
227 +
228 + infos = XGetVisualInfo(dpy, masks, &tpl, &nitems);
229 + visual = NULL;
230 + for(i = 0; i < nitems; i ++) {
231 + fmt = XRenderFindVisualFormat(dpy, infos[i].visual);
232 + if (fmt->type == PictTypeDirect && fmt->direct.alphaMas…
233 + visual = infos[i].visual;
234 + depth = infos[i].depth;
235 + cmap = XCreateColormap(dpy, root, visual, Alloc…
236 + useargb = 1;
237 + break;
238 + }
239 + }
240 +
241 + XFree(infos);
242 +
243 + if (! visual) {
244 + visual = DefaultVisual(dpy, screen);
245 + depth = DefaultDepth(dpy, screen);
246 + cmap = DefaultColormap(dpy, screen);
247 + }
248 +}
249 +
250 +void
251 zoom(const Arg *arg)
252 {
253 Client *c = selmon->sel;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.