From ac78d59c80b627a5332ac64a7d4359389c4251fa Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Mon, 8 Jun 2020 14:58:18 -0700 Subject: small fixes --- sys/cmd/dwm/client.c | 31 +++++++++++++++++++++---------- sys/cmd/dwm/drw.c | 2 +- sys/cmd/dwm/dwm.c | 42 +++++++++++++++++++++++++----------------- sys/cmd/dwm/dwm.h | 1 + 4 files changed, 48 insertions(+), 28 deletions(-) (limited to 'sys/cmd/dwm') diff --git a/sys/cmd/dwm/client.c b/sys/cmd/dwm/client.c index 106082c..783190a 100644 --- a/sys/cmd/dwm/client.c +++ b/sys/cmd/dwm/client.c @@ -362,26 +362,37 @@ setfocus(Client *c) void setfullscreen(Client *c, int fullscreen) { + if (fullscreen && !c->isfullscreen) { + // ulong rect[4] = { 0, 0, c->w, c->h }; XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, PropModeReplace, (uchar*)&netatom[NetWMFullscreen], 1); + + static ulong opacity = 0xFFFFFFFFul; + XChangeProperty(dpy, c->win, netatom[NetWMWindowOpacity], XA_CARDINAL, 32, PropModeReplace, (uchar *)&opacity, 1L); + // XChangeProperty(dpy, c->win, netatom[NetWMOpaqueRegion], XA_CARDINAL, 32, + // PropModeReplace, (uchar*)&rect, arrlen(rect)); + c->isfullscreen = 1; - c->oldstate = c->isfloating; - c->oldbw = c->bw; - c->bw = 0; - c->isfloating = 1; + c->oldstate = c->isfloating; + c->oldbw = c->bw; + c->bw = 0; + c->isfloating = 1; resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); + XRaiseWindow(dpy, c->win); } else if (!fullscreen && c->isfullscreen){ XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, - PropModeReplace, (uchar*)0, 0); + PropModeReplace, (uchar*)nil, 0); + XDeleteProperty(dpy, c->win, netatom[NetWMWindowOpacity]); + c->isfullscreen = 0; - c->isfloating = c->oldstate; + c->isfloating = c->oldstate; c->bw = c->oldbw; - c->x = c->oldx; - c->y = c->oldy; - c->w = c->oldw; - c->h = c->oldh; + c->x = c->oldx; + c->y = c->oldy; + c->w = c->oldw; + c->h = c->oldh; resizeclient(c, c->x, c->y, c->w, c->h); arrange(c->mon); } diff --git a/sys/cmd/dwm/drw.c b/sys/cmd/dwm/drw.c index b4c993a..825e2f4 100644 --- a/sys/cmd/dwm/drw.c +++ b/sys/cmd/dwm/drw.c @@ -12,7 +12,7 @@ drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h drw->w = w; drw->h = h; drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen)); - drw->gc = XCreateGC(dpy, root, 0, NULL); + drw->gc = XCreateGC(dpy, root, 0, NULL); XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter); return drw; diff --git a/sys/cmd/dwm/dwm.c b/sys/cmd/dwm/dwm.c index a943ed7..7033d65 100644 --- a/sys/cmd/dwm/dwm.c +++ b/sys/cmd/dwm/dwm.c @@ -763,46 +763,54 @@ setup(void) drw = drw_create(dpy, screen, root, sw, sh); if (!drw_fontset_create(drw, fonts, arrlen(fonts))) fatal("no fonts could be loaded."); + lrpad = drw->fonts->h; - bh = drw->fonts->h + 2; + bh = drw->fonts->h + 2; updategeom(); + /* init atoms */ - utf8string = XInternAtom(dpy, "UTF8_STRING", False); + utf8string = XInternAtom(dpy, "UTF8_STRING", False); wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); - wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); - wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); + wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False); + wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False); wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False); - netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); - netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); - netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); - netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False); - netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False); - netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False); - netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False); + + netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); + netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False); + netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False); + netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False); + netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False); + netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False); + netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False); + netatom[NetWMWindowOpacity] = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False); netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False); - netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False); + netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False); + /* init cursors */ cursor[MouseNormal] = drw_cur_create(drw, XC_left_ptr); cursor[MouseResize] = drw_cur_create(drw, XC_sizing); - cursor[MouseMove] = drw_cur_create(drw, XC_fleur); + cursor[MouseMove] = drw_cur_create(drw, XC_fleur); + /* init appearance */ scheme = ecalloc(arrlen(colors), sizeof(Clr *)); for (i = 0; i < arrlen(colors); i++) scheme[i] = drw_scm_create(drw, colors[i], 3); + /* init bars */ updatebars(); updatestatus(); + /* supporting window for NetWMCheck */ wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, - PropModeReplace, (unsigned char *) &wmcheckwin, 1); + PropModeReplace, (uchar *) &wmcheckwin, 1); XChangeProperty(dpy, wmcheckwin, netatom[NetWMName], utf8string, 8, - PropModeReplace, (unsigned char *) "dwm", 3); + PropModeReplace, (uchar *) "dwm", 3); XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32, - PropModeReplace, (unsigned char *) &wmcheckwin, 1); + PropModeReplace, (uchar *) &wmcheckwin, 1); /* EWMH support per view */ XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32, - PropModeReplace, (unsigned char *) netatom, NetLast); + PropModeReplace, (uchar *) netatom, NetLast); XDeleteProperty(dpy, root, netatom[NetClientList]); /* select events */ wa.cursor = cursor[MouseNormal]->cursor; diff --git a/sys/cmd/dwm/dwm.h b/sys/cmd/dwm/dwm.h index 0061e74..3449ff8 100644 --- a/sys/cmd/dwm/dwm.h +++ b/sys/cmd/dwm/dwm.h @@ -64,6 +64,7 @@ enum NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog, + NetWMWindowOpacity, NetClientList, NetLast }; /* EWMH atoms */ -- cgit v1.2.1