Rearrange some things.

This commit is contained in:
Kris Maglione 2010-06-14 10:30:23 -04:00
parent e5e4ff284d
commit 398533dfd1
80 changed files with 267 additions and 431 deletions

View File

@ -4,7 +4,8 @@ syntax: regexp
\.([oa]|out|o_pic|so|pyc|pyo|diff)$ \.([oa]|out|o_pic|so|pyc|pyo|diff)$
\.(diff|orig|rej|bak)$ \.(diff|orig|rej|bak)$
\.(aux|idx|ilg|ind|log|toc)$ \.(aux|idx|ilg|ind|log|toc)$
^cmd/(stfo|osd|wiwarp|setfocus)(/|$) ^cmd/osd(/|$)
^cmd/x11/(stfo|wiclick)\.
^(pkg|src)/ ^(pkg|src)/
^doxy ^doxy
/bak/ /bak/

View File

@ -2,7 +2,7 @@ ROOT=..
include $(ROOT)/mk/hdr.mk include $(ROOT)/mk/hdr.mk
include $(ROOT)/mk/wmii.mk include $(ROOT)/mk/wmii.mk
BIN = $(ETC)/wmii$(CONFVERSION) BIN = $(GLOBALCONF)
DIRS = python \ DIRS = python \
plan9port \ plan9port \
ruby ruby

View File

@ -5,5 +5,5 @@ include $(ROOT)/mk/wmii.mk
DOCS = README DOCS = README
EXECS = wmiirc EXECS = wmiirc
DIR = $(ETC)/wmii$(CONFVERSION)/plan9port DIR = $(GLOBALCONF)/plan9port
DOCDIR = $(DOC)/alternative_wmiircs/plan9port DOCDIR = $(DOC)/alternative_wmiircs/plan9port

View File

@ -8,7 +8,7 @@ TEXT = wmiirc.py
DIRS = pygmi \ DIRS = pygmi \
pyxp pyxp
DIR = $(ETC)/wmii$(CONFVERSION)/python DIR = $(GLOBALCONF)/python
DOCDIR = $(DOC)/alternative_wmiircs/python DOCDIR = $(DOC)/alternative_wmiircs/python
include $(ROOT)/mk/dir.mk include $(ROOT)/mk/dir.mk

View File

@ -9,4 +9,4 @@ BINARY = __init__.py \
monitor.py \ monitor.py \
util.py util.py
DIR = $(ETC)/wmii$(CONFVERSION)/python/pygmi DIR = $(GLOBALCONF)/python/pygmi

View File

@ -12,4 +12,4 @@ BINARY = __init__.py \
mux.py \ mux.py \
types.py types.py
DIR = $(ETC)/wmii$(CONFVERSION)/python/pyxp DIR = $(GLOBALCONF)/python/pyxp

View File

@ -9,5 +9,5 @@ EXECS = wmiirc
TEXT = config.rb \ TEXT = config.rb \
config.yaml config.yaml
DIR = $(ETC)/wmii$(CONFVERSION)/ruby DIR = $(GLOBALCONF)/ruby
DOCDIR = $(DOC)/alternative_wmiircs/ruby DOCDIR = $(DOC)/alternative_wmiircs/ruby

View File

@ -4,24 +4,18 @@ include $(ROOT)/mk/wmii.mk
wmiir.c: $(ROOT)/mk/wmii.mk wmiir.c: $(ROOT)/mk/wmii.mk
DIRS = wmii \ DIRS = menu \
keyname \
menu \
strut \ strut \
tray tray \
wmii \
x11
TARG = wihack \ TARG = wihack \
wmii.rc \ wmii.rc \
wmii.sh \ wmii.sh \
wmii9menu \
wmiir wmiir
LIBS += $(LIBS9) $(LIBIXP) LIBS += $(LIBS9) $(LIBIXP)
CFLAGS += $(INCX11)
include $(ROOT)/mk/many.mk include $(ROOT)/mk/many.mk
include $(ROOT)/mk/dir.mk include $(ROOT)/mk/dir.mk
O9MENU=wmii9menu.o $(ROOT)/lib/libstuff.a $(LIBIXP)
wmii9menu.out: $(O9MENU)
$(LINK) $@ $(O9MENU) $$(pkg-config --libs $(X11PACKAGES)) -lXext

View File

