Hello, All;

I've added a property to CWM config to hide the window in the top
left corner of the screen while moving or resizeing a window.

This is my first patch, so feel free to yell at me.


Ben Raskin


diff --git app/cwm/calmwm.h app/cwm/calmwm.h
index a0aeafa8f..3904eeddf 100644
--- app/cwm/calmwm.h
+++ app/cwm/calmwm.h
@@ -293,6 +293,7 @@ struct conf {
        int                      snapdist;
        int                      htile;
        int                      vtile;
+       int                      wprop;
        struct gap               gap;
        char                    *color[CWM_COLOR_NITEMS];
        char                    *font;
diff --git app/cwm/conf.c app/cwm/conf.c
index 1e95bd9e1..21d30d184 100644
--- app/cwm/conf.c
+++ app/cwm/conf.c
@@ -283,6 +283,7 @@ conf_init(struct conf *c)
        c->mamount = 1;
        c->htile = 50;
        c->vtile = 50;
+       c->wprop = 1;
        c->snapdist = 0;
        c->ngroups = 0;
        c->nameqlen = 5;
diff --git app/cwm/cwmrc.5 app/cwm/cwmrc.5
index bca861b0b..b511f45fa 100644
--- app/cwm/cwmrc.5
+++ app/cwm/cwmrc.5
@@ -207,6 +207,10 @@ The default behavior for new windows is to not assign any 
group.
 By enabling sticky group mode,
 .Xr cwm 1
 will assign new windows to the currently selected group.
+.It Ic wprop Ic yes Ns \&| Ns Ic no
+Toggle showing window size properties in the top left corner of a
+window during moving or resizing.
+The default behaviour is to show window size properties.
 .It Ic unbind-key Ar key
 Unbind function bound to
 .Ar key .
diff --git app/cwm/kbfunc.c app/cwm/kbfunc.c
index 53ec0cffb..c3c27a26f 100644
--- app/cwm/kbfunc.c
+++ app/cwm/kbfunc.c
@@ -167,8 +167,11 @@ kbfunc_client_move_mb(void *ctx, struct cargs *cargs)
            CurrentTime) != GrabSuccess)
                return;
 
-       screen_prop_win_create(sc, cc->win);
-       screen_prop_win_draw(sc, "%+5d%+5d", cc->geom.x, cc->geom.y);
+       if (Conf.wprop) {
+               screen_prop_win_create(sc, cc->win);
+               screen_prop_win_draw(sc, "%+5d%+5d", cc->geom.x,
+                   cc->geom.y);
+       }
        while (move) {
                XMaskEvent(X_Dpy, MOUSEMASK, &ev);
                switch (ev.type) {
@@ -191,8 +194,9 @@ kbfunc_client_move_mb(void *ctx, struct cargs *cargs)
                            cc->geom.y + cc->geom.h + (cc->bwidth * 2),
                            area.y, area.y + area.h, sc->snapdist);
                        client_move(cc);
-                       screen_prop_win_draw(sc,
-                           "%+5d%+5d", cc->geom.x, cc->geom.y);
+                       if (Conf.wprop)
+                               screen_prop_win_draw(sc,
+                                   "%+5d%+5d", cc->geom.x, cc->geom.y);
                        break;
                case ButtonRelease:
                        move = 0;
@@ -201,7 +205,8 @@ kbfunc_client_move_mb(void *ctx, struct cargs *cargs)
        }
        if (ltime)
                client_move(cc);
-       screen_prop_win_destroy(sc);
+       if (Conf.wprop)
+               screen_prop_win_destroy(sc);
        XUngrabPointer(X_Dpy, CurrentTime);
 }
 
@@ -256,8 +261,11 @@ kbfunc_client_resize_mb(void *ctx, struct cargs *cargs)
            CurrentTime) != GrabSuccess)
                return;
 
-       screen_prop_win_create(sc, cc->win);
-       screen_prop_win_draw(sc, "%4d x %-4d", cc->dim.w, cc->dim.h);
+       if (Conf.wprop) {
+               screen_prop_win_create(sc, cc->win);
+               screen_prop_win_draw(sc, "%4d x %-4d", cc->dim.w,
+                   cc->dim.h);
+       }
        while (resize) {
                XMaskEvent(X_Dpy, MOUSEMASK, &ev);
                switch (ev.type) {
@@ -271,8 +279,10 @@ kbfunc_client_resize_mb(void *ctx, struct cargs *cargs)
                        cc->geom.h = ev.xmotion.y;
                        client_apply_sizehints(cc);
                        client_resize(cc, 1);
-                       screen_prop_win_draw(sc,
-                           "%4d x %-4d", cc->dim.w, cc->dim.h);
+                       if (Conf.wprop)
+                               screen_prop_win_draw(sc,
+                                   "%4d x %-4d", cc->dim.w,
+                                   cc->dim.h);
                        break;
                case ButtonRelease:
                        resize = 0;
@@ -281,7 +291,8 @@ kbfunc_client_resize_mb(void *ctx, struct cargs *cargs)
        }
        if (ltime)
                client_resize(cc, 1);
-       screen_prop_win_destroy(sc);
+       if (Conf.wprop)
+               screen_prop_win_destroy(sc);
        XUngrabPointer(X_Dpy, CurrentTime);
 
        /* Make sure the pointer stays within the window. */
diff --git app/cwm/parse.y app/cwm/parse.y
index c1bf8c563..0cef1e205 100644
--- app/cwm/parse.y
+++ app/cwm/parse.y
@@ -69,7 +69,7 @@ typedef struct {
 %}
 
 %token BINDKEY UNBINDKEY BINDMOUSE UNBINDMOUSE
-%token FONTNAME STICKY GAP
+%token FONTNAME STICKY GAP WPROP
 %token AUTOGROUP COMMAND IGNORE WM
 %token YES NO BORDERWIDTH MOVEAMOUNT HTILE VTILE
 %token COLOR SNAPDIST
@@ -136,6 +136,9 @@ main                : FONTNAME STRING               {
                        }
                        conf->vtile = $2;
                }
+               | WPROP yesno {
+                       conf->wprop = $2;
+               }
                | MOVEAMOUNT NUMBER {
                        if ($2 < 0 || $2 > INT_MAX) {
                                yyerror("invalid movemount");
@@ -346,6 +349,7 @@ lookup(char *s)
                { "urgencyborder",      URGENCYBORDER},
                { "vtile",              VTILE},
                { "wm",                 WM},
+               { "wprop",              WPROP},
                { "yes",                YES}
        };
        const struct keywords   *p;

Reply via email to