From ec4967e2cce2ec5ffcd6ae952b24d877abade11a Mon Sep 17 00:00:00 2001 From: Derek Stevens Date: Mon, 2 Dec 2019 17:31:16 -0500 Subject: [PATCH 1/3] added a TODO for performance improvements in key.c --- key.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/key.c b/key.c index e4f5ba5..3fb2944 100755 --- a/key.c +++ b/key.c @@ -106,6 +106,8 @@ keypress(XKeyEvent *e) int rightcode = XKeysymToKeycode(dpy, NEXTVIRT_KEY); int leftcode = XKeysymToKeycode(dpy, PREVVIRT_KEY); +/* TODO: use current->screen->width/height, and use switch/case for key handling */ + XWindowAttributes ra; XGetWindowAttributes(dpy, DefaultRootWindow(dpy), &ra); From 7f97ee3e9e21ba8b6fadef7fc51588eda1d7d03e Mon Sep 17 00:00:00 2001 From: Derek Stevens Date: Wed, 4 Dec 2019 23:37:12 -0500 Subject: [PATCH 2/3] remove -grey option and related code (no bg setting); maximized window borders are off the edge of the screen now; truncate long window labels --- key.c | 30 ++++++++++++++---------------- main.c | 15 +++------------ manage.c | 4 ++++ 3 files changed, 21 insertions(+), 28 deletions(-) diff --git a/key.c b/key.c index 3fb2944..6a5b853 100755 --- a/key.c +++ b/key.c @@ -106,14 +106,12 @@ keypress(XKeyEvent *e) int rightcode = XKeysymToKeycode(dpy, NEXTVIRT_KEY); int leftcode = XKeysymToKeycode(dpy, PREVVIRT_KEY); -/* TODO: use current->screen->width/height, and use switch/case for key handling */ + static int scrw = 0; + static int scrh = 0; - XWindowAttributes ra; - XGetWindowAttributes(dpy, DefaultRootWindow(dpy), &ra); + scrw = current->screen->width; + scrh = current->screen->height; -/* alt tab */ - if(e->keycode == tabcode && (e->state&Mod1Mask) == (1<<3)) - alttab(e->state&ShiftMask); /* basic wm functionality */ if(e->keycode == dcode && (e->state&SHORTCUTMOD) == (MODBITS)) @@ -125,31 +123,31 @@ keypress(XKeyEvent *e) if (e->keycode == rcode && (e->state&SHORTCUTMOD) == (MODBITS)) reshape(current, Button3, sweep, 0); if (e->keycode == mcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, 0, 0, ra.width, ra.height); + quickreshape(current, -BORDER, -BORDER, scrw+BORDER, scrh+BORDER); /* half snap */ if (e->keycode == hcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, 0, 0, ra.width/2, ra.height); + quickreshape(current, 0, 0, scrw/2, scrh); if (e->keycode == lcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, ra.width/2, 0, ra.width/2, ra.height); + quickreshape(current, scrw/2, 0, scrw/2, scrh); if (e->keycode == jcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, 0, ra.height/2, ra.width, ra.height/2); + quickreshape(current, 0, scrh/2, scrw, scrh/2); if (e->keycode == kcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, 0, 0, ra.width, ra.height/2); + quickreshape(current, 0, 0, scrw, scrh/2); /* quarter snap */ if (e->keycode == qcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, 0, 0, ra.width/2, ra.height/2); + quickreshape(current, 0, 0, scrw/2, scrh/2); if (e->keycode == wcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, 0, ra.height/2, ra.width/2, ra.height/2); + quickreshape(current, 0, scrh/2, scrw/2, scrh/2); if (e->keycode == ocode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, ra.width/2, ra.height/2, ra.width/2, ra.height/2); + quickreshape(current, scrw/2, scrh/2, scrw/2, scrh/2); if (e->keycode == pcode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, ra.width/2, 0, ra.width/2, ra.height/2); + quickreshape(current, scrw/2, 0, scrw/2, scrh/2); /* center snap */ if (e->keycode == ccode && (e->state&SHORTCUTMOD) == (MODBITS)) - quickreshape(current, ra.width/5, ra.height/5, 3*ra.width/5, 3*ra.height/5); + quickreshape(current, scrw/5, scrh/5, 3*scrw/5, 3*scrh/5); /* launch */ diff --git a/main.c b/main.c index 5eba2c8..c4e18a7 100755 --- a/main.c +++ b/main.c @@ -72,14 +72,14 @@ char *fontlist[] = { void usage(void) { - fprintf(stderr, "usage: ryudo [-grey] [-font fname] [-s] [-term prog] [-version] [-virtuals num] [exit|restart]\n"); + fprintf(stderr, "usage: ryudo [-font fname] [-s] [-term prog] [-version] [-virtuals num] [exit|restart]\n"); exit(1); } int main(int argc, char *argv[]) { - int i, background, do_exit, do_restart; + int i, do_exit, do_restart; char *fname; int shape_event; #ifdef SHAPE @@ -90,14 +90,11 @@ main(int argc, char *argv[]) myargv = argv; /* for restart */ do_exit = do_restart = 0; - background = 0; font = 0; fname = 0; for(i = 1; i < argc; i++) if(strcmp(argv[i], "-nostalgia") == 0) nostalgia++; - else if(strcmp(argv[i], "-grey") == 0) - background = 1; else if(strcmp(argv[i], "-debug") == 0) debug++; /* @@ -217,7 +214,7 @@ main(int argc, char *argv[]) screens = (ScreenInfo *)malloc(sizeof(ScreenInfo) * num_screens); for(i = 0; i < num_screens; i++) - initscreen(&screens[i], i, background); + initscreen(&screens[i], i, 0); initb2menu(numvirtuals); @@ -352,12 +349,6 @@ initscreen(ScreenInfo *s, int i, int background) XChangeWindowAttributes(dpy, s->root, mask, &attr); XSync(dpy, False); - if(background){ - XSetWindowBackgroundPixmap(dpy, s->root, s->root_pixmap); - XClearWindow(dpy, s->root); - } else - system("xsetroot -solid grey30"); - attrs.border_pixel = colorpixel(dpy, s, s->depth, MBORDERCOL, s->black); attrs.background_pixel = colorpixel(dpy, s, s->depth, MENUBGCOL, s->white); attrs.colormap = s->def_cmap; diff --git a/manage.c b/manage.c index 79f3bf9..239e37c 100755 --- a/manage.c +++ b/manage.c @@ -355,6 +355,10 @@ setlabel(Client *c) label = "no label"; if((p = index(label, ':')) != 0) *p = '\0'; + if (sizeof(label) >= 16*sizeof(char)){ + label[15] = '~'; + label[18] = '\0'; + } c->label = label; } From 67a83975168ed5c3242b81e05c713f97ebd9be92 Mon Sep 17 00:00:00 2001 From: Derek Stevens Date: Wed, 4 Dec 2019 23:45:22 -0500 Subject: [PATCH 3/3] fix truncation of long window labels --- manage.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/manage.c b/manage.c index 239e37c..895174f 100755 --- a/manage.c +++ b/manage.c @@ -341,7 +341,7 @@ getcmaps(Client *c) void setlabel(Client *c) { - char *label, *p; + char *label, *p, *lc, i; if(c->iconname != 0) label = c->iconname; @@ -355,9 +355,12 @@ setlabel(Client *c) label = "no label"; if((p = index(label, ':')) != 0) *p = '\0'; - if (sizeof(label) >= 16*sizeof(char)){ - label[15] = '~'; - label[18] = '\0'; + for (lc = label, i = 0; lc++, i++; *lc != 0){ + if (i >= 24) + { + label[22] = '~'; + label[23] = '\0'; + } } c->label = label; }