sowm

An itsy bitsy floating window manager (220~ sloc!).
git clone git://mfeller.io/sowm.git
Log | Files | Refs | README | LICENSE

commit 8c06f70b13177350e7b29ea2367da8598b4ac371
parent f603fbb49cd7fbb808c3b8996d9b51d8b8edde5c
Author: Dylan Araps <dylan.araps@gmail.com>
Date:   Fri, 11 Oct 2019 21:29:41 +0300

fixed big dumb dumb firefox

Diffstat:
Mcatwm.c | 22+++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/catwm.c b/catwm.c @@ -49,6 +49,7 @@ struct desktop{ client *current; }; +static void configure_request(XEvent *e); static void destroy_notify(XEvent *e); static void map_request(XEvent *e); @@ -101,6 +102,7 @@ static XWindowAttributes attr; static void (*events[LASTEvent])(XEvent *e) = { [ButtonPress] = button_press, [ButtonRelease] = button_release, + [ConfigureRequest] = configure_request, [DestroyNotify] = destroy_notify, [KeyPress] = key_press, [MapRequest] = map_request, @@ -160,6 +162,8 @@ void win_center() { } void win_fs() { + if (current == NULL) return; + if (current->f != 1) { XGetWindowAttributes(dis, current->win, &attr); @@ -216,6 +220,20 @@ void destroy_notify(XEvent *e) { win_update(); } +void configure_request(XEvent *e) { + XConfigureRequestEvent *ev = &e->xconfigurerequest; + XWindowChanges wc; + + wc.x = ev->x; + wc.y = ev->y; + wc.width = ev->width; + wc.height = ev->height; + wc.sibling = ev->above; + wc.stack_mode = ev->detail; + + XConfigureWindow(dis, ev->window, ev->value_mask, &wc); +} + void win_update() { client *c; @@ -270,6 +288,8 @@ void motion_notify(XEvent *e) { attr.y + (start.button==1 ? ydiff : 0), MAX(1, attr.width + (start.button==3 ? xdiff : 0)), MAX(1, attr.height + (start.button==3 ? ydiff : 0))); + + current->f = 0; } } @@ -294,7 +314,7 @@ void map_request(XEvent *e) { } win_add(ev->window); - // win_center(); + win_center(); XMapWindow(dis,ev->window); win_update(); }