wmii

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

commit e5e4ff284d578ff13f93c364fb7d461cdc3ff025
parent f1a6e75d10fe2fea4202b275e757c6731d8fe64a
Author: Kris Maglione <kris@suckless.org>
Date:   Fri, 11 Jun 2010 23:48:29 -0400

Fix last commit.

Diffstat:
FAQ | 113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Makefile | 5+++--
README | 4++--
alternative_wmiircs/README | 2+-
alternative_wmiircs/plan9port/README | 2+-
alternative_wmiircs/python/README | 2+-
alternative_wmiircs/python/pygmi/fs.py | 29++++++++++++++++++++++++-----
alternative_wmiircs/python/wmiirc.py | 2+-
alternative_wmiircs/ruby/README | 23+++++++++++------------
cmd/Makefile | 1+
cmd/keyname/Makefile | 15+++++++++++++++
cmd/keyname/main.c | 85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cmd/strut/main.c | 4++--
cmd/wmii/message.c | 16++++------------
cmd/wmii/mouse.c | 4++--
include/stuff/util.h | 9+++++----
include/stuff/x.h | 1+
include/stuff/x11.h | 1+
lib/libstuff/Makefile | 2++
lib/libstuff/event/event.c | 2++
lib/libstuff/event/keyrelease.c | 14++++++++++++++
lib/libstuff/fmt/fmtbufinit.c | 21+++++++++++++++++++++
lib/libstuff/printevent.c | 1+
lib/libstuff/util/unmask.c | 21+++++++++++++++++++++
lib/libstuff/x11/keys/parsekey.c | 31++++++++++++++-----------------
man/wmii.1 | 4++--
man/wmii.man1 | 4++--
mk/wmii.mk | 7++++++-
28 files changed, 358 insertions(+), 67 deletions(-)