@ -1,18 +0,0 @@
ROOT= ../..
include $(ROOT)/mk/hdr.mk
include $(ROOT)/mk/wmii.mk
main.c: $(ROOT)/mk/wmii.mk
TARG = click
HFILES= dat.h fns.h
PACKAGES += $(X11PACKAGES) xext xrandr xrender xinerama
LIB = $(LIBIXP) $(LIBS9)
LIBS += -lm -lXtst
CFLAGS += -DIXP_NEEDAPI=86
OBJ = main
include $(ROOT)/mk/one.mk

View File

@ -1,77 +0,0 @@
/* Copyright ©2008-2010 Kris Maglione <maglione.k at Gmail>
* See LICENSE file for license details.
*/
#include "dat.h"
#include <ctype.h>
#include <string.h>
#include "fns.h"
#define strbcmp(str, const) (strncmp((str), (const), sizeof(const)-1))
static int
getbase(const char **s, long *sign) {
const char *p;
int ret;
ret = 10;
*sign = 1;
if(**s == '-') {
*sign = -1;
*s += 1;
}else if(**s == '+')
*s += 1;
p = *s;
if(!strbcmp(p, "0x")) {
*s += 2;
ret = 16;
}
else if(isdigit(p[0])) {
if(p[1] == 'r') {
*s += 2;
ret = p[0] - '0';
}
else if(isdigit(p[1]) && p[2] == 'r') {
*s += 3;
ret = 10*(p[0]-'0') + (p[1]-'0');
}
}
else if(p[0] == '0') {
ret = 8;
}
if(ret != 10 && (**s == '-' || **s == '+'))
*sign = 0;
return ret;
}
bool
getlong(const char *s, long *ret) {
const char *end;
char *rend;
int base;
long sign;
end = s+strlen(s);
base = getbase(&s, &sign);
if(sign == 0)
return false;
*ret = sign * strtol(s, &rend, base);
return (end == rend);
}
bool
getulong(const char *s, ulong *ret) {
const char *end;
char *rend;
int base;
long sign;
end = s+strlen(s);
base = getbase(&s, &sign);
if(sign < 1)
return false;
*ret = strtoul(s, &rend, base);
return (end == rend);
}

View File

@ -1,17 +0,0 @@
#include <fmt.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <unistd.h>
#include <stuff/x.h>
#include <stuff/util.h>
#include <ixp.h>
#define BLOCK(x) do { x; }while(0)
#ifndef EXTERN
# define EXTERN extern
#endif
EXTERN Window win;

View File

@ -1 +0,0 @@

View File

@ -1,60 +0,0 @@
/* Copyright ©2006-2010 Kris Maglione <maglione.k at Gmail>
* See LICENSE file for license details.
*/
#define EXTERN
#include "dat.h"
#include <X11/Xproto.h>
#include <X11/extensions/XTest.h>
#include <locale.h>
#include <string.h>
#include "fns.h"
static const char version[] = "click-"VERSION", "COPYRIGHT"\n";
static void
usage(void) {
fatal("usage: %s [window]\n", argv0);
}
static void
click(Window *w, Point p) {
Rectangle r;
Point rp;
r = getwinrect(w);
rp = subpt(r.max, p);
XTestFakeMotionEvent(display, 0, rp.x, rp.y, 0);
XTestFakeButtonEvent(display, 1, true, 0);
XTestFakeButtonEvent(display, 1, false, 0);
XTestFakeMotionEvent(display, 0, r.max.x, r.max.y, 0);
}
int
main(int argc, char *argv[]) {
char *s;
ARGBEGIN{
default:
usage();
}ARGEND;
initdisplay();
s = ARGF();
if(s && !getulong(s, &win.xid))
usage();
if (!s)
win.xid = getfocus();
if(argc)
usage();
click(&win, Pt(1, 1));
XCloseDisplay(display);
return 0;
}

View File

@ -1,15 +0,0 @@
ROOT= ../..
include $(ROOT)/mk/hdr.mk
include $(ROOT)/mk/wmii.mk
main.c: $(ROOT)/mk/wmii.mk
TARG = wikeyname
PACKAGES += $(X11PACKAGES)
LIB = $(LIBS9)
OBJ = main
include $(ROOT)/mk/one.mk

View File

