mirror of
https://github.com/0intro/wmii
synced 2024-12-27 05:39:43 +03:00
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:
parent
d962bec269
commit
4d1fcd32d3
2
README
2
README
@ -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>
|
||||
|
74
TODO.wmii-4
74
TODO.wmii-4
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user