diff --git a/FAQ b/FAQ @@ -0,0 +1,113 @@ + wmii 3.10 + +@@ If you're reading this file before it's been installed, +@@ substitute the following directories for their placeholders. +@@ @DOCDIR@ doc/ +@@ @EXAMPLES@ examples/ +@@ @LOCALCONF@ ~/.wmii or ~/.wmii-hg (if this is a snapshot) +@@ @ALTDOC@ alternative_wmiircs/ +@@ +Frequently Asked Questions +========================== + +1. I've just upgraded and something doesn't work. +------------------------------------------------- +If you compiled wmii yourself, please try again from a clean source +tree. If wmii still fails, try deleting or renaming your old +configuration files. If this fails, see questions #2. + +2. I've read all of the docs, but I still need help. +---------------------------------------------------- +You can get support[1] in the #suckless irc channel on irc.oftc.net, or +you can subscribe to the mailing list by sending an email to +dev+subscribe@suckless.org. You can also browse or search the +mailing list archives[2] at Gmane. + +3. I think I've found a bug. +---------------------------- +You can report bugs at the issue tracker at the Google Code +project[3]. Please be sure to search for your problem before you +open a new issue. + +4. How do I get a list of keyboard shortcuts? +--------------------------------------------- +The default keyboard shortcuts are listed in both the wmii(1) +manpage and in the user guide[4]. You can also get a list of all +current keyboard shortcuts at any time by selecting 'showkeys' from +the actions menu (M-a). + +5. How do I customize wmii? How do I change my keyboard shortcuts? +------------------------------------------------------------------ +You can customize wmii by editing its configuration script. If +you're using the stock wmiirc configuration script, you can add key +bindings and change your theme by editing @LOCALCONF@/wmiirc_local. +See @EXAMPLES@/wmiirc_local for more information. You should also be +sure to read wmii(1) and the user guide[4]. + +6. I've heard I can do my configuration in any language? +-------------------------------------------------------- +While wmii is driven by a sh(1) script by default, it ships with +configuration scripts in several other languages, and more still are +available elsewhere on the web. See @ALTDOC@/README for more +information. + +7. I've made some changes to my configuration. How do I reload it? +------------------------------------------------------------------ +You can rerun your wmiirc script from the actions menu at any time. +If you're running the stock wmiirc, just select wmiirc. If you're +running the python wmiirc (and haven't moved it to +@LOCALCONF@/wmiirc), type python/wmiirc, and so on. + +8. How do I restart wmii without killing X? +------------------------------------------- +You can either run 'exec wmii' from the actions menu or write +'exec wmii' to the /ctl virtual file. + +9. Why is there space around my terminal windows? +------------------------------------------------- +Your terminal has asked to only be resized in certain increments, +and there's not enough space for another row. `wmii` is forced to +compromise and leave blank space around it. If you'd rather wmii to +ignore the terminal's request, write 'incmode ignore'[5] to the /ctl +virtual file. + +10. On FreeBSD, using p9p[6], I get an error about not being able to open /dev/fd/7. +------------------------------------------------------------------------------------ +You need to mount fdescfs on /dev/fd. See the BUGS section of rc(1) +for details. + +11. How do I set a background image? +------------------------------------ +This isn't the job of a window manager. You can set the background +with a third party tool, such as wmsetbg, Esetbg, feh, qiv, +xsetroot, etc. + +12. How do I enable sequential shortcuts (like in ratpoison)? + or How do I use wmii with emacs? The shortcuts collide! +------------------------------------------------------------- + +Some applications make extensive use of the Alt key. The preferred +solution is to use the Windows, Apple, or Penguin key in its place. +It's assigned the identifier Mod4 on most systems. Set the +following in wmiirc_local: + + MODKEY=Mod4 + +Alternatively, you can use key chains, so you're required to press a +certain key combination before wmii accepts its shortcuts: + + MODKEY=Control-i, + +13. How do I find out the names of keys to define keyboard shorcuts? +-------------------------------------------------------------------- +The easiest way is to run wikeyname(1) and type the key you want to +bind. + + +[1] http://suckless.org/community +[2] http://dir.gmane.org/gmane.comp.misc.suckless +[3] http://wmii.googlecode.com/ +[4] @DOCDIR@/wmii.pdf +[5] For more information, see wmii(1). +[6] http://plan9.us + diff --git a/Makefile b/Makefile @@ -10,8 +10,9 @@ DIRS = \ rc \ alternative_wmiircs -DOCS = README \ - LICENSE +DOCS = FAQ \ + LICENSE \ + README deb-dep: IFS=', '; \ diff --git a/README b/README @@ -47,8 +47,8 @@ Configuration ------------- The configuration of wmii is done by customizing the rc script wmiirc, which remotely controls the window manager and handles various events. -The main wmiirc script lives in @CONFPREFIX@/wmii@CONFVERSION@/, while -wmiirc_local goes in $HOME/.wmii@CONFVERSION@/. +The main wmiirc script lives in @GLOBALCONF@ while wmiirc_local goes +in @LOCALCONF@. More advanced versions of wmiirc are provided in python and ruby. For more information on them, see alternative_wmiircs/README. diff --git a/alternative_wmiircs/README b/alternative_wmiircs/README @@ -11,7 +11,7 @@ It usually suffices to start the included `wmiirc` script at wmii startup. Invoking wmii with the flag '-r python/wmiirc', for instance, will start the python implementation. Alternatively, if you use a session manager, you can add this -line to ~/.wmii/wmiirc (which must be executable): +line to @LOCALCONF@/wmiirc (which must be executable): wmiir xwrite /ctl spawn python/wmiirc diff --git a/alternative_wmiircs/plan9port/README b/alternative_wmiircs/plan9port/README @@ -5,6 +5,6 @@ This directory contains a Plan 9 based wmiirc script. This script was traditionally the default wmiirc for wmii, but has been moved for portability reasons. To run this script, either Plan 9 from User Space[1] (plan9port for short) or 9base[2] is required. Modifications -can be placed in $home/.wmii@CONFVERSION@/wmiirc_local.rc, which must +can be placed in @LOCALCONF@/wmiirc_local.rc, which must be executable. diff --git a/alternative_wmiircs/python/README b/alternative_wmiircs/python/README @@ -5,7 +5,7 @@ This directory contains a pure Python implementation of wmiirc. The two included libraries, pyxp and pygmi, are a 9P client and wmii filesystem utility module, respectively. To use this library, simply copy the contents of this direcctory -to ~/.wmii/. To customize it, either modify wmiirc.py +to @LOCALCONF@. To customize it, either modify wmiirc.py directly, or create wmii_local.py and store your modifications there. The latter approach is preferable in that future modifications to wmiirc.py can usually be painlessly diff --git a/alternative_wmiircs/python/pygmi/fs.py b/alternative_wmiircs/python/pygmi/fs.py @@ -81,6 +81,8 @@ class Ctl(object): assert '\n' not in key self.cache[key] = val if key in self.ctl_types: + if self.ctl_types[key][1] is None: + raise NotImplementedError('%s: %s is not writable' % (self.ctl_path, key)) val = self.ctl_types[key][1](val) self.ctl(key, val) @@ -91,7 +93,7 @@ class Ctl(object): doesn't exist, a KeyError is raised. """ try: - val = self[key] + return self[key] except KeyError, e: if default is not self.sentinel: return default @@ -165,7 +167,7 @@ class Dir(Ctl): def __init__(self, key): self.key = key def __get__(self, dir, cls): - return dir[self.key] + return dir.get(self.key, None) def __set__(self, dir, val): dir[self.key] = val @@ -178,6 +180,9 @@ class Dir(Ctl): props = { 'on': True, 'off': False, + 'toggle': Toggle, + 'always': Always, + 'never': Never } def __get__(self, dir, cls): val = dir[self.key] @@ -234,12 +239,19 @@ class Client(Dir): below /client. """ base_path = '/client' + ctl_types = { + 'group': (lambda s: int(s, 16), str), + 'pid': (int, None), + } + allow = Dir.ctl_property('allow') fullscreen = Dir.toggle_property('fullscreen') + group = Dir.ctl_property('group') + pid = Dir.ctl_property('pid') + tags = Dir.ctl_property('tags') urgent = Dir.toggle_property('urgent') label = Dir.file_property('label', writable=True) - tags = Dir.file_property('tags', writable=True) props = Dir.file_property('props') def kill(self): @@ -615,6 +627,8 @@ class Rule(collections.MutableMapping, utf8): @classmethod def quotekey(cls, key): + if key.endswith('_'): + key = key[:-1] return key.replace('_', '-') @classmethod def quotevalue(cls, val): @@ -752,11 +766,16 @@ class Tags(object): def select(self, tag, take_client=None): def goto(tag): if take_client: + # Make a new instance in case this is Client('sel'), + # which would cause problems given 'sel' changes in the + # process. + client = Client(take_client.id) + sel = Tag('sel').id - take_client.tags = '+%s' % tag + client.tags = '+%s' % tag wmii['view'] = tag if tag != sel: - take_client.tags = '-%s' % sel + client.tags = '-%s' % sel else: wmii['view'] = tag diff --git a/alternative_wmiircs/python/wmiirc.py b/alternative_wmiircs/python/wmiirc.py @@ -62,7 +62,7 @@ def time(self): wmii.rules = ( # Apps with system tray icons like to their main windows # Give them permission. - (ur'^Pidgin:' dict(allow='+activate')), + (ur'^Pidgin:', dict(allow='+activate')), # MPlayer and VLC don't float by default, but should. (ur'MPlayer|VLC', dict(floating=True)), diff --git a/alternative_wmiircs/ruby/README b/alternative_wmiircs/ruby/README @@ -8,10 +8,9 @@ string interpolation in key bindings, as should be apparent in the included config.yaml. In particular, not that there is no need to copy any files to -~/.wmii-hg or ~/.wmii other than config.yaml. The script will -happily load the requisite files from their default install -location. They can be loaded either by involing wmii as -follows: +@LOCALCONF@ other than config.yaml. The script will happily load +the requisite files from their default install location. They +can be loaded either by involing wmii as follows: wmiir -r ruby/wmiirc @@ -51,11 +50,11 @@ Installation: gem install librmpd # optional # install - mv ~/.wmii-hg ~/.wmii-hg.backup - git clone git://github.com/sunaku/wmiirc.git ~/.wmii-hg + mv @LOCALCONF@ @LOCALCONF@.backup + git clone git://github.com/sunaku/wmiirc.git @LOCALCONF@ # choose - cd ~/.wmii-hg + cd @LOCALCONF@ git checkout --track -b CHOICE origin/CHOICE # choices are: +--------+------------------------------------------------+ @@ -68,21 +67,21 @@ Installation: +--------+------------------------------------------------+ # run - ~/.wmii-hg/wmiirc + @LOCALCONF@/wmiirc Documentation: # see list of all key bindings - egrep '^ +\$\{\w+\}' ~/.wmii-hg/config.yaml + egrep '^ +\$\{\w+\}' @LOCALCONF@/config.yaml # read the configuration file - less ~/.wmii-hg/config.yaml + less @LOCALCONF@/config.yaml Configuration: - Edit ~/.wmii-hg/config.yaml to your liking. + Edit @LOCALCONF@/config.yaml to your liking. - Run ~/.wmii-hg/wmiirc to apply your changes. + Run @LOCALCONF@/wmiirc to apply your changes. Contribution: diff --git a/cmd/Makefile b/cmd/Makefile @@ -5,6 +5,7 @@ include $(ROOT)/mk/wmii.mk wmiir.c: $(ROOT)/mk/wmii.mk DIRS = wmii \ + keyname \ menu \ strut \ tray diff --git a/cmd/keyname/Makefile b/cmd/keyname/Makefile @@ -0,0 +1,15 @@ +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 @@ -0,0 +1,85 @@ +/* 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/strut/main.c b/cmd/strut/main.c @@ -164,8 +164,8 @@ main(int argc, char *argv[]) { changeprop_ulong(testwin, "_WMII_STRUT", "WINDOW", testtime, nelem(testtime)); - event_looprunning = windowmap.nmemb > 0; - event_loop(); + if(windowmap.nmemb > 0) + event_loop(); XCloseDisplay(display); return 0; diff --git a/cmd/wmii/message.c b/cmd/wmii/message.c @@ -288,17 +288,9 @@ struct Mask { static int Mfmt(Fmt *f) { Mask m; - int i; m = va_arg(f->args, Mask); - for(i=0; m.table[i]; i++) - if(*m.mask & (1<<i)) { - if(*m.mask & ((1<<i)-1)) - fmtstrcpy(f, "+"); - if(fmtstrcpy(f, m.table[i])) - return -1; - } - return 0; + return unmask(f, *m.mask, m.table, '+'); } char* @@ -338,7 +330,7 @@ fail: } static void -unmask(Mask m, char *s) { +setmask(Mask m, char *s) { char *opt; int add, old, i, n; long newmask; @@ -366,7 +358,7 @@ unmask(Mask m, char *s) { void msg_debug(char *s) { - unmask((Mask){&debugflag, debugtab}, s); + setmask((Mask){&debugflag, debugtab}, s); } static Client* @@ -519,7 +511,7 @@ message_client(Client *c, IxpMsg *m) { switch(getsym(s)) { case LALLOW: - unmask((Mask){&c->permission, permtab}, msg_getword(m, 0)); + setmask((Mask){&c->permission, permtab}, msg_getword(m, 0)); break; case LFLOATING: c->floating = -1 + _lsearch(msg_getword(m, Ebadvalue), floatingtab, nelem(floatingtab)); diff --git a/cmd/wmii/mouse.c b/cmd/wmii/mouse.c @@ -204,8 +204,8 @@ readmouse(Point *p, uint *button) { p->y = ev.xmotion.y_root; if(p->x == scr.rect.max.x - 1) p->x = scr.rect.max.x; - if(p->y == scr.rect.max.x - 1) - p->y = scr.rect.max.x; + if(p->y == scr.rect.max.y - 1) + p->y = scr.rect.max.y; break; } return ev.type; diff --git a/include/stuff/util.h b/include/stuff/util.h @@ -43,12 +43,16 @@ enum { #define strlcat stuff_strlcat #define strcasestr stuff_strcasestr + int Blprint(Biobuf*, const char*, ...); int Bvlprint(Biobuf*, const char*, va_list); +extern char* _buffer; void _die(char*, int, char*, ...); void backtrace(char*); +extern char buffer[8092]; void closeexec(int); char** comm(int, char**, char**); +extern char* const _buf_end; int doublefork(void); void* emalloc(uint); void* emallocz(uint); @@ -85,14 +89,11 @@ char* sxprint(const char*, ...); uint tokenize(char**, uint, char*, char); void trim(char *str, const char *chars); void uniq(char**); +int unmask(Fmt*, long, char**, long); int unquote(char*, char*[], int); int utflcpy(char*, const char*, int); int vlprint(int, const char*, va_list); char* vsxprint(const char*, va_list); -extern char buffer[8092]; -extern char* _buffer; -extern char* const _buf_end; - #define bufclear() \ BLOCK( _buffer = buffer; _buffer[0] = '\0' ) #define bufprint(...) \ diff --git a/include/stuff/x.h b/include/stuff/x.h @@ -55,6 +55,7 @@ void event_expose(XExposeEvent*); void event_focusin(XFocusChangeEvent*); void event_focusout(XFocusChangeEvent*); void event_keypress(XKeyEvent*); +void event_keyrelease(XKeyEvent*); void event_leavenotify(XCrossingEvent*); void event_mapnotify(XMapEvent*); void event_mappingnotify(XMappingEvent*); diff --git a/include/stuff/x11.h b/include/stuff/x11.h @@ -207,6 +207,7 @@ struct Screen { Display *display; Screen scr; +extern char* modkey_names[]; extern struct Map windowmap; extern struct Map atommap; extern struct Map atomnamemap; diff --git a/lib/libstuff/Makefile b/lib/libstuff/Makefile @@ -22,6 +22,7 @@ OBJ=\ event/focusout \ event/ixp \ event/keypress \ + event/keyrelease \ event/leavenotify \ event/mapnotify \ event/maprequest \ @@ -85,6 +86,7 @@ OBJ=\ util/tokenize \ util/trim \ util/uniq \ + util/unmask \ util/unquote \ util/utflcpy \ util/vector \ diff --git a/lib/libstuff/event/event.c b/lib/libstuff/event/event.c @@ -20,6 +20,7 @@ EventHandler event_handler[LASTEvent] = { [FocusIn] = (EventHandler)event_focusin, [FocusOut] = (EventHandler)event_focusout, [KeyPress] = (EventHandler)event_keypress, + [KeyRelease] = (EventHandler)event_keyrelease, [LeaveNotify] = (EventHandler)event_leavenotify, [MapNotify] = (EventHandler)event_mapnotify, [MapRequest] = (EventHandler)event_maprequest, @@ -73,6 +74,7 @@ void event_loop(void) { XEvent ev; + event_looprunning = true; while(event_looprunning) { XNextEvent(display, &ev); event_dispatch(&ev); diff --git a/lib/libstuff/event/keyrelease.c b/lib/libstuff/event/keyrelease.c @@ -0,0 +1,14 @@ +/* Copyright ©2006-2010 Kris Maglione <maglione.k at Gmail> + * See LICENSE file for license details. + */ +#include "event.h" + +void +event_keyrelease(XKeyEvent *ev) { + Window *w; + + if(!ev->send_event) + event_xtime = ev->time; + if((w = findwin(ev->window))) + event_handle(w, kup, ev); +} diff --git a/lib/libstuff/fmt/fmtbufinit.c b/lib/libstuff/fmt/fmtbufinit.c @@ -0,0 +1,21 @@ +#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/printevent.c b/lib/libstuff/printevent.c @@ -45,6 +45,7 @@ #include <stuff/util.h> #include "printevent.h" #define Window XWindow +#define unmask _unmask #define nil ((void*)0) diff --git a/lib/libstuff/util/unmask.c b/lib/libstuff/util/unmask.c @@ -0,0 +1,21 @@ +/* Copyright ©2008-2010 Kris Maglione <maglione.k at Gmail> + * See LICENSE file for license details. + */ +#include <fmt.h> +#include "util.h" + +int +unmask(Fmt *f, long mask, char **table, long sep) { + int i, nfmt; + + nfmt = f->nfmt; + for(i=0; table[i]; i++) + if(*table[i] && (mask & (1<<i))) { + if(f->nfmt > nfmt) + fmtrune(f, sep); + if(fmtstrcpy(f, table[i])) + return -1; + } + return 0; +} + diff --git a/lib/libstuff/x11/keys/parsekey.c b/lib/libstuff/x11/keys/parsekey.c @@ -5,32 +5,29 @@ typedef struct KMask KMask; -static struct KMask { - int mask; - const char* name; -} masks[] = { - {ShiftMask, "Shift"}, - {ControlMask, "Control"}, - {Mod1Mask, "Mod1"}, - {Mod2Mask, "Mod2"}, - {Mod3Mask, "Mod3"}, - {Mod4Mask, "Mod4"}, - {Mod5Mask, "Mod5"}, - {0,} +char *modkey_names[] = { + "Shift", + "", + "Control", + "Mod1", + "Mod2", + "Mod3", + "Mod4", + "Mod5", + nil }; bool parsekey(char *str, int *mask, char **key) { static char *keys[16]; - KMask *m; - int i, nkeys; + int i, j, nkeys; *mask = 0; nkeys = tokenize(keys, nelem(keys), str, '-'); for(i=0; i < nkeys; i++) { - for(m=masks; m->mask; m++) - if(!strcasecmp(m->name, keys[i])) { - *mask |= m->mask; + for(j=0; modkey_names[j]; j++) + if(!strcasecmp(modkey_names[j], keys[i])) { + *mask |= 1 << j; goto next; } break; diff --git a/man/wmii.1 b/man/wmii.1 @@ -592,10 +592,10 @@ them. /tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii The wmii socket file which provides a 9P service. .TP -@CONFPREFIX@/wmii@CONFVERSION@ +@GLOBALCONF@ Global action directory. .TP -\fB$HOME\fR/.wmii@CONFVERSION@ +@LOCALCONF@ User\-specific action directory. Actions are first searched here. diff --git a/man/wmii.man1 b/man/wmii.man1 @@ -492,9 +492,9 @@ them. : /tmp/ns.$USER.${DISPLAY%.0}/wmii The wmii socket file which provides a 9P service. -: @CONFPREFIX@/wmii@CONFVERSION@ +: @GLOBALCONF@ Global action directory. -: $HOME/.wmii@CONFVERSION@ +: @LOCALCONF@ User-specific action directory. Actions are first searched here. : diff --git a/mk/wmii.mk b/mk/wmii.mk @@ -18,10 +18,15 @@ LIBS9 = $(ROOT)/lib/libstuff.a $(ROOT)/lib/libregexp9.a $(ROOT)/lib/libbio.a $(R CFLAGS += '-DVERSION=\"$(VERSION)\"' '-DCOPYRIGHT=\"$(COPYRIGHT)\"' \ '-DCONFVERSION=\"$(CONFVERSION)\"' '-DCONFPREFIX=\"$(ETC)\"' FILTER = sed "s|@CONFPREFIX@|$(ETC)|g; \ + s|@GLOBALCONF@|$(ETC)/wmii$(CONFVERSION)|g; \ + s|@LOCALCONF@|~/.wmii$(CONFVERSION)|g; \ s|@CONFVERSION@|$(CONFVERSION)|g; \ s|@DOCDIR@|$(DOC)|g; \ + s|@ALTDOC@|$(DOC)/alternative_wmiircs|g; \ + s|@EXAMPLES@|$(DOC)/examples|g; \ s|@VERSION@|$(VERSION)|g; \ s|@LIBDIR@|$(LIBDIR)|g; \ s|@BINSH@|$(BINSH)|g; \ - s|@TERMINAL@|$(TERMINAL)|g;" + s|@TERMINAL@|$(TERMINAL)|g; \ + /^@@/d;"