fixed wmiimenu issue (grabbing keyboard without input list made restart of X necessary, to get back input focus), updated README, updated TODO.wmii-4 (cleaned up, made ordered list)

This commit is contained in:
Anselm R. Garbe 2006-05-10 23:26:53 +02:00
parent d962bec269
commit 4d1fcd32d3
3 changed files with 38 additions and 61 deletions

2
README
View File

@ -60,7 +60,7 @@ The following people have contributed especially to wmii in various ways:
- Vincent <10 dot 50 at free dot fr>
- Oliver Kopp <olly at flupp dot de>
- Sebastian Roth <sebastian dot roth at gmail dot com>
- Nico Golde <nico at dot ngolde dot de>
- Nico Golde <nico at ngolde dot de>
- Steve Hoffman <steveh at g2switchworks dot com>
- Christof Musik <christof at senfdax dot de>
- Steffen Liebergeld <perl at gmx dot org>

View File

@ -1,62 +1,34 @@
- UTF8 support, look into fluxbox
Ordered list of TODOs:
- remove swapping action, merge vertocal swapping into moving - is this a good idea?
- remove internal labels, now tagging seems easy and straightforward that they
THINK: We'll need CreateTag, DestroyTag, UnfocusTag, FocusTag and the
event loop in wmiirc must be before TAGGING
can be externalized again
- idea for column mode:
*: is the current default mode with fallback (shows arbitrary clients)
0: is the current max mode, shows only one client at the time (same bahvior as current)
n: shows n clients, in stacking mode, using the selected client as center,
100: is the current default mode with fallback (shows arbitrary clients)
0: is the current max mode, shows only one client at the time (same bahvior
as current) n: shows n clients, in stacking mode, using the
selected client as center,
n == 1 is current stacking mode,
n == equal will use the center of (n/2),
n == unequal has always a center element.
- tagbars
- screen dimension rescaling if screen resolution changes (even with Xrandr)
- Xinerama support
- partly EWMH support
- libixp: idea from PoP: implement a va_args method similiar to printf for
marshalling 9P messages, might reduce LOC drastically
Visible clients should only change when a formerly hidden
(stacked) client is made visible. So, when the fifth client is focused
and made visible, the third would disappear (with n=2) -- this means on
boundaries, like in mutt(1).
- /def/ncol defines num of columns which should be created by default if possible.
- wmiimenu -t <title> flag
- remove the geom syntax as it is now (with the +- stuff, and only
allowing explicit coordinates, instead additionally resize
+/-<w> +/-<h> and move +/-<x> +/-<y> actions are needed in the
associated ctl devices of clients.
- add wmiir ls (read should have same semantic as in 9p), output without
details, add -l for details like in ls of Plan 9
details, add -l for details like in ls of Plan 9
- remove internal labels, now tagging seems easy and straightforward that they
THINK: We'll need CreateTag, DestroyTag, UnfocusTag, FocusTag and the
event loop in wmiirc must be before TAGGING can be externalized again
- liblitz: window abstraction (creation, events), can be reused in menu and bar
and frames
ad new column mode:
> > To clarify what happens on focus change imagine 6 clients with
> > stacking set to 2 visible clients per time. The center of two
> > visible clients is always the 1st client (2/2 == 1), thus if the
> > first of client of the column is focused, also the second is
> > visible, if the second is focused also the third is visible, but
> > the first is invisible, etc. The only exception will be on
> > boundaries, if the last client is selected, also the fifth
> > client will be visible.
>
> Interesting proposal, except for the portion above. Say I have the
> third and fourth clients visible, with the third focused. If I change
> the focus to the fourth client, I don't want to hide the third - I'm
> probably still working with it.
>
> I think the visible clients should only change when a formerly hidden
> (stacked) client is made visible. So, when the fifth client is focused
> and made visible, the third would disappear, leaving the fourth and
> fifth.
>
> It would work the same way in reverse. With the third and fourth
> clients visible, I can focus either without changing visiblities. When
> I focus the second client, it becomes visible and hides the fourth.
>
> This is similar to your idea, except for delaying changes to which
> clients are visible.
--Doug Bell
13:12 < Neptun> when present (like -T "Enter view name") it would create a
label with that text on the left part of the menu. what do you think?
- /def/ncol defines num of columns which should be created by default if possible.
and frames
- tagbars
- screen dimension rescaling if screen resolution changes (even with Xrandr)
- Xinerama support
- partial EWMH support
- libixp: idea from PoP: implement a va_args method similiar to printf for
marshalling 9P messages, might reduce LOC drastically

View File

@ -291,10 +291,11 @@ handle_kpress(XKeyEvent * e)
draw_menu();
}
void
static char *
read_allitems()
{
char *maxname = 0, *p, buf[1024];
static char *maxname = nil;
char *p, buf[1024];
unsigned int len = 0, max = 0;
while(fgets(buf, sizeof(buf), stdin)) {
@ -309,10 +310,7 @@ read_allitems()
cext_vattach(item2vector(&allitem), p);
}
if(maxname)
cmdw = blitz_textwidth(dpy, &draw.font, maxname) + mrect.height;
if(cmdw > mrect.width / 3)
cmdw = mrect.width / 3;
return maxname;
}
int
@ -320,7 +318,7 @@ main(int argc, char *argv[])
{
int i;
XSetWindowAttributes wa;
char *fontstr, *selcolstr, *normcolstr;
char *fontstr, *selcolstr, *normcolstr, *maxname;
XEvent ev;
/* command line args */
@ -343,7 +341,9 @@ main(int argc, char *argv[])
}
screen = DefaultScreen(dpy);
/* grab as early as possible */
maxname = read_allitems();
/* grab as early as possible, but after reading all items!!! */
while(XGrabKeyboard
(dpy, RootWindow(dpy, screen), True, GrabModeAsync,
GrabModeAsync, CurrentTime) != GrabSuccess)
@ -386,7 +386,11 @@ main(int argc, char *argv[])
DefaultDepth(dpy, screen));
XSync(dpy, False);
read_allitems();
if(maxname)
cmdw = blitz_textwidth(dpy, &draw.font, maxname) + mrect.height;
if(cmdw > mrect.width / 3)
cmdw = mrect.width / 3;
text[0] = 0;
update_items(text);
@ -412,6 +416,7 @@ main(int argc, char *argv[])
break;
}
XUngrabKeyboard(dpy, CurrentTime);
XFreePixmap(dpy, draw.drawable);
XFreeGC(dpy, draw.gc);
XDestroyWindow(dpy, win);