From e5ef069c9bb02232c157d4b6339f292554eaba60 Mon Sep 17 00:00:00 2001 From: exkc Date: Wed, 20 Jul 2022 17:27:37 +0800 Subject: [PATCH] ixiixixi --- client.c | 85 +----------------------------------------------------- client.o | Bin 10680 -> 8736 bytes config.mk | 2 +- dumbwm | Bin 33696 -> 33008 bytes event.c | 34 ---------------------- event.o | Bin 5048 -> 4760 bytes main.c | 63 ---------------------------------------- main.o | Bin 9792 -> 7840 bytes 8 files changed, 2 insertions(+), 182 deletions(-) diff --git a/client.c b/client.c index 81bc620..c3cbfdb 100644 --- a/client.c +++ b/client.c @@ -6,16 +6,12 @@ #include #include #include -#include #include #include "dumbwm.h" void (*arrange)(Arg *) = tiling; -static Rule rule[] = { - { "Firefox-bin", "Gecko", { [Twww] = "www" }, False }, -}; static Client * next(Client *c) @@ -24,28 +20,6 @@ next(Client *c) return c; } -void -zoom(Arg *arg) -{ - Client **l, *c; - - if(!sel) - return; - - if(sel == next(clients) && sel->next) { - if((c = next(sel->next))) - sel = c; - } - - for(l = &clients; *l && *l != sel; l = &(*l)->next); - *l = sel->next; - - sel->next = clients; /* pop */ - clients = sel; - arrange(NULL); - focus(sel); -} - void max(Arg *arg) { @@ -68,33 +42,6 @@ view(Arg *arg) arrange(NULL); } - -void -tappend(Arg *arg) -{ - if(!sel) - return; - - arrange(NULL); -} - -void -ttrunc(Arg *arg) -{ - int i; - if(!sel) - return; - - for(i = 0; i < TLast; i++) - tappend(arg); -} - -static void -ban_client(Client *c) -{ - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); -} - void tiling(Arg *arg) { @@ -182,39 +129,11 @@ ckill(Arg *arg) { if(!sel) return; - if(sel->proto & WM_PROTOCOL_DELWIN) - send_message(sel->win, wm_atom[WMProtocols], wm_atom[WMDelete]); + else XKillClient(dpy, sel->win); } -void -update_name(Client *c) -{ - XTextProperty name; - int n; - char **list = NULL; - - name.nitems = 0; - c->name[0] = 0; - XGetTextProperty(dpy, c->win, &name, net_atom[NetWMName]); - if(!name.nitems) - XGetWMName(dpy, c->win, &name); - if(!name.nitems) - return; - if(name.encoding == XA_STRING) - strncpy(c->name, (char *)name.value, sizeof(c->name)); - else { - if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success - && n > 0 && *list) - { - strncpy(c->name, *list, sizeof(c->name)); - XFreeStringList(list); - } - } - XFree(name.value); -} - void update_size(Client *c) { @@ -292,7 +211,6 @@ manage(Window w, XWindowAttributes *wa) c->tw = c->w = wa->width; c->h = wa->height; c->border = 0; - c->proto = win_proto(c->win); update_size(c); XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | EnterWindowMask); @@ -301,7 +219,6 @@ manage(Window w, XWindowAttributes *wa) twa.background_pixmap = ParentRelative; twa.event_mask = ExposureMask; - update_name(c); for(l = &clients; *l; l = &(*l)->next); c->next = *l; /* *l == nil */ diff --git a/client.o b/client.o index b5e9dd2258959e485c4f3aeb772053108ebf978a..4956e5cec477ec63db74684122129222ea48f0bc 100644 GIT binary patch literal 8736 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