@ -15,28 +15,6 @@ struct Key {
static Key* bindings; static Key* bindings;
static void
init_numlock(void) {
static int masks[] = {
ShiftMask, LockMask, ControlMask, Mod1Mask,
Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
};
XModifierKeymap *modmap;
KeyCode kcode;
int i, max;
modmap = XGetModifierMapping(display);
kcode = keycode("Num_Lock");
if(kcode)
if(modmap && modmap->max_keypermod > 0) {
max = nelem(masks) * modmap->max_keypermod;
for(i = 0; i < max; i++)
if(modmap->modifiermap[i] == kcode)
numlock = masks[i / modmap->max_keypermod];
}
XFreeModifiermap(modmap);
}
/* /*
* To do: Find my red black tree implementation. * To do: Find my red black tree implementation.
*/ */
@ -50,7 +28,7 @@ parse_keys(char *spec) {
int i, nlines, nwords; int i, nlines, nwords;
if(!numlock) if(!numlock)
init_numlock(); numlock = numlockmask();
nlines = tokenize(lines, nelem(lines), spec, '\n'); nlines = tokenize(lines, nelem(lines), spec, '\n');
for(i=0; i < nlines; i++) { for(i=0; i < nlines; i++) {

View File

@ -6,30 +6,6 @@
#include <X11/keysym.h> #include <X11/keysym.h>
#include "fns.h" #include "fns.h"
void
init_lock_keys(void) {
static int masks[] = {
ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
Mod3Mask, Mod4Mask, Mod5Mask
};
XModifierKeymap *modmap;
KeyCode numlock;
int i, max;
numlock_mask = 0;
modmap = XGetModifierMapping(display);
numlock = keycode("Num_Lock");
if(numlock)
if(modmap && modmap->max_keypermod > 0) {
max = nelem(masks) * modmap->max_keypermod;
for(i = 0; i < max; i++)
if(modmap->modifiermap[i] == numlock)
numlock_mask = masks[i / modmap->max_keypermod];
}
XFreeModifiermap(modmap);
valid_mask = 255 & ~(numlock_mask | LockMask);
}
static void static void
freekey(Key *k) { freekey(Key *k) {
Key *n; Key *n;
@ -71,7 +47,7 @@ name2key(const char *name) {
Key *k; Key *k;
for(k=key; k; k=k->lnext) for(k=key; k; k=k->lnext)
if(!strncmp(k->name, name, sizeof k->name)) if(!strcmp(k->name, name))
return k; return k;
return nil; return nil;
} }
@ -218,22 +194,21 @@ update_keys(void) {
Key *k; Key *k;
char *l, *p; char *l, *p;
init_lock_keys(); numlock_mask = numlockmask();
valid_mask = 0xff & ~(numlock_mask | LockMask);
while((k = key)) { while((k = key)) {
key = key->lnext; key = key->lnext;
ungrabkey(k); ungrabkey(k);
freekey(k); freekey(k);
} }
for(l = p = def.keys; p && *p;) { for(l = p = def.keys; p && *p; p++) {
if(*p == '\n') { if(*p == '\n') {
*p = 0; *p = 0;
if((k = getkey(l))) if((k = getkey(l)))
grabkey(k); grabkey(k);
*p = '\n'; *p = '\n';
l = ++p; l = p + 1;
} }
else
p++;
} }
if(l < p && strlen(l)) { if(l < p && strlen(l)) {
if((k = getkey(l))) if((k = getkey(l)))

View File

@ -92,9 +92,9 @@ init_environment(void) {
setenv("WMII_ADDRESS", address, true); setenv("WMII_ADDRESS", address, true);
else else
address = smprint("unix!%s/wmii", ns_path); address = smprint("unix!%s/wmii", ns_path);
setenv("WMII_CONFPATH", sxprint("%s/.wmii%s:%s/wmii%s", setenv("WMII_CONFPATH",
getenv("HOME"), CONFVERSION, sxprint("%s/.%s:%s", getenv("HOME"), CONFDIR, GLOBALCONF),
CONFPREFIX, CONFVERSION), true); true);
} }
static void static void
@ -398,7 +398,7 @@ main(int argc, char *argv[]) {
init_traps(); init_traps();
init_cursors(); init_cursors();
init_lock_keys(); update_keys();
ewmh_init(); ewmh_init();
xext_init(); xext_init();

18
cmd/x11/Makefile Normal file
View File

@ -0,0 +1,18 @@
ROOT= ../..
include $(ROOT)/mk/hdr.mk
include $(ROOT)/mk/wmii.mk
TARG = wikeyname \
wmii9menu
PACKAGES += $(X11PACKAGES)
LIB = $(LIBS9) $(LIBIXP)
LIBS += $(LIB)
CFLAGS += $(INCX11)
wiclick.out: wiclick.o
$(LINK) $@ $< -lXtst
include $(ROOT)/mk/many.mk

27
cmd/x11/setfocus.c Normal file
View File

@ -0,0 +1,27 @@
/* Copyight 2008 Kris Maglione <maglione.k at Gmail>
* See LICENSE file for license details.
*/
#include <ctype.h>
#include <stdarg.h>
#include <stdbool.h>
#include <string.h>
#include <stuff/x.h>
#include <stuff/util.h>
#include <fmt.h>
int
main(int argc, char *argv[]) {
XWindow w;
ARGBEGIN{
}ARGEND;
initdisplay();
if(!getulong(EARGF(exit(1)), &w))
exit(1);
XSetInputFocus(display, w, RevertToParent, CurrentTime);
XCloseDisplay(display);
}

View File

@ -30,6 +30,7 @@ main(int argc, char *argv[]) {
if(argc) if(argc)
usage(); usage();
fmtinstall('K', fmtkey);
initdisplay(); initdisplay();
selectinput(&scr.root, KeyPressMask|KeyReleaseMask); selectinput(&scr.root, KeyPressMask|KeyReleaseMask);
@ -46,25 +47,11 @@ main(int argc, char *argv[]) {
static bool static bool
kdown_event(Window *w, void *aux, XKeyEvent *ev) { kdown_event(Window *w, void *aux, XKeyEvent *ev) {
Fmt f;
char buf[32];
char *key;
KeySym ksym;
int num;
USED(aux); USED(w, aux);
nkeys++; nkeys++;
num = XLookupString(ev, buf, sizeof buf, &ksym, 0);
key = XKeysymToString(ksym);
fmtstrinit(&f);
unmask(&f, ev->state, modkey_names, '-');
if(f.nfmt)
fmtrune(&f, '-');
fmtstrcpy(&f, key);
free(keyname); free(keyname);
keyname = fmtstrflush(&f); keyname = smprint("%K", ev);
return false; return false;
} }

34
cmd/x11/wiwarp.c Normal file
View File

@ -0,0 +1,34 @@
/* Copyight 2008 Kris Maglione <maglione.k at Gmail>
* See LICENSE file for license details.
*/
#include <ctype.h>
#include <stdarg.h>
#include <stdbool.h>
#include <string.h>
#include <stuff/x.h>
#include <stuff/util.h>
#include <fmt.h>
int
main(int argc, char *argv[]) {
Point pt;
ARGBEGIN{
}ARGEND;
initdisplay();
if(argc) {
if(!getint(EARGF(exit(1)), &pt.x))
exit(1);
if(!getint(EARGF(exit(1)), &pt.y))
exit(1);
}else {
pt = querypointer(&scr.root);
lprint(1, "%d %d\n", pt.x, pt.y);
}
warppointer(pt);
XCloseDisplay(display);
}

View File

@ -18,6 +18,8 @@ extern void init_screens(void);
/* printevent.c */ /* printevent.c */
int fmtevent(Fmt*); int fmtevent(Fmt*);
int fmtkey(Fmt*);
/* xext.c */ /* xext.c */
void randr_event(XEvent*); void randr_event(XEvent*);
bool render_argb_p(Visual*); bool render_argb_p(Visual*);

View File

@ -236,10 +236,10 @@ void changeprop_string(Window*, const char*, const char*);
void changeprop_textlist(Window*, const char*, const char*, char*[]); void changeprop_textlist(Window*, const char*, const char*, char*[]);
void changeprop_ulong(Window*, const char*, const char*, ulong[], int); void changeprop_ulong(Window*, const char*, const char*, ulong[], int);
void changeproperty(Window*, const char*, const char*, int width, const uchar*, int); void changeproperty(Window*, const char*, const char*, int width, const uchar*, int);
void cleanupwindow(Window*);
void clientmessage(Window*, const char*, long, int, ClientMessageData); void clientmessage(Window*, const char*, long, int, ClientMessageData);
void copyimage(Image*, Rectangle, Image*, Point); void copyimage(Image*, Rectangle, Image*, Point);
Window* createwindow(Window*, Rectangle, int depth, uint class, WinAttr*, int valuemask); Window* createwindow(Window*, Rectangle, int depth, uint class, WinAttr*, int valuemask);
void cleanupwindow(Window*);
Window* createwindow_visual(Window*, Rectangle, int depth, Visual*, uint class, WinAttr*, int); Window* createwindow_visual(Window*, Rectangle, int depth, Visual*, uint class, WinAttr*, int);
void delproperty(Window*, const char*); void delproperty(Window*, const char*);
void destroywindow(Window*); void destroywindow(Window*);
@ -272,6 +272,7 @@ Font* loadfont(const char*);
void lowerwin(Window*); void lowerwin(Window*);
int mapwin(Window*); int mapwin(Window*);
void movewin(Window*, Point); void movewin(Window*, Point);
int numlockmask(void);
bool parsecolor(const char *name, Color*); bool parsecolor(const char *name, Color*);
bool parsekey(char*, int*, char**); bool parsekey(char*, int*, char**);
ulong pixelvalue(Color); ulong pixelvalue(Color);

View File

@ -1,21 +0,0 @@
#include "fmtdef.h"
void
vseprint(Fmt *f, char *buf, char *e) {
Fmt f;
if(e <= buf)
return nil;
f.runes = 0;
f.start = buf;
f.to = buf;
f.stop = e - 1;
f.flush = 0;
f.farg = nil;
f.nfmt = 0;
va_copy(f.args,args);
dofmt(&f, fmt);
va_end(f.args);
*(char*)f.to = '\0';
return (char*)f.to;
}

View File

@ -38,5 +38,4 @@ traperrors(bool enable) {
if (enable) if (enable)
nerrors = 0; nerrors = 0;
return nerrors; return nerrors;
} }

View File

@ -3,8 +3,6 @@
*/ */
#include "../x11.h" #include "../x11.h"
typedef struct KMask KMask;
char *modkey_names[] = { char *modkey_names[] = {
"Shift", "Shift",
"", "",
@ -41,3 +39,43 @@ parsekey(char *str, int *mask, char **key) {
else else
return i == nkeys; return i == nkeys;
} }
int
numlockmask(void) {
static int masks[] = {
ShiftMask, LockMask, ControlMask, Mod1Mask,
Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
};
XModifierKeymap *modmap;
KeyCode kcode;
int i, max, numlock;
numlock = 0;
modmap = XGetModifierMapping(display);
kcode = keycode("Num_Lock");
if(kcode && modmap && modmap->max_keypermod > 0) {
max = nelem(masks) * modmap->max_keypermod;
for(i = 0; i < max && !numlock; i++)
if(modmap->modifiermap[i] == kcode)
numlock = masks[i / modmap->max_keypermod];
}
XFreeModifiermap(modmap);
return numlock;
}
int
fmtkey(Fmt *f) {
XKeyEvent *ev;
char *key;
int nfmt;
ev = va_arg(f->args, XKeyEvent*);
key = XKeysymToString(XKeycodeToKeysym(display, ev->keycode, 0));
nfmt = f->nfmt;
unmask(f, ev->state, modkey_names, '-');
if(f->nfmt > nfmt)
fmtrune(f, '-');
return fmtstrcpy(f, key);
}

View File

@ -51,7 +51,6 @@ connections. The address takes the form
unix!/tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii unix!/tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii
.fi .fi
which opens a unix socket per Plan 9 Port conventions. To which opens a unix socket per Plan 9 Port conventions. To
open a TCP socket, listening at port 4332 on the loopback open a TCP socket, listening at port 4332 on the loopback
interface, use: interface, use:
@ -60,7 +59,6 @@ interface, use:
tcp!localhost!4332 tcp!localhost!4332
.fi .fi
\fB$WMII_NAMESPACE\fR is automatically set to this value. \fB$WMII_NAMESPACE\fR is automatically set to this value.
.TP .TP
@ -265,14 +263,12 @@ Rules have the form:
/\fI<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR* /\fI<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR*
.fi .fi
Where, Where,
.nf .nf
\fI<width>\fR := \fI<percent of screen>\fR | \fI<pixels>\fRpx \fI<width>\fR := \fI<percent of screen>\fR | \fI<pixels>\fRpx
.fi .fi
When a new column, \fI<n>\fR, is created on a view whose name When a new column, \fI<n>\fR, is created on a view whose name
matches \fI<regex>\fR, it is given the \fI<n>\fRth supplied \fI<width>\fR. matches \fI<regex>\fR, it is given the \fI<n>\fRth supplied \fI<width>\fR.
If there is no \fI<n>\fRth width, it is given 1/\fI<ncol>\fRth of the If there is no \fI<n>\fRth width, it is given 1/\fI<ncol>\fRth of the
@ -290,7 +286,6 @@ specified as:
/\fI<regex>\fR/ \fI<key>\fR=\fI<value>\fR ... /\fI<regex>\fR/ \fI<key>\fR=\fI<value>\fR ...
.fi .fi
where each \fI<key>\fR represents a command in the clients \fIctl\fR where each \fI<key>\fR represents a command in the clients \fIctl\fR
file, and each \fI<value>\fR represents the value to assign to it. file, and each \fI<value>\fR represents the value to assign to it.
The rules are applied when the client is first started and The rules are applied when the client is first started and
@ -405,7 +400,9 @@ attached to a new view. Ordinarilly, the value
changes automatically whenever the window is changes automatically whenever the window is
moved between the floating and managed layers. moved between the floating and managed layers.
However, setting a value of \fIalways\fR or \fInever\fR However, setting a value of \fIalways\fR or \fInever\fR
overrides this behavior. overrides this behavior. Additionally, dialogs,
menus, docks, and splash screens will always
float unless this value is set to \fInever\fR.
.TP .TP
fullscreen \fI<on | off | toggle>\fR fullscreen \fI<on | off | toggle>\fR
Sets the client's fullscreen state. Sets the client's fullscreen state.
@ -519,7 +516,6 @@ Selects a column or the floating area.
area ::= \fI<area_spec>\fR | \fI<screen_spec>\fR:\fI<area_spec>\fR area ::= \fI<area_spec>\fR | \fI<screen_spec>\fR:\fI<area_spec>\fR
.fi .fi
When \fI<screen_spec>\fR is omitted and \fI<area_spec>\fR is not "sel", When \fI<screen_spec>\fR is omitted and \fI<area_spec>\fR is not "sel",
0 is assumed. "sel" by itself represents the selected client no 0 is assumed. "sel" by itself represents the selected client no
matter which screen it is on. matter which screen it is on.
@ -528,7 +524,6 @@ matter which screen it is on.
area_spec ::= "~" | \fI<number>\fR | "sel" area_spec ::= "~" | \fI<number>\fR | "sel"
.fi .fi
Where "~" represents the floating area and \fI<number>\fR represents a column Where "~" represents the floating area and \fI<number>\fR represents a column
index, starting at one. index, starting at one.
@ -536,7 +531,6 @@ index, starting at one.
screen_spec ::= \fI<number>\fR screen_spec ::= \fI<number>\fR
.fi .fi
Where \fI<number>\fR representes the 0\-based Xinerama screen number. Where \fI<number>\fR representes the 0\-based Xinerama screen number.
.TP .TP
@ -547,7 +541,6 @@ Selects a client window.
frame ::= \fI<area>\fR \fI<index>\fR | \fI<area>\fR sel | client \fI<window-id>\fR frame ::= \fI<area>\fR \fI<index>\fR | \fI<area>\fR sel | client \fI<window-id>\fR
.fi .fi
Where \fI<index>\fR represents the nth frame of \fI<area>\fR or \fI<window\-id>\fR is Where \fI<index>\fR represents the nth frame of \fI<area>\fR or \fI<window\-id>\fR is
the X11 window id of the given client. the X11 window id of the given client.
@ -559,7 +552,6 @@ The amount to grow or nudge something.
amount ::= \fI<number>\fR | \fI<number>\fRpx amount ::= \fI<number>\fR | \fI<number>\fRpx
.fi .fi
If "px" is given, \fI<number>\fR is interperated as an exact pixel count. If "px" is given, \fI<number>\fR is interperated as an exact pixel count.
Otherwise, it's interperated as a "reasonable" amount, which is Otherwise, it's interperated as a "reasonable" amount, which is
usually either the height of a window's title bar, or its sizing usually either the height of a window's title bar, or its sizing
@ -624,6 +616,7 @@ The namespace directory to use if no address is provided.
wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1)
.P .P
@DOCDIR@/wmii.pdf @DOCDIR@/wmii.pdf
@DOCDIR@/FAQ
.P .P
\fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips \fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips

View File

@ -50,13 +50,11 @@ of the core window manager.
`<protocol>!<address>`. The default is of the form: `<protocol>!<address>`. The default is of the form:
``` unix!/tmp/ns.$USER.${DISPLAY%.0}/wmii ``` unix!/tmp/ns.$USER.${DISPLAY%.0}/wmii
which opens a unix socket per Plan 9 Port conventions. To which opens a unix socket per Plan 9 Port conventions. To
open a TCP socket, listening at port 4332 on the loopback open a TCP socket, listening at port 4332 on the loopback
interface, use: interface, use:
``` tcp!localhost!4332 ``` tcp!localhost!4332
$WMII_NAMESPACE is automatically set to this value. $WMII_NAMESPACE is automatically set to this value.
: -r <wmiirc> : -r <wmiirc>
@ -232,11 +230,9 @@ follows.
Rules have the form: Rules have the form:
``` /<regex>/ -> <width>[+<width>]* ``` /<regex>/ -> <width>[+<width>]*
Where, Where,
``` <width> := <percent of screen> | <pixels>px ``` <width> := <percent of screen> | <pixels>px
When a new column, <n>, is created on a view whose name When a new column, <n>, is created on a view whose name
matches <regex>, it is given the <n>th supplied <width>. matches <regex>, it is given the <n>th supplied <width>.
If there is no <n>th width, it is given 1/<ncol>th of the If there is no <n>th width, it is given 1/<ncol>th of the
@ -250,7 +246,6 @@ follows.
specified as: specified as:
``` /<regex>/ <key>=<value> ... ``` /<regex>/ <key>=<value> ...
where each <key> represents a command in the clients _ctl_ where each <key> represents a command in the clients _ctl_
file, and each <value> represents the value to assign to it. file, and each <value> represents the value to assign to it.
The rules are applied when the client is first started and The rules are applied when the client is first started and
@ -351,7 +346,9 @@ represents the currently selected client.
changes automatically whenever the window is changes automatically whenever the window is
moved between the floating and managed layers. moved between the floating and managed layers.
However, setting a value of _always_ or _never_ However, setting a value of _always_ or _never_
overrides this behavior. overrides this behavior. Additionally, dialogs,
menus, docks, and splash screens will always
float unless this value is set to _never_.
: fullscreen <on | off | toggle> : fullscreen <on | off | toggle>
Sets the client's fullscreen state. Sets the client's fullscreen state.
: group <group id> : group <group id>
@ -435,25 +432,21 @@ all of the clients with the given tag applied. The special
Selects a column or the floating area. Selects a column or the floating area.
``` area ::= <area_spec> | <screen_spec>:<area_spec> ``` area ::= <area_spec> | <screen_spec>:<area_spec>
When <screen_spec> is omitted and <area_spec> is not "sel", When <screen_spec> is omitted and <area_spec> is not "sel",
0 is assumed. "sel" by itself represents the selected client no 0 is assumed. "sel" by itself represents the selected client no
matter which screen it is on. matter which screen it is on.
``` area_spec ::= "~" | <number> | "sel" ``` area_spec ::= "~" | <number> | "sel"
Where "~" represents the floating area and <number> represents a column Where "~" represents the floating area and <number> represents a column
index, starting at one. index, starting at one.
``` screen_spec ::= <number> ``` screen_spec ::= <number>
Where <number> representes the 0-based Xinerama screen number. Where <number> representes the 0-based Xinerama screen number.
: frame : frame
Selects a client window. Selects a client window.
``` frame ::= <area> <index> | <area> sel | client <window-id> ``` frame ::= <area> <index> | <area> sel | client <window-id>
Where <index> represents the nth frame of <area> or <window-id> is Where <index> represents the nth frame of <area> or <window-id> is
the X11 window id of the given client. the X11 window id of the given client.
@ -461,7 +454,6 @@ all of the clients with the given tag applied. The special
The amount to grow or nudge something. The amount to grow or nudge something.
``` amount ::= <number> | <number>px ``` amount ::= <number> | <number>px
If "px" is given, <number> is interperated as an exact pixel count. If "px" is given, <number> is interperated as an exact pixel count.
Otherwise, it's interperated as a "reasonable" amount, which is Otherwise, it's interperated as a "reasonable" amount, which is
usually either the height of a window's title bar, or its sizing usually either the height of a window's title bar, or its sizing
@ -517,6 +509,7 @@ thus can be used in actions:
= SEE ALSO = = SEE ALSO =
wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) + wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) +
@DOCDIR@/wmii.pdf @DOCDIR@/wmii.pdf
@DOCDIR@/FAQ
[1] http://www.suckless.org/wiki/wmii/tips/9p_tips + [1] http://www.suckless.org/wiki/wmii/tips/9p_tips +
[2] @DOCDIR@/wmii.pdf [2] @DOCDIR@/wmii.pdf

View File

@ -1,26 +1,31 @@
VERS = hg$$(hg identify -n) VERS = hg$$(hg identify -n)
VERS = $$(test -n "$$WMII_HGVERSION" && echo $$WMII_HGVERSION || \ VERS = $$(test -n "$$WMII_HGVERSION" && echo $$WMII_HGVERSION || \
hg log -r $$(hg id 2>/dev/null | awk -F'[+ ]' '{print $$1}') --template 'hg{rev}' 2>/dev/null) echo -n "hg$$(hg id -n 2>/dev/null)")
WMII_HGVERSION = $(VERS) WMII_HGVERSION = $(VERS)
WMII_HGVERSION := $(shell echo $(VERS)) WMII_HGVERSION := $(shell echo $(VERS))
WMII_HGVERSION != echo $(VERS) WMII_HGVERSION != echo $(VERS)
VERSION = $(WMII_HGVERSION) VERSION = $(WMII_HGVERSION)
CONFVERSION = -hg
COPYRIGHT = ©2010 Kris Maglione COPYRIGHT = ©2010 Kris Maglione
CONFDIR = wmii-hg
LOCALCONF = ~/.$(CONFDIR)
GLOBALCONF = $(ETC)/$(CONFDIR)
.MAKE.EXPORTED += WMII_HGVERSION .MAKE.EXPORTED += WMII_HGVERSION
SUBMAKE_EXPORT = WMII_HGVERSION=$(WMII_HGVERSION) SUBMAKE_EXPORT = WMII_HGVERSION=$(WMII_HGVERSION)
LIBS9 = $(ROOT)/lib/libstuff.a $(ROOT)/lib/libregexp9.a $(ROOT)/lib/libbio.a $(ROOT)/lib/libfmt.a $(ROOT)/lib/libutf.a LIBS9 = $(ROOT)/lib/libstuff.a $(ROOT)/lib/libregexp9.a $(ROOT)/lib/libbio.a $(ROOT)/lib/libfmt.a $(ROOT)/lib/libutf.a
CFLAGS += '-DVERSION=\"$(VERSION)\"' '-DCOPYRIGHT=\"$(COPYRIGHT)\"' \ CFLAGS += '-DVERSION=\"$(VERSION)\"' '-DCOPYRIGHT=\"$(COPYRIGHT)\"' \
'-DCONFVERSION=\"$(CONFVERSION)\"' '-DCONFPREFIX=\"$(ETC)\"' '-DCONFDIR=\"$(CONFDIR)\"' '-DCONFPREFIX=\"$(ETC)\"' \
'-DLOCALCONF=\"$(LOCALCONF)\"' '-DGLOBALCONF=\"$(GLOBALCONF)\"'
FILTER = sed "s|@CONFPREFIX@|$(ETC)|g; \ FILTER = sed "s|@CONFPREFIX@|$(ETC)|g; \
s|@GLOBALCONF@|$(ETC)/wmii$(CONFVERSION)|g; \ s|@GLOBALCONF@|$(GLOBALCONF)|g; \
s|@LOCALCONF@|~/.wmii$(CONFVERSION)|g; \ s|@LOCALCONF@|$(LOCALCONF)|g; \
s|@CONFVERSION@|$(CONFVERSION)|g; \ s|@CONFDIR@|$(CONFDIR)|g; \
s|@DOCDIR@|$(DOC)|g; \ s|@DOCDIR@|$(DOC)|g; \
s|@ALTDOC@|$(DOC)/alternative_wmiircs|g; \ s|@ALTDOC@|$(DOC)/alternative_wmiircs|g; \
s|@EXAMPLES@|$(DOC)/examples|g; \ s|@EXAMPLES@|$(DOC)/examples|g; \

View File

@ -2,7 +2,7 @@ ROOT=..
include $(ROOT)/mk/hdr.mk include $(ROOT)/mk/hdr.mk
include $(ROOT)/mk/wmii.mk include $(ROOT)/mk/wmii.mk
BIN = $(ETC)/wmii$(CONFVERSION) BIN = $(GLOBALCONF)
TARG = wmiirc \ TARG = wmiirc \
welcome welcome

View File

@ -27,7 +27,7 @@ echo LD "$($bin/cleanname ${BASE}$outfile)"
[ -n "$noisycc" ] && echo $LD -o $outfile $ofiles $LDFLAGS $args [ -n "$noisycc" ] && echo $LD -o $outfile $ofiles $LDFLAGS $args
$LD -o $outfile $ofiles $LDFLAGS $args >$xtmp 2>&1 $LD -o $outfile $ofiles $LDFLAGS $args >$xtmp 2>&1
status=$? status=$?
[ $? -eq 0 ] || $LD -o $outfile $ofiles $LDFLAGS $args >&2 [ $status -eq 0 ] || $LD -o $outfile $ofiles $LDFLAGS $args >&2
sed 's/.*: In function `[^:]*: *//' $xtmp | egrep . | sed 's/.*: In function `[^:]*: *//' $xtmp | egrep . |
egrep -v 'is almost always misused|is dangerous, better use|in statically linked applications requires at runtime' egrep -v 'is almost always misused|is dangerous, better use|in statically linked applications requires at runtime'