wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 398533dfd1f97273cb75ec9703a03bc93810f1f6
parent e5e4ff284d578ff13f93c364fb7d461cdc3ff025
Author: Kris Maglione <kris@suckless.org>
Date:   Mon, 14 Jun 2010 10:30:23 -0400

Rearrange some things.

Diffstat:
.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/keyname/main.c | 85-------------------------------------------------------------------------------
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/wmii9menu.c | 330-------------------------------------------------------------------------------
cmd/x11/Makefile | 18++++++++++++++++++
cmd/x11/setfocus.c | 27+++++++++++++++++++++++++++
cmd/x11/wikeyname.c | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cmd/x11/wiwarp.c | 34++++++++++++++++++++++++++++++++++
cmd/x11/wmii9menu.c | 330+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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++--
82 files changed, 666 insertions(+), 830 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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); -} - diff --git a/cmd/click/dat.h b/cmd/click/dat.h @@ -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; - diff --git a/cmd/click/fns.h b/cmd/click/fns.h @@ -1 +0,0 @@ - diff --git a/cmd/click/main.c b/cmd/click/main.c @@ -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; -} - diff --git a/cmd/keyname/Makefile b/cmd/keyname/Makefile @@ -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/keyname/main.c b/cmd/keyname/main.c @@ -1,85 +0,0 @@ -/* Copyright ©2010 Kris Maglione <maglione.k at Gmail> - * See LICENSE file for license details. - */ -#include <stuff/util.h> -#include <stuff/x.h> -#include <fmt.h> -#include <locale.h> - -static const char version[] = "wikeyname-"VERSION", "COPYRIGHT"\n"; - -static Handlers handlers; -static char* keyname; -static int nkeys; - -static void -usage(void) { - fprint(2, "usage: wikeyname\n"); - exit(1); -} - -int -main(int argc, char *argv[]) { - - setlocale(LC_CTYPE, ""); - - ARGBEGIN{ - default: usage(); - }ARGEND; - - if(argc) - usage(); - - initdisplay(); - - selectinput(&scr.root, KeyPressMask|KeyReleaseMask); - sethandler(&scr.root, &handlers); - if(!grabkeyboard(&scr.root)) - fatal("can't grab keyboard\n"); - - event_loop(); - print("%s\n", keyname); - - XCloseDisplay(display); - return 0; -} - -static bool -kdown_event(Window *w, void *aux, XKeyEvent *ev) { - Fmt f; - char buf[32]; - char *key; - KeySym ksym; - int num; - - USED(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); - return false; -} - -static bool -kup_event(Window *w, void *aux, XKeyEvent *ev) { - - USED(w, aux, ev); - if(keyname != nil && --nkeys <= 0) - event_looprunning = false; - return false; -} - - -static Handlers handlers = { - .kup = kup_event, - .kdown = kdown_event, -}; - diff --git 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 @@ -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 @@ -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 @@ -6,30 +6,6 @@ #include <X11/keysym.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 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 @@ -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/wmii9menu.c b/cmd/wmii9menu.c @@ -1,330 +0,0 @@ -/* Licence - * ======= - * - * 9menu is free software, and is Copyright (c) 1994 by David Hogan and - * Arnold Robbins. Permission is granted to all sentient beings to use - * this software, to make copies of it, and to distribute those copies, - * provided that: - * - * (1) the copyright and licence notices are left intact - * (2) the recipients are aware that it is free software - * (3) any unapproved changes in functionality are either - * (i) only distributed as patches - * or (ii) distributed as a new program which is not called 9menu - * and whose documentation gives credit where it is due - * (4) the authors are not held responsible for any defects - * or shortcomings in the software, or damages caused by it. - * - * There is no warranty for this software. Have a nice day. - * - * -- - * Arnold Robbins - * arnold@skeeve.com - * - * 9menu.c - * - * This program puts up a window that is just a menu, and executes - * commands that correspond to the items selected. - * - * Initial idea: Arnold Robbins - * Version using libXg: Matty Farrow (some ideas borrowed) - * This code by: David Hogan and Arnold Robbins - */ - -/* - * Heavily modified by Kris Maglione for use with wmii. - */ - -#define IXP_NO_P9_ -#define IXP_P9_STRUCTS -#include <fmt.h> -#include <ixp.h> -#include <stdarg.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> - -#include <stuff/clientutil.h> -#include <stuff/util.h> -#include <stuff/x.h> - -char version[] = "wmii9menu-"VERSION" "COPYRIGHT", ©1994 David Hogan, Arnold Robbins"; - -static Window* menuwin; - -static CTuple cnorm; -static CTuple csel; -static Font* font; - -static int wborder; - -char buffer[8092]; -char* _buffer; - -/* for XSetWMProperties to use */ -int g_argc; -char **g_argv; - -char *initial = ""; -int cur; - -static char** labels; /* list of labels and commands */ -static char** commands; -static int numitems; - -void usage(void); -void run_menu(void); -void create_window(void); -void size_window(int, int); -void redraw(int, int); -void warpmouse(int, int); -void memory(void); -int args(void); - -Cursor cursor[1]; -Visual* render_visual; - -void init_screens(void); -void -init_screens(void) { - Rectangle *rects; - Point p; - int i, n; - - rects = xinerama_screens(&n); - p = querypointer(&scr.root); - for(i=0; i < n; i++) { - if(rect_haspoint_p(rects[i], p)) - break; - } - if(i == n) - i = 0; - scr.rect = rects[i]; -} - -/* main --- crack arguments, set up X stuff, run the main menu loop */ - -int -main(int argc, char **argv) -{ - static char *address; - char *cp; - int i; - - g_argc = argc; - g_argv = argv; - - ARGBEGIN{ - case 'v': - lprint(1, "%s\n", version); - return 0; - case 'a': - address = EARGF(usage()); - break; - case 'i': - initial = EARGF(usage()); - break; - default: - usage(); - }ARGEND; - - if(argc == 0) - usage(); - - initdisplay(); - xext_init(); - init_screens(); - create_window(); - - numitems = argc; - - labels = emalloc(numitems * sizeof *labels); - commands = emalloc(numitems * sizeof *labels); - - for(i = 0; i < numitems; i++) { - labels[i] = argv[i]; - if((cp = strchr(labels[i], ':')) != nil) { - *cp++ = '\0'; - commands[i] = cp; - } else - commands[i] = labels[i]; - if(strcmp(labels[i], initial) == 0) - cur = i; - } - - client_init(address); - - wborder = strtol(readctl("border "), nil, 10); - loadcolor(&cnorm, readctl("normcolors ")); - loadcolor(&csel, readctl("focuscolors ")); - font = loadfont(readctl("font ")); - if(!font) - fatal("Can't load font"); - - run_menu(); - - XCloseDisplay(display); - return 0; -} - -/* usage --- print a usage message and die */ - -void -usage(void) -{ - lprint(2, "usage: %s -v\n", argv0); - lprint(2, " %s [-a <address>] [-i <arg>] menitem[:command] ...\n", argv0); - exit(0); -} - -/* run_menu --- put up the window, execute selected commands */ - -enum { - MouseMask = - ButtonPressMask - | ButtonReleaseMask - | ButtonMotionMask - | PointerMotionMask, - MenuMask = - MouseMask - | StructureNotifyMask - | ExposureMask -}; - -void -run_menu(void) -{ - XEvent ev; - int i, old, wide, high; - - wide = 0; - high = labelh(font); - for(i = 0; i < numitems; i++) - wide = max(wide, textwidth(font, labels[i])); - wide += font->height & ~1; - - size_window(wide, high); - warpmouse(wide, high); - - for(;;) { - XNextEvent(display, &ev); - switch (ev.type) { - default: - lprint(2, "%s: unknown ev.type %d\n", argv0, ev.type); - break; - case ButtonRelease: - i = ev.xbutton.y / high; - if(ev.xbutton.x < 0 || ev.xbutton.x > wide) - return; - else if(i < 0 || i >= numitems) - return; - - lprint(1, "%s\n", commands[i]); - return; - case ButtonPress: - case MotionNotify: - old = cur; - cur = ev.xbutton.y / high; - if(ev.xbutton.x < 0 || ev.xbutton.x > wide) - cur = ~0; - if(cur == old) - break; - redraw(high, wide); - break; - case MapNotify: - redraw(high, wide); - break; - case Expose: - redraw(high, wide); - break; - case ConfigureNotify: - case MappingNotify: - break; - } - } -} - -/* set_wm_hints --- set all the window manager hints */ - -void -create_window(void) -{ - WinAttr wa = { 0 }; - XEvent e; - - wa.override_redirect = true; - menuwin = createwindow(&scr.root, Rect(-1, -1, 0, 0), - scr.depth, InputOutput, - &wa, CWOverrideRedirect); - selectinput(menuwin, MenuMask); - mapwin(menuwin); - XMaskEvent(display, StructureNotifyMask, &e); - if(!grabpointer(menuwin, nil, 0, MouseMask)) - fatal("Failed to grab the mouse\n"); - XSetCommand(display, menuwin->xid, g_argv, g_argc); -} - -void -size_window(int wide, int high) -{ - Rectangle r; - Point p; - int h; - - h = high * numitems; - r = Rect(0, 0, wide, h); - - p = querypointer(&scr.root); - p.x -= wide / 2; - p.x = max(p.x, scr.rect.min.x); - p.x = min(p.x, scr.rect.max.x - wide); - - p.y -= cur * high + high / 2; - p.y = max(p.y, scr.rect.min.y); - p.y = min(p.y, scr.rect.max.y - h); - - reshapewin(menuwin, rectaddpt(r, p)); - - //XSetWindowBackground(display, menuwin->xid, cnorm.bg); - setborder(menuwin, 1, cnorm.border); -} - -/* redraw --- actually redraw the menu */ - -void -redraw(int high, int wide) -{ - Rectangle r; - CTuple *c; - int i; - - r = Rect(0, 0, wide, high); - for(i = 0; i < numitems; i++) { - if(cur == i) - c = &csel; - else - c = &cnorm; - r = rectsetorigin(r, Pt(0, i * high)); - fill(menuwin, r, c->bg); - drawstring(menuwin, font, r, Center, labels[i], c->fg); - } -} - -/* warpmouse --- bring the mouse to the menu */ - -void -warpmouse(int wide, int high) -{ - Point p; - int offset; - - /* move tip of pointer into middle of menu item */ - offset = labelh(font) / 2; - offset += 6; /* fudge factor */ - - p = Pt(wide / 2, cur*high - high/2 + offset); - p = addpt(p, menuwin->r.min); - - warppointer(p); -} - diff --git a/cmd/x11/Makefile 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 @@ -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); +} + diff --git a/cmd/x11/wikeyname.c b/cmd/x11/wikeyname.c @@ -0,0 +1,72 @@ +/* Copyright ©2010 Kris Maglione <maglione.k at Gmail> + * See LICENSE file for license details. + */ +#include <stuff/util.h> +#include <stuff/x.h> +#include <fmt.h> +#include <locale.h> + +static const char version[] = "wikeyname-"VERSION", "COPYRIGHT"\n"; + +static Handlers handlers; +static char* keyname; +static int nkeys; + +static void +usage(void) { + fprint(2, "usage: wikeyname\n"); + exit(1); +} + +int +main(int argc, char *argv[]) { + + setlocale(LC_CTYPE, ""); + + ARGBEGIN{ + default: usage(); + }ARGEND; + + if(argc) + usage(); + + fmtinstall('K', fmtkey); + initdisplay(); + + selectinput(&scr.root, KeyPressMask|KeyReleaseMask); + sethandler(&scr.root, &handlers); + if(!grabkeyboard(&scr.root)) + fatal("can't grab keyboard\n"); + + event_loop(); + print("%s\n", keyname); + + XCloseDisplay(display); + return 0; +} + +static bool +kdown_event(Window *w, void *aux, XKeyEvent *ev) { + + USED(w, aux); + nkeys++; + free(keyname); + keyname = smprint("%K", ev); + return false; +} + +static bool +kup_event(Window *w, void *aux, XKeyEvent *ev) { + + USED(w, aux, ev); + if(keyname != nil && --nkeys <= 0) + event_looprunning = false; + return false; +} + + +static Handlers handlers = { + .kup = kup_event, + .kdown = kdown_event, +}; + diff --git a/cmd/x11/wiwarp.c b/cmd/x11/wiwarp.c @@ -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); +} + diff --git a/cmd/x11/wmii9menu.c b/cmd/x11/wmii9menu.c @@ -0,0 +1,330 @@ +/* Licence + * ======= + * + * 9menu is free software, and is Copyright (c) 1994 by David Hogan and + * Arnold Robbins. Permission is granted to all sentient beings to use + * this software, to make copies of it, and to distribute those copies, + * provided that: + * + * (1) the copyright and licence notices are left intact + * (2) the recipients are aware that it is free software + * (3) any unapproved changes in functionality are either + * (i) only distributed as patches + * or (ii) distributed as a new program which is not called 9menu + * and whose documentation gives credit where it is due + * (4) the authors are not held responsible for any defects + * or shortcomings in the software, or damages caused by it. + * + * There is no warranty for this software. Have a nice day. + * + * -- + * Arnold Robbins + * arnold@skeeve.com + * + * 9menu.c + * + * This program puts up a window that is just a menu, and executes + * commands that correspond to the items selected. + * + * Initial idea: Arnold Robbins + * Version using libXg: Matty Farrow (some ideas borrowed) + * This code by: David Hogan and Arnold Robbins + */ + +/* + * Heavily modified by Kris Maglione for use with wmii. + */ + +#define IXP_NO_P9_ +#define IXP_P9_STRUCTS +#include <fmt.h> +#include <ixp.h> +#include <stdarg.h> +#include <stdbool.h> +#include <stdio.h> +#include <string.h> + +#include <stuff/clientutil.h> +#include <stuff/util.h> +#include <stuff/x.h> + +char version[] = "wmii9menu-"VERSION" "COPYRIGHT", ©1994 David Hogan, Arnold Robbins"; + +static Window* menuwin; + +static CTuple cnorm; +static CTuple csel; +static Font* font; + +static int wborder; + +char buffer[8092]; +char* _buffer; + +/* for XSetWMProperties to use */ +int g_argc; +char **g_argv; + +char *initial = ""; +int cur; + +static char** labels; /* list of labels and commands */ +static char** commands; +static int numitems; + +void usage(void); +void run_menu(void); +void create_window(void); +void size_window(int, int); +void redraw(int, int); +void warpmouse(int, int); +void memory(void); +int args(void); + +Cursor cursor[1]; +Visual* render_visual; + +void init_screens(void); +void +init_screens(void) { + Rectangle *rects; + Point p; + int i, n; + + rects = xinerama_screens(&n); + p = querypointer(&scr.root); + for(i=0; i < n; i++) { + if(rect_haspoint_p(rects[i], p)) + break; + } + if(i == n) + i = 0; + scr.rect = rects[i]; +} + +/* main --- crack arguments, set up X stuff, run the main menu loop */ + +int +main(int argc, char **argv) +{ + static char *address; + char *cp; + int i; + + g_argc = argc; + g_argv = argv; + + ARGBEGIN{ + case 'v': + lprint(1, "%s\n", version); + return 0; + case 'a': + address = EARGF(usage()); + break; + case 'i': + initial = EARGF(usage()); + break; + default: + usage(); + }ARGEND; + + if(argc == 0) + usage(); + + initdisplay(); + xext_init(); + init_screens(); + create_window(); + + numitems = argc; + + labels = emalloc(numitems * sizeof *labels); + commands = emalloc(numitems * sizeof *labels); + + for(i = 0; i < numitems; i++) { + labels[i] = argv[i]; + if((cp = strchr(labels[i], ':')) != nil) { + *cp++ = '\0'; + commands[i] = cp; + } else + commands[i] = labels[i]; + if(strcmp(labels[i], initial) == 0) + cur = i; + } + + client_init(address); + + wborder = strtol(readctl("border "), nil, 10); + loadcolor(&cnorm, readctl("normcolors ")); + loadcolor(&csel, readctl("focuscolors ")); + font = loadfont(readctl("font ")); + if(!font) + fatal("Can't load font"); + + run_menu(); + + XCloseDisplay(display); + return 0; +} + +/* usage --- print a usage message and die */ + +void +usage(void) +{ + lprint(2, "usage: %s -v\n", argv0); + lprint(2, " %s [-a <address>] [-i <arg>] menitem[:command] ...\n", argv0); + exit(0); +} + +/* run_menu --- put up the window, execute selected commands */ + +enum { + MouseMask = + ButtonPressMask + | ButtonReleaseMask + | ButtonMotionMask + | PointerMotionMask, + MenuMask = + MouseMask + | StructureNotifyMask + | ExposureMask +}; + +void +run_menu(void) +{ + XEvent ev; + int i, old, wide, high; + + wide = 0; + high = labelh(font); + for(i = 0; i < numitems; i++) + wide = max(wide, textwidth(font, labels[i])); + wide += font->height & ~1; + + size_window(wide, high); + warpmouse(wide, high); + + for(;;) { + XNextEvent(display, &ev); + switch (ev.type) { + default: + lprint(2, "%s: unknown ev.type %d\n", argv0, ev.type); + break; + case ButtonRelease: + i = ev.xbutton.y / high; + if(ev.xbutton.x < 0 || ev.xbutton.x > wide) + return; + else if(i < 0 || i >= numitems) + return; + + lprint(1, "%s\n", commands[i]); + return; + case ButtonPress: + case MotionNotify: + old = cur; + cur = ev.xbutton.y / high; + if(ev.xbutton.x < 0 || ev.xbutton.x > wide) + cur = ~0; + if(cur == old) + break; + redraw(high, wide); + break; + case MapNotify: + redraw(high, wide); + break; + case Expose: + redraw(high, wide); + break; + case ConfigureNotify: + case MappingNotify: + break; + } + } +} + +/* set_wm_hints --- set all the window manager hints */ + +void +create_window(void) +{ + WinAttr wa = { 0 }; + XEvent e; + + wa.override_redirect = true; + menuwin = createwindow(&scr.root, Rect(-1, -1, 0, 0), + scr.depth, InputOutput, + &wa, CWOverrideRedirect); + selectinput(menuwin, MenuMask); + mapwin(menuwin); + XMaskEvent(display, StructureNotifyMask, &e); + if(!grabpointer(menuwin, nil, 0, MouseMask)) + fatal("Failed to grab the mouse\n"); + XSetCommand(display, menuwin->xid, g_argv, g_argc); +} + +void +size_window(int wide, int high) +{ + Rectangle r; + Point p; + int h; + + h = high * numitems; + r = Rect(0, 0, wide, h); + + p = querypointer(&scr.root); + p.x -= wide / 2; + p.x = max(p.x, scr.rect.min.x); + p.x = min(p.x, scr.rect.max.x - wide); + + p.y -= cur * high + high / 2; + p.y = max(p.y, scr.rect.min.y); + p.y = min(p.y, scr.rect.max.y - h); + + reshapewin(menuwin, rectaddpt(r, p)); + + //XSetWindowBackground(display, menuwin->xid, cnorm.bg); + setborder(menuwin, 1, cnorm.border); +} + +/* redraw --- actually redraw the menu */ + +void +redraw(int high, int wide) +{ + Rectangle r; + CTuple *c; + int i; + + r = Rect(0, 0, wide, high); + for(i = 0; i < numitems; i++) { + if(cur == i) + c = &csel; + else + c = &cnorm; + r = rectsetorigin(r, Pt(0, i * high)); + fill(menuwin, r, c->bg); + drawstring(menuwin, font, r, Center, labels[i], c->fg); + } +} + +/* warpmouse --- bring the mouse to the menu */ + +void +warpmouse(int wide, int high) +{ + Point p; + int offset; + + /* move tip of pointer into middle of menu item */ + offset = labelh(font) / 2; + offset += 6; /* fudge factor */ + + p = Pt(wide / 2, cur*high - high/2 + offset); + p = addpt(p, menuwin->r.min); + + warppointer(p); +} + diff --git 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 <daniel@debian.org> diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -1,7 +1,7 @@ #include "plan9.h" #include <bio.h> -static int +static int fmtBflush(Fmt *f) { Biobuf *bp; diff --git 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 @@ -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 @@ -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 <stdlib.h> #include <string.h> diff --git 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 <stdlib.h> #include <string.h> diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -5,7 +5,7 @@ #include <string.h> #include <stuff/util.h> -#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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -15,8 +15,8 @@ #include <plan9.h> 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 @@ -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 @@ -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<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR* .fi - Where, .nf \fI<width>\fR := \fI<percent of screen>\fR | \fI<pixels>\fRpx .fi - 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. 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 - 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. 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<on | off | toggle>\fR 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 .fi - 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 matter which screen it is on. @@ -528,7 +524,6 @@ matter which screen it is on. area_spec ::= "~" | \fI<number>\fR | "sel" .fi - Where "~" represents the floating area and \fI<number>\fR represents a column index, starting at one. @@ -536,7 +531,6 @@ index, starting at one. screen_spec ::= \fI<number>\fR .fi - Where \fI<number>\fR representes the 0\-based Xinerama screen number. .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 .fi - 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. @@ -559,7 +552,6 @@ The amount to grow or nudge something. amount ::= \fI<number>\fR | \fI<number>\fRpx .fi - If "px" is given, \fI<number>\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 @@ -50,13 +50,11 @@ of the core window manager. `<protocol>!<address>`. 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 <wmiirc> @@ -232,11 +230,9 @@ follows. Rules have the form: ``` /<regex>/ -> <width>[+<width>]* - Where, ``` <width> := <percent of screen> | <pixels>px - When a new column, <n>, is created on a view whose name 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 @@ -250,7 +246,6 @@ follows. specified as: ``` /<regex>/ <key>=<value> ... - where each <key> represents a command in the clients _ctl_ file, and each <value> 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 <on | off | toggle> Sets the client's fullscreen state. : group <group id> @@ -375,7 +372,7 @@ represents the currently selected client. : urgent <on | off | toggle> 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 ::= <area_spec> | <screen_spec>:<area_spec> - When <screen_spec> is omitted and <area_spec> is not "sel", 0 is assumed. "sel" by itself represents the selected client no matter which screen it is on. ``` area_spec ::= "~" | <number> | "sel" - Where "~" represents the floating area and <number> represents a column index, starting at one. ``` screen_spec ::= <number> - Where <number> representes the 0-based Xinerama screen number. : frame Selects a client window. ``` frame ::= <area> <index> | <area> sel | client <window-id> - Where <index> represents the nth frame of <area> or <window-id> 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 ::= <number> | <number>px - If "px" is given, <number> 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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