L;r{|aas7Tp@8{S@ zzhAYv`1<|o4HvH8i|`$X%Gd8j`2Iq1{caO*;rbnBg$vj3E%&%^{f@zklN(yi@M_4- zgv^_DDG`Z=i%obQV8!s*5N5@zlSx)AP^@FA7{12CQC8d-Z*9eI_2O9Ej1+(%P3Wzi}tV!Uz#Q!M;Kn|KvT{8xxma0;d+E=o}m>^!#rO6a4{?Z diff --git a/config.mk b/config.mk index 96ef58a..e9c3dfd 100644 --- a/config.mk +++ b/config.mk @@ -14,7 +14,7 @@ VERSION = 0.1 LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11 # Linux/BSD -CFLAGS = -Os -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \ +CFLAGS = -Os -I. -pedantic -Wall -Wno-deprecated-declarations -I${PREFIX}/include -I/usr/include -I${X11INC} \ -DVERSION=\"${VERSION}\" LDFLAGS = ${LIBS} #CFLAGS = -g -Wall -O2 -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \ diff --git a/dumbwm b/dumbwm index 6e0688dc619a2ac79021e7b13570d4cde808144d..ccd9147dc808ad5a63d854568e5936aac5563cb7 100755 GIT binary patch delta 7953 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 delta 10248 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 diff --git a/event.c b/event.c index cade240..c30cf4e 100644 --- a/event.c +++ b/event.c @@ -19,7 +19,6 @@ static void enternotify(XEvent *e); static void leavenotify(XEvent *e); static void expose(XEvent *e); static void maprequest(XEvent *e); -static void propertynotify(XEvent *e); static void unmapnotify(XEvent *e); void (*handler[LASTEvent]) (XEvent *) = { @@ -29,7 +28,6 @@ void (*handler[LASTEvent]) (XEvent *) = { [LeaveNotify] = leavenotify, [Expose] = expose, [MapRequest] = maprequest, - [PropertyNotify] = propertynotify, [UnmapNotify] = unmapnotify }; @@ -131,38 +129,6 @@ maprequest(XEvent *e) manage(ev->window, &wa); } -static void -propertynotify(XEvent *e) -{ - XPropertyEvent *ev = &e->xproperty; - Window trans; - Client *c; - - if(ev->state == PropertyDelete) - return; /* ignore */ - - if((c = getclient(ev->window))) { - if(ev->atom == wm_atom[WMProtocols]) { - c->proto = win_proto(c->win); - return; - } - switch (ev->atom) { - default: break; - case XA_WM_TRANSIENT_FOR: - XGetTransientForHint(dpy, c->win, &trans); - if(!c->floating && (c->floating = (trans != 0))) - arrange(NULL); - break; - case XA_WM_NORMAL_HINTS: - update_size(c); - break; - } - if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { - update_name(c); - } - } -} - static void unmapnotify(XEvent *e) { diff --git a/event.o b/event.o index 59e40afcd16982e33b3e74b41de569e0bf1a57db..8596d00258fedfceabeb7d8bbebeaf971c9a1a51 100644 GIT binary patch delta 1481 zcmZ{jUr19?9LLYOy4>CLy1SKklbVw>XQp@wnx?g8I=+vP&nX_pmA|qi~ z;QUc&^kPB(C<-Kys4(oIC#jx#(@0A3t(W#t*g1Fi#$n(O&iDN8=lA=a`#bmCvr@KD zI_KuT3d!Sz%SUksPBu7>MJJWSUuAa6wT*}=i8bZMYBZ$GHo28}${qC)Z5(S)K6H9c z%d1Mfz69mpUQNWuF+x$dytj9VmhC!~*~SuMuTqg+>L$-)P9^@qt|T@(yLRSr@$w|M zjv%BE=yi4P1e}rAuxRoOgv0!?Fp9hL@4EP)`o&h;W!nagSs(N45C#t?ybxqZes;;a0 zohrDDcKloQHi`E}jX0pyDB&Uy`7&tcJ;sqpcqAB!PC$&WJkuWuTn$A7(IAQhM?=?w zsCQ%nwVe+S_l5e$BEc)6;ofizwfTp}Mh8%L_h>ZGGuYiTFxcG}2n~U3a=<&j6#OPR zP?FvV$|iFj8GrWDR?BdK;fa0t9fs#K`48Z|Npfs3QIU!Mpiz03iCUQ`IZxGSZ#IUD z;LDY81y#90%c18&e^b5xOAId{Jf-bxnpQa;F;NRs^#Z2NlKh2<+L>sMcKDh76u=Vc zryOveBv&yx^e5E&snIx{vd9=EgPNaK;ZBf=-lQ5>VlvqsJ!d$(qav+a+SNfa^f%V- z!+*gyvxF}~GEee_wKZw&VW##j!;dh$hWOOz(ljLoSdcg`hC-prq2IANnn6rYGDAR+ z9Qw^!NeBN&F(k-#c;>(_THgX>L{Xx~O(KSmvd zAe_I0SD@YE;aB){sT~$A9xla!oK*nZ7B@y9isZG>Dtft3xiBxD#V+_v&`A)jUR(pM zRxdw5KPa(tuxRz*IY^2&*s`85JvOBIHV1{aQ~aDU{a6O=Hjn87y=TOx5p-Cb{{Vw1 BVlw~$ delta 1718 zcmZ{lUx*t;9LHxin`1Y3*-b8Y-A&cpMN%(TkxL8B)gImjPua6l9|}?^HO5}r#`co! zWn(Xbq%~$G3Z+nxi06xnDERM1?&5=J`_lS!6!o0n?5+$44$OCE zKEL1melxqXvv2RXF}9qRHuQ@-x5E``?AKfG5kjo?-_}xN^mo=}{m-rQUA?u0{iUbU z*1jO(+K{z$^DHHVJGGmmtb6-qtGSVOa!hAxPr@%WaX6LfTFuE6(ckR0n~TiH8O&^M z4r7Gdiq&3oQ()NU#+ak}!3EPyN}01Bk$0ro6esBVH&@NWM>^9l&`%CZ-%yAIwn0*E zB-b!(PK#WSa+=u;%xL4%kDAFqPE%6MbOn!Ql5iwjP@TyaXr>hP{I0lz5^4WF6M7o5sGIa4a< znTt~)b9Nn$s5|$Ri;iom*>eS_m@gORizJ_~I)$Sr^G8pd%pWV1PLbmag;z=rvy+8l zwe)HcM%8$%R-P}E3&$C&R2)*OR*R?Lg1T!LdDwjtL}qQ6)xS2~GVO7EV4A=W01X*& zTd+n1>mp=AM&lj9Iw)8_@Hpm*3H-XpG1m~QXvfm!>W=Yv`)m6_;M)Wqa8C)m6^c?5 zlKlofftsm#rw8Mjg8%Ct$GqY$K84c*#_SjWWBpQyhUd;-)tbP?Ro#J$Av_wreq%Q2 zoj+{u7v}C3_yde@_-{er0m1(uoa;B@hde9p3s1Vgl9!;v_HLsOJ&$?mb=1aJLNqb^ zPXZUS|0C?^J|Vs->}fU(aQiKh9t5s9;zXCL{$u!TMM*Kf0_yZ@`ce65Jbj zEbf2v%jm(1?{o`tVI%H;;Wu34f7W$49X7xYE3h1%ZmfIOme*nuto}Xo{ub`%T;0O` zd*LS$jtn^?2D7$#OK^eZ*Q|z|5t54yb z5t*WQpc9QjEAl9P5jt#Kg}Y4I2N#`EKf)8h$^_J-S?QVvA4i`Et@D2h`@sa@UUZL| YR$ZS1uy-)4+PXVB2c2LHp4A8b1s2u55&!@I diff --git a/main.c b/main.c index 1059009..8369a19 100644 --- a/main.c +++ b/main.c @@ -11,7 +11,6 @@ #include #include -#include #include #include "dumbwm.h" @@ -24,7 +23,6 @@ /* X structs */ Display *dpy; Window root; -Atom wm_atom[WMLast], net_atom[NetLast]; Cursor cursor[CurLast]; Bool running = True; Bool issel; @@ -66,60 +64,6 @@ scan_wins() XFree(wins); } -static int -win_property(Window w, Atom a, Atom t, long l, unsigned char **prop) -{ - Atom real; - int format; - unsigned long res, extra; - int status; - - status = XGetWindowProperty(dpy, w, a, 0L, l, False, t, &real, &format, - &res, &extra, prop); - - if(status != Success || *prop == 0) { - return 0; - } - if(res == 0) { - free((void *) *prop); - } - return res; -} - -int -win_proto(Window w) -{ - unsigned char *protocols; - long res; - int protos = 0; - int i; - - res = win_property(w, wm_atom[WMProtocols], XA_ATOM, 20L, &protocols); - if(res <= 0) { - return protos; - } - for(i = 0; i < res; i++) { - if(protocols[i] == wm_atom[WMDelete]) - protos |= WM_PROTOCOL_DELWIN; - } - free((char *) protocols); - return protos; -} - -void -send_message(Window w, Atom a, long value) -{ - XEvent e; - - e.type = ClientMessage; - e.xclient.window = w; - e.xclient.message_type = a; - e.xclient.format = 32; - e.xclient.data.l[0] = value; - e.xclient.data.l[1] = CurrentTime; - XSendEvent(dpy, w, False, NoEventMask, &e); - XFlush(dpy); -} /* * There's no way to check accesses to destroyed windows, thus @@ -219,13 +163,6 @@ main(int argc, char *argv[]) XSetErrorHandler(0); x_error_handler = XSetErrorHandler(error_handler); - /* init atoms */ - wm_atom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); - wm_atom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); - net_atom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); - net_atom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); - XChangeProperty(dpy, root, net_atom[NetSupported], XA_ATOM, 32, - PropModeReplace, (unsigned char *) net_atom, NetLast); /* init cursors */ cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr); diff --git a/main.o b/main.o index ffcaa60c53cf4f1286a2994751dec77583b5a759..27a89f0f438f087c854ee99ddbce1cff5a4635e4 100644 GIT binary patch delta 2854 zcmZ`*eP~-%6uL;U^=%* z9#hq9RQ?|*yfdfR1%-!m_@Bs_SET+HwRv4JtHmxwdEAnDR|SN5dlg!p<*+*nZ_de^ zQFv<(uEFh6-CS1IK#tW8K9>$>OAPLXkW1&4kS@`Ar_{Tp?w5MM)Dfu{q<&uN7g0m6 z+u*0<{b{M^r8Xe#*7^JL`n=SiN_|D@Yp5%J5hn_}w5Dq9e{g6on<_~p4@V~^*l>Je zWIQ(CgFl-wS90fk&FzD4i3de2ZtjgV{B+_Bs!i< zuw)`CPoJg+ho{*K4rZ@}r}Yk=gtYE4?;&x%BAl&oRoBfb zV*PHN^*>!Nt|Zo9A!O*V(-NDRV+&8fQKM;HW##zr3&G0#aM4(w)kmyu z_}$P`w5ILEO7rd_IQ}Nqta}uW_0))E&G&x7r*T3A4`lf%`D;F!C(t3{Km&~s90Oqi zDC2qJ93y-h=Ov!XI^wiy#j-j$MI5#g{7r(_5&R6n=^1#J;8IqQu4gv4d9P@IxMlTO>gn z;cNIv2*Eh*Vp)mZ3P(45_5Q2=xgH{TCI0@FLy83IAow)FI|)8d0+kZ{J;JAdY@ZRn zHBtHeeL)O6NT44HPCMY(su1kV3WUwM6^>h%SXN^#dH5YRmVN%v-c1}1kU%>L9wveC zd&Np%z4g&d4p(NJ@M!}dt>Gd+H7utSB6}dkOw?9{z8Hznkz^313d`Np&bT zsIMHf-$xvZ6`nilGQ!_O_>BbbfveRI^H&x^zEaL#hjgF{ru>F8hLaOA!(iUurG3p{ z+27+>kr-pgz*p0~c6SLPHQjK)Ws_n1AYIe#{9F0QH^R-DE{zpJMW9D(DTF7)wzm*& zJH7C6pg|ibgylewW3n(Cc?E8W0(xr=N6gG3VTjarmmgFg6NdWa!;|cW4{Mtoas2-f TvI-G@)f;t&<4fiE7WVQ#RPQmT literal 9792 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