From 398533dfd1f97273cb75ec9703a03bc93810f1f6 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Mon, 14 Jun 2010 10:30:23 -0400 Subject: [PATCH] Rearrange some things. --- .hgignore | 3 +- alternative_wmiircs/Makefile | 2 +- alternative_wmiircs/plan9port/Makefile | 2 +- alternative_wmiircs/python/Makefile | 2 +- alternative_wmiircs/python/pygmi/Makefile | 2 +- alternative_wmiircs/python/pyxp/Makefile | 2 +- alternative_wmiircs/ruby/Makefile | 2 +- cmd/Makefile | 14 ++--- cmd/click/Makefile | 18 ------ cmd/click/_util.c | 77 ----------------------- cmd/click/dat.h | 17 ----- cmd/click/fns.h | 1 - cmd/click/main.c | 60 ------------------ cmd/keyname/Makefile | 15 ----- cmd/menu/history.c | 2 +- cmd/menu/keys.c | 24 +------ cmd/wmii/fns.h | 4 +- cmd/wmii/key.c | 39 +++--------- cmd/wmii/main.c | 8 +-- cmd/x11/Makefile | 18 ++++++ cmd/x11/setfocus.c | 27 ++++++++ cmd/{keyname/main.c => x11/wikeyname.c} | 19 +----- cmd/x11/wiwarp.c | 34 ++++++++++ cmd/{ => x11}/wmii9menu.c | 0 debian/copyright | 18 +++--- doc/wmii.tex | 4 +- img/wmii.eps | 2 +- include/stuff/x.h | 2 + include/stuff/x11.h | 5 +- lib/libbio/bcat.c | 2 +- lib/libbio/brdstr.c | 2 +- lib/libbio/bvprint.c | 2 +- lib/libfmt/fltfmt.c | 32 +++++----- lib/libfmt/nan64.c | 2 +- lib/libfmt/runevsmprint.c | 4 +- lib/libfmt/vsmprint.c | 4 +- lib/libregexp/regcomp.c | 2 +- lib/libregexp/regsub.c | 2 +- lib/libregexp/rregsub.c | 2 +- lib/libstuff/event/clientmessage.c | 2 +- lib/libstuff/event/destroynotify.c | 2 +- lib/libstuff/event/enternotify.c | 2 +- lib/libstuff/event/expose.c | 2 +- lib/libstuff/event/focusin.c | 2 +- lib/libstuff/event/focusout.c | 2 +- lib/libstuff/event/leavenotify.c | 2 +- lib/libstuff/event/propertynotify.c | 2 +- lib/libstuff/event/selection.c | 2 +- lib/libstuff/event/selectionclear.c | 2 +- lib/libstuff/event/selectionrequest.c | 2 +- lib/libstuff/fmt/fmtbufinit.c | 21 ------- lib/libstuff/map.c | 14 ++--- lib/libstuff/printevent.c | 12 ++-- lib/libstuff/util/estrndup.c | 2 +- lib/libstuff/util/getbase.c | 2 +- lib/libstuff/util/strcasestr.c | 2 +- lib/libstuff/util/utflcpy.c | 2 +- lib/libstuff/x11/convpts.c | 2 +- lib/libstuff/x11/drawing/drawpoly.c | 2 +- lib/libstuff/x11/errors.c | 3 +- lib/libstuff/x11/initdisplay.c | 6 +- lib/libstuff/x11/keys/parsekey.c | 42 ++++++++++++- lib/libstuff/x11/mouse/grabpointer.c | 2 +- lib/libstuff/x11/mouse/pointerscreen.c | 2 +- lib/libstuff/x11/mouse/querypointer.c | 2 +- lib/libstuff/x11/windows/findwin.c | 2 +- lib/libstuff/x11/xatom.c | 2 +- lib/libutf/runestrdup.c | 4 +- lib/libwmii_hack/x11.c | 2 +- man/wmii.1 | 15 ++--- man/wmii.man1 | 17 ++--- mk/lib.mk | 2 +- mk/so.mk | 2 +- mk/wmii.mk | 17 +++-- rc/Makefile | 2 +- rc/sh.wmii | 4 +- test/Makefile | 2 +- test/event.b | 4 +- util/genconfig | 4 +- util/link | 4 +- 80 files changed, 267 insertions(+), 431 deletions(-) delete mode 100644 cmd/click/Makefile delete mode 100644 cmd/click/_util.c delete mode 100644 cmd/click/dat.h delete mode 100644 cmd/click/fns.h delete mode 100644 cmd/click/main.c delete mode 100644 cmd/keyname/Makefile create mode 100644 cmd/x11/Makefile create mode 100644 cmd/x11/setfocus.c rename cmd/{keyname/main.c => x11/wikeyname.c} (79%) create mode 100644 cmd/x11/wiwarp.c rename cmd/{ => x11}/wmii9menu.c (100%) delete mode 100644 lib/libstuff/fmt/fmtbufinit.c diff --git a/.hgignore b/.hgignore index c6079afb..b7482954 100644 --- a/.hgignore +++ b/.hgignore @@ -4,7 +4,8 @@ syntax: regexp \.([oa]|out|o_pic|so|pyc|pyo|diff)$ \.(diff|orig|rej|bak)$ \.(aux|idx|ilg|ind|log|toc)$ -^cmd/(stfo|osd|wiwarp|setfocus)(/|$) +^cmd/osd(/|$) +^cmd/x11/(stfo|wiclick)\. ^(pkg|src)/ ^doxy /bak/ diff --git a/alternative_wmiircs/Makefile b/alternative_wmiircs/Makefile index 066739c1..3b9c3709 100644 --- a/alternative_wmiircs/Makefile +++ b/alternative_wmiircs/Makefile @@ -2,7 +2,7 @@ ROOT=.. include $(ROOT)/mk/hdr.mk include $(ROOT)/mk/wmii.mk -BIN = $(ETC)/wmii$(CONFVERSION) +BIN = $(GLOBALCONF) DIRS = python \ plan9port \ ruby diff --git a/alternative_wmiircs/plan9port/Makefile b/alternative_wmiircs/plan9port/Makefile index e582ccf0..42914752 100644 --- a/alternative_wmiircs/plan9port/Makefile +++ b/alternative_wmiircs/plan9port/Makefile @@ -5,5 +5,5 @@ include $(ROOT)/mk/wmii.mk DOCS = README EXECS = wmiirc -DIR = $(ETC)/wmii$(CONFVERSION)/plan9port +DIR = $(GLOBALCONF)/plan9port DOCDIR = $(DOC)/alternative_wmiircs/plan9port diff --git a/alternative_wmiircs/python/Makefile b/alternative_wmiircs/python/Makefile index 6c2a9ab1..9ced503d 100644 --- a/alternative_wmiircs/python/Makefile +++ b/alternative_wmiircs/python/Makefile @@ -8,7 +8,7 @@ TEXT = wmiirc.py DIRS = pygmi \ pyxp -DIR = $(ETC)/wmii$(CONFVERSION)/python +DIR = $(GLOBALCONF)/python DOCDIR = $(DOC)/alternative_wmiircs/python include $(ROOT)/mk/dir.mk diff --git a/alternative_wmiircs/python/pygmi/Makefile b/alternative_wmiircs/python/pygmi/Makefile index 24bfa698..b8ad7fb9 100644 --- a/alternative_wmiircs/python/pygmi/Makefile +++ b/alternative_wmiircs/python/pygmi/Makefile @@ -9,4 +9,4 @@ BINARY = __init__.py \ monitor.py \ util.py -DIR = $(ETC)/wmii$(CONFVERSION)/python/pygmi +DIR = $(GLOBALCONF)/python/pygmi diff --git a/alternative_wmiircs/python/pyxp/Makefile b/alternative_wmiircs/python/pyxp/Makefile index ad2edeb5..6a860939 100644 --- a/alternative_wmiircs/python/pyxp/Makefile +++ b/alternative_wmiircs/python/pyxp/Makefile @@ -12,4 +12,4 @@ BINARY = __init__.py \ mux.py \ types.py -DIR = $(ETC)/wmii$(CONFVERSION)/python/pyxp +DIR = $(GLOBALCONF)/python/pyxp diff --git a/alternative_wmiircs/ruby/Makefile b/alternative_wmiircs/ruby/Makefile index 5d8fd655..353f5c14 100644 --- a/alternative_wmiircs/ruby/Makefile +++ b/alternative_wmiircs/ruby/Makefile @@ -9,5 +9,5 @@ EXECS = wmiirc TEXT = config.rb \ config.yaml -DIR = $(ETC)/wmii$(CONFVERSION)/ruby +DIR = $(GLOBALCONF)/ruby DOCDIR = $(DOC)/alternative_wmiircs/ruby diff --git a/cmd/Makefile b/cmd/Makefile index 16d9f93e..7df1ccbe 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -4,24 +4,18 @@ include $(ROOT)/mk/wmii.mk wmiir.c: $(ROOT)/mk/wmii.mk -DIRS = wmii \ - keyname \ - menu \ +DIRS = menu \ strut \ - tray + tray \ + wmii \ + x11 TARG = wihack \ wmii.rc \ wmii.sh \ - wmii9menu \ wmiir LIBS += $(LIBS9) $(LIBIXP) -CFLAGS += $(INCX11) include $(ROOT)/mk/many.mk include $(ROOT)/mk/dir.mk -O9MENU=wmii9menu.o $(ROOT)/lib/libstuff.a $(LIBIXP) -wmii9menu.out: $(O9MENU) - $(LINK) $@ $(O9MENU) $$(pkg-config --libs $(X11PACKAGES)) -lXext - diff --git a/cmd/click/Makefile b/cmd/click/Makefile deleted file mode 100644 index 7615121a..00000000 --- a/cmd/click/Makefile +++ /dev/null @@ -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 - diff --git a/cmd/click/_util.c b/cmd/click/_util.c deleted file mode 100644 index 755f03d5..00000000 --- a/cmd/click/_util.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright ©2008-2010 Kris Maglione - * See LICENSE file for license details. - */ -#include "dat.h" -#include -#include -#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); -} - diff --git a/cmd/click/dat.h b/cmd/click/dat.h deleted file mode 100644 index 37093d41..00000000 --- a/cmd/click/dat.h +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#define BLOCK(x) do { x; }while(0) - -#ifndef EXTERN -# define EXTERN extern -#endif - -EXTERN Window win; - diff --git a/cmd/click/fns.h b/cmd/click/fns.h deleted file mode 100644 index 8b137891..00000000 --- a/cmd/click/fns.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/cmd/click/main.c b/cmd/click/main.c deleted file mode 100644 index 345f53eb..00000000 --- a/cmd/click/main.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright ©2006-2010 Kris Maglione - * See LICENSE file for license details. - */ -#define EXTERN -#include "dat.h" -#include -#include -#include -#include -#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; -} - diff --git a/cmd/keyname/Makefile b/cmd/keyname/Makefile deleted file mode 100644 index b9061255..00000000 --- a/cmd/keyname/Makefile +++ /dev/null @@ -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 - diff --git a/cmd/menu/history.c b/cmd/menu/history.c index 38b0598f..aab7c600 100644 --- a/cmd/menu/history.c +++ b/cmd/menu/history.c @@ -8,7 +8,7 @@ static void splice(Item *i) { - if(i->next != nil) + if(i->next != nil) i->next->prev = i->prev; if(i->prev != nil) i->prev->next = i->next; diff --git a/cmd/menu/keys.c b/cmd/menu/keys.c index e99f0612..697c7af7 100644 --- a/cmd/menu/keys.c +++ b/cmd/menu/keys.c @@ -15,28 +15,6 @@ struct Key { 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. */ @@ -50,7 +28,7 @@ parse_keys(char *spec) { int i, nlines, nwords; if(!numlock) - init_numlock(); + numlock = numlockmask(); nlines = tokenize(lines, nelem(lines), spec, '\n'); for(i=0; i < nlines; i++) { diff --git a/cmd/wmii/fns.h b/cmd/wmii/fns.h index 2c64eab3..7f5a2ba6 100644 --- a/cmd/wmii/fns.h +++ b/cmd/wmii/fns.h @@ -10,8 +10,8 @@ # pragma varargck argpos event 1 # pragma varargck argpos warning 1 # -# pragma varargck type "a" Area* -# pragma varargck type "C" Client* +# pragma varargck type "a" Area* +# pragma varargck type "C" Client* # pragma varargck type "r" void #endif diff --git a/cmd/wmii/key.c b/cmd/wmii/key.c index 9598972c..7d46dbc2 100644 --- a/cmd/wmii/key.c +++ b/cmd/wmii/key.c @@ -6,30 +6,6 @@ #include #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 freekey(Key *k) { Key *n; @@ -43,7 +19,7 @@ freekey(Key *k) { static void _grab(XWindow w, int keycode, uint mod) { XGrabKey(display, keycode, mod, w, - true, GrabModeAsync, GrabModeAsync); + true, GrabModeAsync, GrabModeAsync); } static void @@ -66,12 +42,12 @@ ungrabkey(Key *k) { } } -static Key * +static Key* name2key(const char *name) { Key *k; for(k=key; k; k=k->lnext) - if(!strncmp(k->name, name, sizeof k->name)) + if(!strcmp(k->name, name)) return k; return nil; } @@ -218,22 +194,21 @@ update_keys(void) { Key *k; char *l, *p; - init_lock_keys(); + numlock_mask = numlockmask(); + valid_mask = 0xff & ~(numlock_mask | LockMask); while((k = key)) { key = key->lnext; ungrabkey(k); freekey(k); } - for(l = p = def.keys; p && *p;) { + for(l = p = def.keys; p && *p; p++) { if(*p == '\n') { *p = 0; if((k = getkey(l))) grabkey(k); *p = '\n'; - l = ++p; + l = p + 1; } - else - p++; } if(l < p && strlen(l)) { if((k = getkey(l))) diff --git a/cmd/wmii/main.c b/cmd/wmii/main.c index c6548f6c..9ad8cf42 100644 --- a/cmd/wmii/main.c +++ b/cmd/wmii/main.c @@ -92,9 +92,9 @@ init_environment(void) { setenv("WMII_ADDRESS", address, true); else address = smprint("unix!%s/wmii", ns_path); - setenv("WMII_CONFPATH", sxprint("%s/.wmii%s:%s/wmii%s", - getenv("HOME"), CONFVERSION, - CONFPREFIX, CONFVERSION), true); + setenv("WMII_CONFPATH", + sxprint("%s/.%s:%s", getenv("HOME"), CONFDIR, GLOBALCONF), + true); } static void @@ -398,7 +398,7 @@ main(int argc, char *argv[]) { init_traps(); init_cursors(); - init_lock_keys(); + update_keys(); ewmh_init(); xext_init(); diff --git a/cmd/x11/Makefile b/cmd/x11/Makefile new file mode 100644 index 00000000..5dd7fa38 --- /dev/null +++ b/cmd/x11/Makefile @@ -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 + diff --git a/cmd/x11/setfocus.c b/cmd/x11/setfocus.c new file mode 100644 index 00000000..4b580e1b --- /dev/null +++ b/cmd/x11/setfocus.c @@ -0,0 +1,27 @@ +/* Copyight 2008 Kris Maglione + * See LICENSE file for license details. + */ +#include +#include +#include +#include +#include +#include +#include + +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); +} + diff --git a/cmd/keyname/main.c b/cmd/x11/wikeyname.c similarity index 79% rename from cmd/keyname/main.c rename to cmd/x11/wikeyname.c index 55c468fd..2caa488e 100644 --- a/cmd/keyname/main.c +++ b/cmd/x11/wikeyname.c @@ -30,6 +30,7 @@ main(int argc, char *argv[]) { if(argc) usage(); + fmtinstall('K', fmtkey); initdisplay(); selectinput(&scr.root, KeyPressMask|KeyReleaseMask); @@ -46,25 +47,11 @@ main(int argc, char *argv[]) { static bool 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++; - 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); - keyname = fmtstrflush(&f); + keyname = smprint("%K", ev); return false; } diff --git a/cmd/x11/wiwarp.c b/cmd/x11/wiwarp.c new file mode 100644 index 00000000..88e0c412 --- /dev/null +++ b/cmd/x11/wiwarp.c @@ -0,0 +1,34 @@ +/* Copyight 2008 Kris Maglione + * See LICENSE file for license details. + */ +#include +#include +#include +#include +#include +#include +#include + +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); +} + diff --git a/cmd/wmii9menu.c b/cmd/x11/wmii9menu.c similarity index 100% rename from cmd/wmii9menu.c rename to cmd/x11/wmii9menu.c diff --git a/debian/copyright b/debian/copyright index 48a96574..06200982 100644 --- a/debian/copyright +++ b/debian/copyright @@ -11,18 +11,18 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Original debian packaging is (C) 2005-2007, Daniel Baumann diff --git a/doc/wmii.tex b/doc/wmii.tex index a0b579df..4232e80b 100644 --- a/doc/wmii.tex +++ b/doc/wmii.tex @@ -920,7 +920,7 @@ client. The files in these directories are: \item[label] The client's window title. May be written to change the client's title. \index{filesystem!/client/*/@\clientlabel!label} - \item[tags] + \item[tags] \index{filesystem!/client/*/@\clientlabel!tags} The client's tags. Tag names are separated by |+| signs. Tags beginning and ending with |/| are treated as @@ -1006,7 +1006,7 @@ client. The |sel| tag is treated similarly elsewhere. The files in these directories are: \begin{description} - \item[ctl] + \item[ctl] The view's control file. The properties are: \index{filesystem!/tag/*/@\taglabel!ctl|(} \begin{description} diff --git a/img/wmii.eps b/img/wmii.eps index 727dd52b..f06f624e 100644 --- a/img/wmii.eps +++ b/img/wmii.eps @@ -1,5 +1,5 @@ %!PS-Adobe-2.0 EPSF-1.2 -%%BoundingBox: -1 0 51 27 +%%BoundingBox: -1 0 51 27 %%Creator: MetaPost %%CreationDate: 2007.02.27:1944 %%Pages: 1 diff --git a/include/stuff/x.h b/include/stuff/x.h index 8f57e0a7..965bd0af 100644 --- a/include/stuff/x.h +++ b/include/stuff/x.h @@ -18,6 +18,8 @@ extern void init_screens(void); /* printevent.c */ int fmtevent(Fmt*); +int fmtkey(Fmt*); + /* xext.c */ void randr_event(XEvent*); bool render_argb_p(Visual*); diff --git a/include/stuff/x11.h b/include/stuff/x11.h index cc5d6110..3f1bb779 100644 --- a/include/stuff/x11.h +++ b/include/stuff/x11.h @@ -201,7 +201,7 @@ struct Screen { # pragma varargck type "A" Atom # pragma varargck type "P" Point # pragma varargck type "R" Rectangle -# pragma varargck type "W" Window* +# pragma varargck type "W" Window* #endif Display *display; @@ -236,10 +236,10 @@ void changeprop_string(Window*, const char*, const char*); void changeprop_textlist(Window*, const char*, const char*, char*[]); void changeprop_ulong(Window*, const char*, const char*, ulong[], 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 copyimage(Image*, Rectangle, Image*, Point); 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); void delproperty(Window*, const char*); void destroywindow(Window*); @@ -272,6 +272,7 @@ Font* loadfont(const char*); void lowerwin(Window*); int mapwin(Window*); void movewin(Window*, Point); +int numlockmask(void); bool parsecolor(const char *name, Color*); bool parsekey(char*, int*, char**); ulong pixelvalue(Color); diff --git a/lib/libbio/bcat.c b/lib/libbio/bcat.c index 7c9b39e9..cc8e53d8 100644 --- a/lib/libbio/bcat.c +++ b/lib/libbio/bcat.c @@ -14,7 +14,7 @@ bcat(Biobuf *b, char *name) fprint(2, "writing during %s: %r\n", name); } if(n < 0) - fprint(2, "reading %s: %r\n", name); + fprint(2, "reading %s: %r\n", name); } int diff --git a/lib/libbio/brdstr.c b/lib/libbio/brdstr.c index ce720c25..6d80ea35 100644 --- a/lib/libbio/brdstr.c +++ b/lib/libbio/brdstr.c @@ -100,7 +100,7 @@ Brdstr(Biobuf *bp, int delim, int nulldelim) } ip += j; } - + /* * full buffer without finding; add to user string and continue */ diff --git a/lib/libbio/bvprint.c b/lib/libbio/bvprint.c index a65da64b..efaf2ee5 100644 --- a/lib/libbio/bvprint.c +++ b/lib/libbio/bvprint.c @@ -1,7 +1,7 @@ #include "plan9.h" #include -static int +static int fmtBflush(Fmt *f) { Biobuf *bp; diff --git a/lib/libfmt/fltfmt.c b/lib/libfmt/fltfmt.c index e600712b..b1e8c7b3 100644 --- a/lib/libfmt/fltfmt.c +++ b/lib/libfmt/fltfmt.c @@ -35,22 +35,22 @@ enum */ static double pows10[] = { - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, - 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, - 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, - 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, - 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, - 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, - 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, - 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79, - 1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89, - 1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99, - 1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109, - 1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119, - 1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129, - 1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139, - 1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149, - 1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159, + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, + 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, + 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, + 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, + 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, + 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, + 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79, + 1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89, + 1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99, + 1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109, + 1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119, + 1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129, + 1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139, + 1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149, + 1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159, }; #define pow10(x) fmtpow10(x) diff --git a/lib/libfmt/nan64.c b/lib/libfmt/nan64.c index 6e355a20..d7946b75 100644 --- a/lib/libfmt/nan64.c +++ b/lib/libfmt/nan64.c @@ -1,6 +1,6 @@ /* * 64-bit IEEE not-a-number routines. - * This is big/little-endian portable assuming that + * This is big/little-endian portable assuming that * the 64-bit doubles and 64-bit integers have the * same byte ordering. */ diff --git a/lib/libfmt/runevsmprint.c b/lib/libfmt/runevsmprint.c index 295f73d3..002d35e0 100644 --- a/lib/libfmt/runevsmprint.c +++ b/lib/libfmt/runevsmprint.c @@ -12,9 +12,9 @@ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* - * Plan 9 port version must include libc.h in order to + * Plan 9 port version must include libc.h in order to * get Plan 9 debugging malloc, which sometimes returns - * different pointers than the standard malloc. + * different pointers than the standard malloc. */ #include #include diff --git a/lib/libfmt/vsmprint.c b/lib/libfmt/vsmprint.c index a2855651..2d9dd6f9 100644 --- a/lib/libfmt/vsmprint.c +++ b/lib/libfmt/vsmprint.c @@ -12,9 +12,9 @@ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ /* - * Plan 9 port version must include libc.h in order to + * Plan 9 port version must include libc.h in order to * get Plan 9 debugging malloc, which sometimes returns - * different pointers than the standard malloc. + * different pointers than the standard malloc. */ #include #include diff --git a/lib/libregexp/regcomp.c b/lib/libregexp/regcomp.c index 9ab3795d..91b56acd 100644 --- a/lib/libregexp/regcomp.c +++ b/lib/libregexp/regcomp.c @@ -110,7 +110,7 @@ regerr2(char *s, int c) while(*s) *cp++ = *s++; *cp++ = c; - *cp = '\0'; + *cp = '\0'; rcerror(buf); } diff --git a/lib/libregexp/regsub.c b/lib/libregexp/regsub.c index bd6d1c19..1cd203b3 100644 --- a/lib/libregexp/regsub.c +++ b/lib/libregexp/regsub.c @@ -46,7 +46,7 @@ regsub(char *sp, /* source string */ *dp++ = *sp; break; } - }else if(*sp == '&'){ + }else if(*sp == '&'){ if(mp[0].s.sp != 0 && mp!=0 && ms>0) if(mp[0].s.sp != 0) for(ssp = mp[0].s.sp; diff --git a/lib/libregexp/rregsub.c b/lib/libregexp/rregsub.c index 6e53d9b6..f3bf48a0 100644 --- a/lib/libregexp/rregsub.c +++ b/lib/libregexp/rregsub.c @@ -46,7 +46,7 @@ rregsub(Rune *sp, /* source string */ *dp++ = *sp; break; } - }else if(*sp == '&'){ + }else if(*sp == '&'){ if(mp[0].s.rsp != 0 && mp!=0 && ms>0) if(mp[0].s.rsp != 0) for(ssp = mp[0].s.rsp; diff --git a/lib/libstuff/event/clientmessage.c b/lib/libstuff/event/clientmessage.c index 2ad8aeb7..9a63e7c5 100644 --- a/lib/libstuff/event/clientmessage.c +++ b/lib/libstuff/event/clientmessage.c @@ -7,6 +7,6 @@ void event_clientmessage(XClientMessageEvent *ev) { Window *w; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, message, ev); } diff --git a/lib/libstuff/event/destroynotify.c b/lib/libstuff/event/destroynotify.c index 36effdf3..54e06c61 100644 --- a/lib/libstuff/event/destroynotify.c +++ b/lib/libstuff/event/destroynotify.c @@ -7,6 +7,6 @@ void event_destroynotify(XDestroyWindowEvent *ev) { Window *w; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, destroy, ev); } diff --git a/lib/libstuff/event/enternotify.c b/lib/libstuff/event/enternotify.c index 07ff1650..fdc4704c 100644 --- a/lib/libstuff/event/enternotify.c +++ b/lib/libstuff/event/enternotify.c @@ -12,6 +12,6 @@ event_enternotify(XCrossingEvent *ev) { if(ev->mode != NotifyNormal) return; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, enter, ev); } diff --git a/lib/libstuff/event/expose.c b/lib/libstuff/event/expose.c index 2e3e5689..028db117 100644 --- a/lib/libstuff/event/expose.c +++ b/lib/libstuff/event/expose.c @@ -7,6 +7,6 @@ void event_expose(XExposeEvent *ev) { Window *w; - if(ev->count == 0 && (w = findwin(ev->window))) + if(ev->count == 0 && (w = findwin(ev->window))) event_handle(w, expose, ev); } diff --git a/lib/libstuff/event/focusin.c b/lib/libstuff/event/focusin.c index 3c3b2b88..95f0bed6 100644 --- a/lib/libstuff/event/focusin.c +++ b/lib/libstuff/event/focusin.c @@ -22,6 +22,6 @@ event_focusin(XFocusChangeEvent *ev) { if((ev->mode == NotifyWhileGrabbed)) return; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, focusin, ev); } diff --git a/lib/libstuff/event/focusout.c b/lib/libstuff/event/focusout.c index ade1362c..e5ac2568 100644 --- a/lib/libstuff/event/focusout.c +++ b/lib/libstuff/event/focusout.c @@ -14,6 +14,6 @@ event_focusout(XFocusChangeEvent *ev) { ||(ev->detail == NotifyAncestor))) return; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, focusout, ev); } diff --git a/lib/libstuff/event/leavenotify.c b/lib/libstuff/event/leavenotify.c index 81b7fc12..7f106938 100644 --- a/lib/libstuff/event/leavenotify.c +++ b/lib/libstuff/event/leavenotify.c @@ -9,6 +9,6 @@ event_leavenotify(XCrossingEvent *ev) { if(!ev->send_event) event_xtime = ev->time; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, leave, ev); } diff --git a/lib/libstuff/event/propertynotify.c b/lib/libstuff/event/propertynotify.c index 2e05621e..50e6135a 100644 --- a/lib/libstuff/event/propertynotify.c +++ b/lib/libstuff/event/propertynotify.c @@ -9,6 +9,6 @@ event_propertynotify(XPropertyEvent *ev) { if(!ev->send_event) event_xtime = ev->time; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, property, ev); } diff --git a/lib/libstuff/event/selection.c b/lib/libstuff/event/selection.c index 992b31c6..9b9e6ced 100644 --- a/lib/libstuff/event/selection.c +++ b/lib/libstuff/event/selection.c @@ -9,7 +9,7 @@ event_selection(XSelectionEvent *ev) { if(!ev->send_event) event_xtime = ev->time; - if((w = findwin(ev->requestor))) + if((w = findwin(ev->requestor))) event_handle(w, selection, ev); } diff --git a/lib/libstuff/event/selectionclear.c b/lib/libstuff/event/selectionclear.c index 5a8848af..5b9b2175 100644 --- a/lib/libstuff/event/selectionclear.c +++ b/lib/libstuff/event/selectionclear.c @@ -9,6 +9,6 @@ event_selectionclear(XSelectionClearEvent *ev) { if(!ev->send_event) event_xtime = ev->time; - if((w = findwin(ev->window))) + if((w = findwin(ev->window))) event_handle(w, selectionclear, ev); } diff --git a/lib/libstuff/event/selectionrequest.c b/lib/libstuff/event/selectionrequest.c index c91ee1d7..6e98df8c 100644 --- a/lib/libstuff/event/selectionrequest.c +++ b/lib/libstuff/event/selectionrequest.c @@ -9,7 +9,7 @@ event_selectionrequest(XSelectionRequestEvent *ev) { if(!ev->send_event) event_xtime = ev->time; - if((w = findwin(ev->owner))) + if((w = findwin(ev->owner))) event_handle(w, selectionrequest, ev); } diff --git a/lib/libstuff/fmt/fmtbufinit.c b/lib/libstuff/fmt/fmtbufinit.c deleted file mode 100644 index 00cfbb67..00000000 --- a/lib/libstuff/fmt/fmtbufinit.c +++ /dev/null @@ -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; -} diff --git a/lib/libstuff/map.c b/lib/libstuff/map.c index e0c63dbe..65182f70 100644 --- a/lib/libstuff/map.c +++ b/lib/libstuff/map.c @@ -19,7 +19,7 @@ MapEnt *NM; static ulong hash(const char *str) { ulong h; - + h = 5381; while (*str != '\0') { h += h << 5; /* h *= 33 */ @@ -31,7 +31,7 @@ hash(const char *str) { static void insert(Map *m, MapEnt **e, ulong val, const char *key) { MapEnt *te; - + m->nmemb++; te = emallocz(sizeof *te); te->hash = val; @@ -61,7 +61,7 @@ hash_getp(Map *map, const char *str, int create) { MapEnt **e; ulong h; int cmp; - + h = hash(str); e = map_getp(map, h, create); if(*e && (*e)->key == nil) @@ -81,7 +81,7 @@ hash_getp(Map *map, const char *str, int create) { void** map_get(Map *map, ulong val, bool create) { MapEnt *e; - + e = *map_getp(map, val, create); return e ? &e->val : nil; } @@ -89,7 +89,7 @@ map_get(Map *map, ulong val, bool create) { void** hash_get(Map *map, const char *str, bool create) { MapEnt *e; - + e = *hash_getp(map, str, create); return e ? &e->val : nil; } @@ -98,7 +98,7 @@ void* map_rm(Map *map, ulong val) { MapEnt **e, *te; void *ret; - + ret = nil; e = map_getp(map, val, 0); if(*e) { @@ -115,7 +115,7 @@ void* hash_rm(Map *map, const char *str) { MapEnt **e, *te; void *ret; - + ret = nil; e = hash_getp(map, str, 0); if(*e) { diff --git a/lib/libstuff/printevent.c b/lib/libstuff/printevent.c index 60b040db..ac1a98d3 100644 --- a/lib/libstuff/printevent.c +++ b/lib/libstuff/printevent.c @@ -10,11 +10,11 @@ * readable form, Part01/01 Message-ID: <1935@wyse.wyse.com> Date: 22 Dec 88 * 19:28:25 GMT Organization: Wyse Technology, San Jose Lines: 1093 Approved: * mikew@wyse.com - * + * * Submitted-by: richsun!darkstar!ken Posting-number: Volume 2, Issue 56 * Archive-name: showevent/part01 - * - * + * + * * There are times during debugging when it would be real useful to be able to * print the fields of an event in a human readable form. Too many times I * found myself scrounging around in section 8 of the Xlib manual looking for @@ -29,13 +29,13 @@ * functions are not complicated, in fact, they are mind-numbingly boring - * but that's just the point nobody wants to spend the time writing functions * like this, they just want to have them when they need them. - * + * * A simple, sample program is included which does little else but to * demonstrate the use of these two functions. These functions have saved me * many an hour during debugging and I hope you find some benefit to these. * If you have any comments, suggestions, improvements, or if you find any * blithering errors you can get it touch with me at the following location: - * + * * ken@richsun.UUCP */ @@ -931,7 +931,7 @@ struct Handler { int (*fn)(Fmt*, XEvent*); }; -int +int fmtevent(Fmt *fmt) { XEvent *e; XAnyEvent *ev; diff --git a/lib/libstuff/util/estrndup.c b/lib/libstuff/util/estrndup.c index 2a384fe7..a98ab1a8 100644 --- a/lib/libstuff/util/estrndup.c +++ b/lib/libstuff/util/estrndup.c @@ -6,7 +6,7 @@ char* estrndup(const char *str, uint len) { char *ret; - + len = min(len, strlen(str)); ret = emalloc(len + 1); memcpy(ret, str, len); diff --git a/lib/libstuff/util/getbase.c b/lib/libstuff/util/getbase.c index 3a245e10..5ffd7849 100644 --- a/lib/libstuff/util/getbase.c +++ b/lib/libstuff/util/getbase.c @@ -5,7 +5,7 @@ #include #include -#define strbcmp(str, const) (strncmp((str), (const), sizeof(const)-1)) +#define strbcmp(str, const) (strncmp((str), (const), sizeof(const)-1)) int getbase(const char **s, long *sign) { const char *p; diff --git a/lib/libstuff/util/strcasestr.c b/lib/libstuff/util/strcasestr.c index 9e80a1eb..c1a00a1a 100644 --- a/lib/libstuff/util/strcasestr.c +++ b/lib/libstuff/util/strcasestr.c @@ -22,4 +22,4 @@ strcasestr(const char *dst, const char *src) { } } return nil; -} +} diff --git a/lib/libstuff/util/utflcpy.c b/lib/libstuff/util/utflcpy.c index ae67e79e..bd6e7bda 100644 --- a/lib/libstuff/util/utflcpy.c +++ b/lib/libstuff/util/utflcpy.c @@ -5,7 +5,7 @@ int utflcpy(char *to, const char *from, int l) { char *p; - + p = utfecpy(to, to+l, from); return p-to; } diff --git a/lib/libstuff/x11/convpts.c b/lib/libstuff/x11/convpts.c index 244769d1..d14f2582 100644 --- a/lib/libstuff/x11/convpts.c +++ b/lib/libstuff/x11/convpts.c @@ -7,7 +7,7 @@ XPoint* convpts(Point *pt, int np) { XPoint *rp; int i; - + rp = emalloc(np * sizeof *rp); for(i = 0; i < np; i++) { rp[i].x = pt[i].x; diff --git a/lib/libstuff/x11/drawing/drawpoly.c b/lib/libstuff/x11/drawing/drawpoly.c index e50e6d84..b9dc21ae 100644 --- a/lib/libstuff/x11/drawing/drawpoly.c +++ b/lib/libstuff/x11/drawing/drawpoly.c @@ -6,7 +6,7 @@ void drawpoly(Image *dst, Point *pt, int np, int cap, int w, Color col) { XPoint *xp; - + xp = convpts(pt, np); XSetLineAttributes(display, dst->gc, w, LineSolid, cap, JoinMiter); setgccol(dst, col); diff --git a/lib/libstuff/x11/errors.c b/lib/libstuff/x11/errors.c index 3d0621ba..763e3aa8 100644 --- a/lib/libstuff/x11/errors.c +++ b/lib/libstuff/x11/errors.c @@ -32,11 +32,10 @@ errorhandler(Display *dpy, XErrorEvent *error) { int traperrors(bool enable) { - + sync(); _trap_errors = enable; if (enable) nerrors = 0; return nerrors; - } diff --git a/lib/libstuff/x11/initdisplay.c b/lib/libstuff/x11/initdisplay.c index d4c4d9f8..36a8d627 100644 --- a/lib/libstuff/x11/initdisplay.c +++ b/lib/libstuff/x11/initdisplay.c @@ -55,16 +55,16 @@ initdisplay(void) { scr.visual32 = DefaultVisual(display, scr.screen); scr.gc = DefaultGC(display, scr.screen); scr.depth = DefaultDepth(display, scr.screen); - + scr.white = WhitePixel(display, scr.screen); scr.black = BlackPixel(display, scr.screen); - + scr.root.xid = RootWindow(display, scr.screen); scr.root.r = Rect(0, 0, DisplayWidth(display, scr.screen), DisplayHeight(display, scr.screen)); scr.rect = scr.root.r; - + scr.root.parent = &scr.root; windowmap.bucket = wbucket; diff --git a/lib/libstuff/x11/keys/parsekey.c b/lib/libstuff/x11/keys/parsekey.c index 7844c3d3..07619faa 100644 --- a/lib/libstuff/x11/keys/parsekey.c +++ b/lib/libstuff/x11/keys/parsekey.c @@ -3,8 +3,6 @@ */ #include "../x11.h" -typedef struct KMask KMask; - char *modkey_names[] = { "Shift", "", @@ -41,3 +39,43 @@ parsekey(char *str, int *mask, char **key) { else 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); +} + diff --git a/lib/libstuff/x11/mouse/grabpointer.c b/lib/libstuff/x11/mouse/grabpointer.c index fffb3590..e4a38d71 100644 --- a/lib/libstuff/x11/mouse/grabpointer.c +++ b/lib/libstuff/x11/mouse/grabpointer.c @@ -6,7 +6,7 @@ int grabpointer(Window *w, Window *confine, Cursor cur, int mask) { XWindow cw; - + cw = None; if(confine) cw = confine->xid; diff --git a/lib/libstuff/x11/mouse/pointerscreen.c b/lib/libstuff/x11/mouse/pointerscreen.c index a09e0de8..c1ffd5fa 100644 --- a/lib/libstuff/x11/mouse/pointerscreen.c +++ b/lib/libstuff/x11/mouse/pointerscreen.c @@ -9,7 +9,7 @@ pointerscreen(void) { Point pt; uint ui; int i; - + return XQueryPointer(display, scr.root.xid, &win, &win, &i, &i, &pt.x, &pt.y, &ui); } diff --git a/lib/libstuff/x11/mouse/querypointer.c b/lib/libstuff/x11/mouse/querypointer.c index d1b5ada7..c322ebc6 100644 --- a/lib/libstuff/x11/mouse/querypointer.c +++ b/lib/libstuff/x11/mouse/querypointer.c @@ -9,7 +9,7 @@ querypointer(Window *w) { Point pt; uint ui; int i; - + XQueryPointer(display, w->xid, &win, &win, &i, &i, &pt.x, &pt.y, &ui); return pt; } diff --git a/lib/libstuff/x11/windows/findwin.c b/lib/libstuff/x11/windows/findwin.c index d9edd50e..9ea41e99 100644 --- a/lib/libstuff/x11/windows/findwin.c +++ b/lib/libstuff/x11/windows/findwin.c @@ -8,7 +8,7 @@ Window* findwin(XWindow xw) { Window *w; void **e; - + e = map_get(&windowmap, (ulong)xw, false); if(e) { w = *e; diff --git a/lib/libstuff/x11/xatom.c b/lib/libstuff/x11/xatom.c index 51b29791..829cf90d 100644 --- a/lib/libstuff/x11/xatom.c +++ b/lib/libstuff/x11/xatom.c @@ -6,7 +6,7 @@ Atom xatom(const char *name) { void **e, **f; - + e = hash_get(&atommap, name, true); if(*e == nil) { *e = (void*)XInternAtom(display, name, false); diff --git a/lib/libutf/runestrdup.c b/lib/libutf/runestrdup.c index 54e3d09c..a0cfa0a4 100644 --- a/lib/libutf/runestrdup.c +++ b/lib/libutf/runestrdup.c @@ -15,8 +15,8 @@ #include Rune* -runestrdup(const Rune *s) -{ +runestrdup(const Rune *s) +{ Rune *ns; ns = malloc(sizeof(Rune)*(runestrlen(s) + 1)); diff --git a/lib/libwmii_hack/x11.c b/lib/libwmii_hack/x11.c index 7cb32571..4b0f8f55 100644 --- a/lib/libwmii_hack/x11.c +++ b/lib/libwmii_hack/x11.c @@ -9,7 +9,7 @@ static Atom xatom(Display *display, char *name) { /* Blech. I don't trust Xlib's cacheing. MapEnt *e; - + e = hash_get(&amap, name, 1); if(e->val == nil) e->val = (void*)XInternAtom(display, name, False); diff --git a/man/wmii.1 b/man/wmii.1 index 0002043c..554af92e 100644 --- a/man/wmii.1 +++ b/man/wmii.1 @@ -51,7 +51,6 @@ connections. The address takes the form unix!/tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii .fi - which opens a unix socket per Plan 9 Port conventions. To open a TCP socket, listening at port 4332 on the loopback interface, use: @@ -60,7 +59,6 @@ interface, use: tcp!localhost!4332 .fi - \fB$WMII_NAMESPACE\fR is automatically set to this value. .TP @@ -265,14 +263,12 @@ Rules have the form: /\fI\fR/ -> \fI\fR\fI[+\fI\fR]\fR* .fi - Where, .nf \fI\fR := \fI\fR | \fI\fRpx .fi - When a new column, \fI\fR, is created on a view whose name matches \fI\fR, it is given the \fI\fRth supplied \fI\fR. If there is no \fI\fRth width, it is given 1/\fI\fRth of the @@ -290,7 +286,6 @@ specified as: /\fI\fR/ \fI\fR=\fI\fR ... .fi - where each \fI\fR represents a command in the clients \fIctl\fR file, and each \fI\fR represents the value to assign to it. 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 moved between the floating and managed layers. 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 fullscreen \fI\fR Sets the client's fullscreen state. @@ -519,7 +516,6 @@ Selects a column or the floating area. area ::= \fI\fR | \fI\fR:\fI\fR .fi - When \fI\fR is omitted and \fI\fR is not "sel", 0 is assumed. "sel" by itself represents the selected client no matter which screen it is on. @@ -528,7 +524,6 @@ matter which screen it is on. area_spec ::= "~" | \fI\fR | "sel" .fi - Where "~" represents the floating area and \fI\fR represents a column index, starting at one. @@ -536,7 +531,6 @@ index, starting at one. screen_spec ::= \fI\fR .fi - Where \fI\fR representes the 0\-based Xinerama screen number. .TP @@ -547,7 +541,6 @@ Selects a client window. frame ::= \fI\fR \fI\fR | \fI\fR sel | client \fI\fR .fi - Where \fI\fR represents the nth frame of \fI\fR or \fI\fR is the X11 window id of the given client. @@ -559,7 +552,6 @@ The amount to grow or nudge something. amount ::= \fI\fR | \fI\fRpx .fi - If "px" is given, \fI\fR is interperated as an exact pixel count. Otherwise, it's interperated as a "reasonable" amount, which is 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) .P @DOCDIR@/wmii.pdf +@DOCDIR@/FAQ .P \fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips diff --git a/man/wmii.man1 b/man/wmii.man1 index 628a00da..8a24a3c5 100644 --- a/man/wmii.man1 +++ b/man/wmii.man1 @@ -50,13 +50,11 @@ of the core window manager. `!
`. The default is of the form: ``` unix!/tmp/ns.$USER.${DISPLAY%.0}/wmii - which opens a unix socket per Plan 9 Port conventions. To open a TCP socket, listening at port 4332 on the loopback interface, use: ``` tcp!localhost!4332 - $WMII_NAMESPACE is automatically set to this value. : -r @@ -232,11 +230,9 @@ follows. Rules have the form: ``` // -> [+]* - Where, ``` := | px - When a new column, , is created on a view whose name matches , it is given the th supplied . If there is no th width, it is given 1/th of the @@ -250,7 +246,6 @@ follows. specified as: ``` // = ... - where each represents a command in the clients _ctl_ file, and each represents the value to assign to it. 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 moved between the floating and managed layers. 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 Sets the client's fullscreen state. : group @@ -375,7 +372,7 @@ represents the currently selected client. : urgent Set or unset the client's urgent hint. << - + : label Set or read a client's label (title). : props @@ -435,25 +432,21 @@ all of the clients with the given tag applied. The special Selects a column or the floating area. ``` area ::= | : - When is omitted and is not "sel", 0 is assumed. "sel" by itself represents the selected client no matter which screen it is on. ``` area_spec ::= "~" | | "sel" - Where "~" represents the floating area and represents a column index, starting at one. ``` screen_spec ::= - Where representes the 0-based Xinerama screen number. : frame Selects a client window. ``` frame ::= | sel | client - Where represents the nth frame of or is 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. ``` amount ::= | px - If "px" is given, is interperated as an exact pixel count. Otherwise, it's interperated as a "reasonable" amount, which is 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 = wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) + @DOCDIR@/wmii.pdf +@DOCDIR@/FAQ [1] http://www.suckless.org/wiki/wmii/tips/9p_tips + [2] @DOCDIR@/wmii.pdf diff --git a/mk/lib.mk b/mk/lib.mk index 111a3e5e..be346b61 100644 --- a/mk/lib.mk +++ b/mk/lib.mk @@ -2,7 +2,7 @@ PTARG = $(ROOT)/lib/$(TARG) LIB = $(PTARG).a OFILES = $(OBJ:=.o) -all: $(HFILES) $(LIB) +all: $(HFILES) $(LIB) install: $(PTARG).install uninstall: $(PTARG).uninstall diff --git a/mk/so.mk b/mk/so.mk index 6fe5f4de..d869a293 100644 --- a/mk/so.mk +++ b/mk/so.mk @@ -3,7 +3,7 @@ SO = $(SOPTARG).$(SOEXT) SONAME = $(TARG).$(SOEXT) OFILES_PIC = $(OBJ:=.o_pic) -all: $(HFILES) $(SO) +all: $(HFILES) $(SO) install: $(SOPTARG).install uninstall: $(SOPTARG).uninstall diff --git a/mk/wmii.mk b/mk/wmii.mk index 0f7879fd..8876374d 100644 --- a/mk/wmii.mk +++ b/mk/wmii.mk @@ -1,26 +1,31 @@ VERS = hg$$(hg identify -n) 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 := $(shell echo $(VERS)) WMII_HGVERSION != echo $(VERS) VERSION = $(WMII_HGVERSION) -CONFVERSION = -hg COPYRIGHT = ©2010 Kris Maglione +CONFDIR = wmii-hg +LOCALCONF = ~/.$(CONFDIR) +GLOBALCONF = $(ETC)/$(CONFDIR) + .MAKE.EXPORTED += 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 CFLAGS += '-DVERSION=\"$(VERSION)\"' '-DCOPYRIGHT=\"$(COPYRIGHT)\"' \ - '-DCONFVERSION=\"$(CONFVERSION)\"' '-DCONFPREFIX=\"$(ETC)\"' + '-DCONFDIR=\"$(CONFDIR)\"' '-DCONFPREFIX=\"$(ETC)\"' \ + '-DLOCALCONF=\"$(LOCALCONF)\"' '-DGLOBALCONF=\"$(GLOBALCONF)\"' + FILTER = sed "s|@CONFPREFIX@|$(ETC)|g; \ - s|@GLOBALCONF@|$(ETC)/wmii$(CONFVERSION)|g; \ - s|@LOCALCONF@|~/.wmii$(CONFVERSION)|g; \ - s|@CONFVERSION@|$(CONFVERSION)|g; \ + s|@GLOBALCONF@|$(GLOBALCONF)|g; \ + s|@LOCALCONF@|$(LOCALCONF)|g; \ + s|@CONFDIR@|$(CONFDIR)|g; \ s|@DOCDIR@|$(DOC)|g; \ s|@ALTDOC@|$(DOC)/alternative_wmiircs|g; \ s|@EXAMPLES@|$(DOC)/examples|g; \ diff --git a/rc/Makefile b/rc/Makefile index 23631b71..ba0e152f 100644 --- a/rc/Makefile +++ b/rc/Makefile @@ -2,7 +2,7 @@ ROOT=.. include $(ROOT)/mk/hdr.mk include $(ROOT)/mk/wmii.mk -BIN = $(ETC)/wmii$(CONFVERSION) +BIN = $(GLOBALCONF) TARG = wmiirc \ welcome diff --git a/rc/sh.wmii b/rc/sh.wmii index 32758b49..fdc438f4 100755 --- a/rc/sh.wmii +++ b/rc/sh.wmii @@ -227,8 +227,8 @@ fn getfuns { } fn actionlist { - { rescue '*' {} { - proglist ${hostenv WMII_CONFPATH} + { rescue '*' {} { + proglist ${hostenv WMII_CONFPATH} } getfuns Action } | sort | uniq diff --git a/test/Makefile b/test/Makefile index f1bfd730..b1d8d811 100644 --- a/test/Makefile +++ b/test/Makefile @@ -5,7 +5,7 @@ TARG = grav OFILES = ../cmd/util.o \ ../cmd/wmii/map.o \ - ../cmd/wmii/x11.o + ../cmd/wmii/x11.o LDFLAGS += $(OFILES) -lfmt -lutf -lbio $(LIBX11) -lXext CFLAGS += $(INCX11) diff --git a/test/event.b b/test/event.b index 0c13c323..b7fbfbb4 100644 --- a/test/event.b +++ b/test/event.b @@ -66,7 +66,7 @@ readfile(file: string): (string, int) fd := open(file, OREAD); if(fd == nil) return ("", 0); - + ret := ""; buf := array[512] of byte; while((n := read(fd, buf, len buf)) > 0) @@ -115,7 +115,7 @@ init(draw: ref Draw->Context, argv: list of string) } relist = reverse(relist); - + line: for(;;) { lin := <-line; if(lin == nil) diff --git a/util/genconfig b/util/genconfig index 2287191c..5866dc79 100755 --- a/util/genconfig +++ b/util/genconfig @@ -96,7 +96,7 @@ prompt() { unset val if [ -z "$def" -o -n "$force" ]; then echo "$@" - echo -n "$var[$def]$(equals) " + echo -n "$var[$def]$(equals) " read val echo fi @@ -158,7 +158,7 @@ if $1 -v 2>&1 | grep 'gcc version' >/dev/null; then echo fi -prompt INCPATH Search path for include files +prompt INCPATH Search path for include files prompt LIBS Libraries to be linked with every executable prompt CFLAGS Flags for the C compiler diff --git a/util/link b/util/link index 5c6fc94c..60285559 100755 --- a/util/link +++ b/util/link @@ -27,9 +27,9 @@ echo LD "$($bin/cleanname ${BASE}$outfile)" [ -n "$noisycc" ] && echo $LD -o $outfile $ofiles $LDFLAGS $args $LD -o $outfile $ofiles $LDFLAGS $args >$xtmp 2>&1 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' rm -f $xtmp