mirror of https://github.com/0intro/wmii
Rearrange some things.
This commit is contained in:
parent
e5e4ff284d
commit
398533dfd1
|
@ -4,7 +4,8 @@ syntax: regexp
|
||||||
\.([oa]|out|o_pic|so|pyc|pyo|diff)$
|
\.([oa]|out|o_pic|so|pyc|pyo|diff)$
|
||||||
\.(diff|orig|rej|bak)$
|
\.(diff|orig|rej|bak)$
|
||||||
\.(aux|idx|ilg|ind|log|toc)$
|
\.(aux|idx|ilg|ind|log|toc)$
|
||||||
^cmd/(stfo|osd|wiwarp|setfocus)(/|$)
|
^cmd/osd(/|$)
|
||||||
|
^cmd/x11/(stfo|wiclick)\.
|
||||||
^(pkg|src)/
|
^(pkg|src)/
|
||||||
^doxy
|
^doxy
|
||||||
/bak/
|
/bak/
|
||||||
|
|
|
@ -2,7 +2,7 @@ ROOT=..
|
||||||
include $(ROOT)/mk/hdr.mk
|
include $(ROOT)/mk/hdr.mk
|
||||||
include $(ROOT)/mk/wmii.mk
|
include $(ROOT)/mk/wmii.mk
|
||||||
|
|
||||||
BIN = $(ETC)/wmii$(CONFVERSION)
|
BIN = $(GLOBALCONF)
|
||||||
DIRS = python \
|
DIRS = python \
|
||||||
plan9port \
|
plan9port \
|
||||||
ruby
|
ruby
|
||||||
|
|
|
@ -5,5 +5,5 @@ include $(ROOT)/mk/wmii.mk
|
||||||
DOCS = README
|
DOCS = README
|
||||||
EXECS = wmiirc
|
EXECS = wmiirc
|
||||||
|
|
||||||
DIR = $(ETC)/wmii$(CONFVERSION)/plan9port
|
DIR = $(GLOBALCONF)/plan9port
|
||||||
DOCDIR = $(DOC)/alternative_wmiircs/plan9port
|
DOCDIR = $(DOC)/alternative_wmiircs/plan9port
|
||||||
|
|
|
@ -8,7 +8,7 @@ TEXT = wmiirc.py
|
||||||
DIRS = pygmi \
|
DIRS = pygmi \
|
||||||
pyxp
|
pyxp
|
||||||
|
|
||||||
DIR = $(ETC)/wmii$(CONFVERSION)/python
|
DIR = $(GLOBALCONF)/python
|
||||||
DOCDIR = $(DOC)/alternative_wmiircs/python
|
DOCDIR = $(DOC)/alternative_wmiircs/python
|
||||||
|
|
||||||
include $(ROOT)/mk/dir.mk
|
include $(ROOT)/mk/dir.mk
|
||||||
|
|
|
@ -9,4 +9,4 @@ BINARY = __init__.py \
|
||||||
monitor.py \
|
monitor.py \
|
||||||
util.py
|
util.py
|
||||||
|
|
||||||
DIR = $(ETC)/wmii$(CONFVERSION)/python/pygmi
|
DIR = $(GLOBALCONF)/python/pygmi
|
||||||
|
|
|
@ -12,4 +12,4 @@ BINARY = __init__.py \
|
||||||
mux.py \
|
mux.py \
|
||||||
types.py
|
types.py
|
||||||
|
|
||||||
DIR = $(ETC)/wmii$(CONFVERSION)/python/pyxp
|
DIR = $(GLOBALCONF)/python/pyxp
|
||||||
|
|
|
@ -9,5 +9,5 @@ EXECS = wmiirc
|
||||||
TEXT = config.rb \
|
TEXT = config.rb \
|
||||||
config.yaml
|
config.yaml
|
||||||
|
|
||||||
DIR = $(ETC)/wmii$(CONFVERSION)/ruby
|
DIR = $(GLOBALCONF)/ruby
|
||||||
DOCDIR = $(DOC)/alternative_wmiircs/ruby
|
DOCDIR = $(DOC)/alternative_wmiircs/ruby
|
||||||
|
|
14
cmd/Makefile
14
cmd/Makefile
|
@ -4,24 +4,18 @@ include $(ROOT)/mk/wmii.mk
|
||||||
|
|
||||||
wmiir.c: $(ROOT)/mk/wmii.mk
|
wmiir.c: $(ROOT)/mk/wmii.mk
|
||||||
|
|
||||||
DIRS = wmii \
|
DIRS = menu \
|
||||||
keyname \
|
|
||||||
menu \
|
|
||||||
strut \
|
strut \
|
||||||
tray
|
tray \
|
||||||
|
wmii \
|
||||||
|
x11
|
||||||
TARG = wihack \
|
TARG = wihack \
|
||||||
wmii.rc \
|
wmii.rc \
|
||||||
wmii.sh \
|
wmii.sh \
|
||||||
wmii9menu \
|
|
||||||
wmiir
|
wmiir
|
||||||
|
|
||||||
LIBS += $(LIBS9) $(LIBIXP)
|
LIBS += $(LIBS9) $(LIBIXP)
|
||||||
CFLAGS += $(INCX11)
|
|
||||||
|
|
||||||
include $(ROOT)/mk/many.mk
|
include $(ROOT)/mk/many.mk
|
||||||
include $(ROOT)/mk/dir.mk
|
include $(ROOT)/mk/dir.mk
|
||||||
|
|
||||||
O9MENU=wmii9menu.o $(ROOT)/lib/libstuff.a $(LIBIXP)
|
|
||||||
wmii9menu.out: $(O9MENU)
|
|
||||||
$(LINK) $@ $(O9MENU) $$(pkg-config --libs $(X11PACKAGES)) -lXext
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
static void
|
static void
|
||||||
splice(Item *i) {
|
splice(Item *i) {
|
||||||
if(i->next != nil)
|
if(i->next != nil)
|
||||||
i->next->prev = i->prev;
|
i->next->prev = i->prev;
|
||||||
if(i->prev != nil)
|
if(i->prev != nil)
|
||||||
i->prev->next = i->next;
|
i->prev->next = i->next;
|
||||||
|
|
|
@ -15,28 +15,6 @@ struct Key {
|
||||||
|
|
||||||
static Key* bindings;
|
static Key* bindings;
|
||||||
|
|
||||||
static void
|
|
||||||
init_numlock(void) {
|
|
||||||
static int masks[] = {
|
|
||||||
ShiftMask, LockMask, ControlMask, Mod1Mask,
|
|
||||||
Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
|
|
||||||
};
|
|
||||||
XModifierKeymap *modmap;
|
|
||||||
KeyCode kcode;
|
|
||||||
int i, max;
|
|
||||||
|
|
||||||
modmap = XGetModifierMapping(display);
|
|
||||||
kcode = keycode("Num_Lock");
|
|
||||||
if(kcode)
|
|
||||||
if(modmap && modmap->max_keypermod > 0) {
|
|
||||||
max = nelem(masks) * modmap->max_keypermod;
|
|
||||||
for(i = 0; i < max; i++)
|
|
||||||
if(modmap->modifiermap[i] == kcode)
|
|
||||||
numlock = masks[i / modmap->max_keypermod];
|
|
||||||
}
|
|
||||||
XFreeModifiermap(modmap);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To do: Find my red black tree implementation.
|
* To do: Find my red black tree implementation.
|
||||||
*/
|
*/
|
||||||
|
@ -50,7 +28,7 @@ parse_keys(char *spec) {
|
||||||
int i, nlines, nwords;
|
int i, nlines, nwords;
|
||||||
|
|
||||||
if(!numlock)
|
if(!numlock)
|
||||||
init_numlock();
|
numlock = numlockmask();
|
||||||
|
|
||||||
nlines = tokenize(lines, nelem(lines), spec, '\n');
|
nlines = tokenize(lines, nelem(lines), spec, '\n');
|
||||||
for(i=0; i < nlines; i++) {
|
for(i=0; i < nlines; i++) {
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
# pragma varargck argpos event 1
|
# pragma varargck argpos event 1
|
||||||
# pragma varargck argpos warning 1
|
# pragma varargck argpos warning 1
|
||||||
#
|
#
|
||||||
# pragma varargck type "a" Area*
|
# pragma varargck type "a" Area*
|
||||||
# pragma varargck type "C" Client*
|
# pragma varargck type "C" Client*
|
||||||
# pragma varargck type "r" void
|
# pragma varargck type "r" void
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -6,30 +6,6 @@
|
||||||
#include <X11/keysym.h>
|
#include <X11/keysym.h>
|
||||||
#include "fns.h"
|
#include "fns.h"
|
||||||
|
|
||||||
void
|
|
||||||
init_lock_keys(void) {
|
|
||||||
static int masks[] = {
|
|
||||||
ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask,
|
|
||||||
Mod3Mask, Mod4Mask, Mod5Mask
|
|
||||||
};
|
|
||||||
XModifierKeymap *modmap;
|
|
||||||
KeyCode numlock;
|
|
||||||
int i, max;
|
|
||||||
|
|
||||||
numlock_mask = 0;
|
|
||||||
modmap = XGetModifierMapping(display);
|
|
||||||
numlock = keycode("Num_Lock");
|
|
||||||
if(numlock)
|
|
||||||
if(modmap && modmap->max_keypermod > 0) {
|
|
||||||
max = nelem(masks) * modmap->max_keypermod;
|
|
||||||
for(i = 0; i < max; i++)
|
|
||||||
if(modmap->modifiermap[i] == numlock)
|
|
||||||
numlock_mask = masks[i / modmap->max_keypermod];
|
|
||||||
}
|
|
||||||
XFreeModifiermap(modmap);
|
|
||||||
valid_mask = 255 & ~(numlock_mask | LockMask);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
freekey(Key *k) {
|
freekey(Key *k) {
|
||||||
Key *n;
|
Key *n;
|
||||||
|
@ -43,7 +19,7 @@ freekey(Key *k) {
|
||||||
static void
|
static void
|
||||||
_grab(XWindow w, int keycode, uint mod) {
|
_grab(XWindow w, int keycode, uint mod) {
|
||||||
XGrabKey(display, keycode, mod, w,
|
XGrabKey(display, keycode, mod, w,
|
||||||
true, GrabModeAsync, GrabModeAsync);
|
true, GrabModeAsync, GrabModeAsync);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -66,12 +42,12 @@ ungrabkey(Key *k) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Key *
|
static Key*
|
||||||
name2key(const char *name) {
|
name2key(const char *name) {
|
||||||
Key *k;
|
Key *k;
|
||||||
|
|
||||||
for(k=key; k; k=k->lnext)
|
for(k=key; k; k=k->lnext)
|
||||||
if(!strncmp(k->name, name, sizeof k->name))
|
if(!strcmp(k->name, name))
|
||||||
return k;
|
return k;
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
@ -218,22 +194,21 @@ update_keys(void) {
|
||||||
Key *k;
|
Key *k;
|
||||||
char *l, *p;
|
char *l, *p;
|
||||||
|
|
||||||
init_lock_keys();
|
numlock_mask = numlockmask();
|
||||||
|
valid_mask = 0xff & ~(numlock_mask | LockMask);
|
||||||
while((k = key)) {
|
while((k = key)) {
|
||||||
key = key->lnext;
|
key = key->lnext;
|
||||||
ungrabkey(k);
|
ungrabkey(k);
|
||||||
freekey(k);
|
freekey(k);
|
||||||
}
|
}
|
||||||
for(l = p = def.keys; p && *p;) {
|
for(l = p = def.keys; p && *p; p++) {
|
||||||
if(*p == '\n') {
|
if(*p == '\n') {
|
||||||
*p = 0;
|
*p = 0;
|
||||||
if((k = getkey(l)))
|
if((k = getkey(l)))
|
||||||
grabkey(k);
|
grabkey(k);
|
||||||
*p = '\n';
|
*p = '\n';
|
||||||
l = ++p;
|
l = p + 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
p++;
|
|
||||||
}
|
}
|
||||||
if(l < p && strlen(l)) {
|
if(l < p && strlen(l)) {
|
||||||
if((k = getkey(l)))
|
if((k = getkey(l)))
|
||||||
|
|
|
@ -92,9 +92,9 @@ init_environment(void) {
|
||||||
setenv("WMII_ADDRESS", address, true);
|
setenv("WMII_ADDRESS", address, true);
|
||||||
else
|
else
|
||||||
address = smprint("unix!%s/wmii", ns_path);
|
address = smprint("unix!%s/wmii", ns_path);
|
||||||
setenv("WMII_CONFPATH", sxprint("%s/.wmii%s:%s/wmii%s",
|
setenv("WMII_CONFPATH",
|
||||||
getenv("HOME"), CONFVERSION,
|
sxprint("%s/.%s:%s", getenv("HOME"), CONFDIR, GLOBALCONF),
|
||||||
CONFPREFIX, CONFVERSION), true);
|
true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -398,7 +398,7 @@ main(int argc, char *argv[]) {
|
||||||
|
|
||||||
init_traps();
|
init_traps();
|
||||||
init_cursors();
|
init_cursors();
|
||||||
init_lock_keys();
|
update_keys();
|
||||||
ewmh_init();
|
ewmh_init();
|
||||||
xext_init();
|
xext_init();
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ main(int argc, char *argv[]) {
|
||||||
if(argc)
|
if(argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
|
fmtinstall('K', fmtkey);
|
||||||
initdisplay();
|
initdisplay();
|
||||||
|
|
||||||
selectinput(&scr.root, KeyPressMask|KeyReleaseMask);
|
selectinput(&scr.root, KeyPressMask|KeyReleaseMask);
|
||||||
|
@ -46,25 +47,11 @@ main(int argc, char *argv[]) {
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
kdown_event(Window *w, void *aux, XKeyEvent *ev) {
|
kdown_event(Window *w, void *aux, XKeyEvent *ev) {
|
||||||
Fmt f;
|
|
||||||
char buf[32];
|
|
||||||
char *key;
|
|
||||||
KeySym ksym;
|
|
||||||
int num;
|
|
||||||
|
|
||||||
USED(aux);
|
USED(w, aux);
|
||||||
nkeys++;
|
nkeys++;
|
||||||
num = XLookupString(ev, buf, sizeof buf, &ksym, 0);
|
|
||||||
key = XKeysymToString(ksym);
|
|
||||||
|
|
||||||
fmtstrinit(&f);
|
|
||||||
unmask(&f, ev->state, modkey_names, '-');
|
|
||||||
if(f.nfmt)
|
|
||||||
fmtrune(&f, '-');
|
|
||||||
fmtstrcpy(&f, key);
|
|
||||||
|
|
||||||
free(keyname);
|
free(keyname);
|
||||||
keyname = fmtstrflush(&f);
|
keyname = smprint("%K", ev);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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"),
|
copy of this software and associated documentation files (the "Software"),
|
||||||
to deal in the Software without restriction, including without limitation
|
to deal in the Software without restriction, including without limitation
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
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:
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
The above copyright notice and this permission notice shall be included in
|
||||||
all copies or substantial portions of the Software.
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
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
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
Original debian packaging is (C) 2005-2007, Daniel Baumann <daniel@debian.org>
|
Original debian packaging is (C) 2005-2007, Daniel Baumann <daniel@debian.org>
|
||||||
|
|
|
@ -920,7 +920,7 @@ client. The files in these directories are:
|
||||||
\item[label] The client's window title. May be written to
|
\item[label] The client's window title. May be written to
|
||||||
change the client's title.
|
change the client's title.
|
||||||
\index{filesystem!/client/*/@\clientlabel!label}
|
\index{filesystem!/client/*/@\clientlabel!label}
|
||||||
\item[tags]
|
\item[tags]
|
||||||
\index{filesystem!/client/*/@\clientlabel!tags}
|
\index{filesystem!/client/*/@\clientlabel!tags}
|
||||||
The client's tags. Tag names are separated by |+|
|
The client's tags. Tag names are separated by |+|
|
||||||
signs. Tags beginning and ending with |/| are treated as
|
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:
|
in these directories are:
|
||||||
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[ctl]
|
\item[ctl]
|
||||||
The view's control file. The properties are:
|
The view's control file. The properties are:
|
||||||
\index{filesystem!/tag/*/@\taglabel!ctl|(}
|
\index{filesystem!/tag/*/@\taglabel!ctl|(}
|
||||||
\begin{description}
|
\begin{description}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%!PS-Adobe-2.0 EPSF-1.2
|
%!PS-Adobe-2.0 EPSF-1.2
|
||||||
%%BoundingBox: -1 0 51 27
|
%%BoundingBox: -1 0 51 27
|
||||||
%%Creator: MetaPost
|
%%Creator: MetaPost
|
||||||
%%CreationDate: 2007.02.27:1944
|
%%CreationDate: 2007.02.27:1944
|
||||||
%%Pages: 1
|
%%Pages: 1
|
||||||
|
|
|
@ -18,6 +18,8 @@ extern void init_screens(void);
|
||||||
/* printevent.c */
|
/* printevent.c */
|
||||||
int fmtevent(Fmt*);
|
int fmtevent(Fmt*);
|
||||||
|
|
||||||
|
int fmtkey(Fmt*);
|
||||||
|
|
||||||
/* xext.c */
|
/* xext.c */
|
||||||
void randr_event(XEvent*);
|
void randr_event(XEvent*);
|
||||||
bool render_argb_p(Visual*);
|
bool render_argb_p(Visual*);
|
||||||
|
|
|
@ -201,7 +201,7 @@ struct Screen {
|
||||||
# pragma varargck type "A" Atom
|
# pragma varargck type "A" Atom
|
||||||
# pragma varargck type "P" Point
|
# pragma varargck type "P" Point
|
||||||
# pragma varargck type "R" Rectangle
|
# pragma varargck type "R" Rectangle
|
||||||
# pragma varargck type "W" Window*
|
# pragma varargck type "W" Window*
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Display *display;
|
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_textlist(Window*, const char*, const char*, char*[]);
|
||||||
void changeprop_ulong(Window*, const char*, const char*, ulong[], int);
|
void changeprop_ulong(Window*, const char*, const char*, ulong[], int);
|
||||||
void changeproperty(Window*, const char*, const char*, int width, const uchar*, int);
|
void changeproperty(Window*, const char*, const char*, int width, const uchar*, int);
|
||||||
|
void cleanupwindow(Window*);
|
||||||
void clientmessage(Window*, const char*, long, int, ClientMessageData);
|
void clientmessage(Window*, const char*, long, int, ClientMessageData);
|
||||||
void copyimage(Image*, Rectangle, Image*, Point);
|
void copyimage(Image*, Rectangle, Image*, Point);
|
||||||
Window* createwindow(Window*, Rectangle, int depth, uint class, WinAttr*, int valuemask);
|
Window* createwindow(Window*, Rectangle, int depth, uint class, WinAttr*, int valuemask);
|
||||||
void cleanupwindow(Window*);
|
|
||||||
Window* createwindow_visual(Window*, Rectangle, int depth, Visual*, uint class, WinAttr*, int);
|
Window* createwindow_visual(Window*, Rectangle, int depth, Visual*, uint class, WinAttr*, int);
|
||||||
void delproperty(Window*, const char*);
|
void delproperty(Window*, const char*);
|
||||||
void destroywindow(Window*);
|
void destroywindow(Window*);
|
||||||
|
@ -272,6 +272,7 @@ Font* loadfont(const char*);
|
||||||
void lowerwin(Window*);
|
void lowerwin(Window*);
|
||||||
int mapwin(Window*);
|
int mapwin(Window*);
|
||||||
void movewin(Window*, Point);
|
void movewin(Window*, Point);
|
||||||
|
int numlockmask(void);
|
||||||
bool parsecolor(const char *name, Color*);
|
bool parsecolor(const char *name, Color*);
|
||||||
bool parsekey(char*, int*, char**);
|
bool parsekey(char*, int*, char**);
|
||||||
ulong pixelvalue(Color);
|
ulong pixelvalue(Color);
|
||||||
|
|
|
@ -14,7 +14,7 @@ bcat(Biobuf *b, char *name)
|
||||||
fprint(2, "writing during %s: %r\n", name);
|
fprint(2, "writing during %s: %r\n", name);
|
||||||
}
|
}
|
||||||
if(n < 0)
|
if(n < 0)
|
||||||
fprint(2, "reading %s: %r\n", name);
|
fprint(2, "reading %s: %r\n", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -100,7 +100,7 @@ Brdstr(Biobuf *bp, int delim, int nulldelim)
|
||||||
}
|
}
|
||||||
ip += j;
|
ip += j;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* full buffer without finding; add to user string and continue
|
* full buffer without finding; add to user string and continue
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "plan9.h"
|
#include "plan9.h"
|
||||||
#include <bio.h>
|
#include <bio.h>
|
||||||
|
|
||||||
static int
|
static int
|
||||||
fmtBflush(Fmt *f)
|
fmtBflush(Fmt *f)
|
||||||
{
|
{
|
||||||
Biobuf *bp;
|
Biobuf *bp;
|
||||||
|
|
|
@ -35,22 +35,22 @@ enum
|
||||||
*/
|
*/
|
||||||
static double pows10[] =
|
static double pows10[] =
|
||||||
{
|
{
|
||||||
1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
|
1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
|
||||||
1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
|
1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
|
||||||
1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29,
|
1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29,
|
||||||
1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39,
|
1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39,
|
||||||
1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49,
|
1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49,
|
||||||
1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59,
|
1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59,
|
||||||
1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69,
|
1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69,
|
||||||
1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79,
|
1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79,
|
||||||
1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89,
|
1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89,
|
||||||
1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99,
|
1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99,
|
||||||
1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109,
|
1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109,
|
||||||
1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119,
|
1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119,
|
||||||
1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129,
|
1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129,
|
||||||
1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139,
|
1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139,
|
||||||
1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149,
|
1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149,
|
||||||
1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159,
|
1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define pow10(x) fmtpow10(x)
|
#define pow10(x) fmtpow10(x)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* 64-bit IEEE not-a-number routines.
|
* 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
|
* the 64-bit doubles and 64-bit integers have the
|
||||||
* same byte ordering.
|
* same byte ordering.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
* 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
|
* get Plan 9 debugging malloc, which sometimes returns
|
||||||
* different pointers than the standard malloc.
|
* different pointers than the standard malloc.
|
||||||
*/
|
*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
* 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
|
* get Plan 9 debugging malloc, which sometimes returns
|
||||||
* different pointers than the standard malloc.
|
* different pointers than the standard malloc.
|
||||||
*/
|
*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -110,7 +110,7 @@ regerr2(char *s, int c)
|
||||||
while(*s)
|
while(*s)
|
||||||
*cp++ = *s++;
|
*cp++ = *s++;
|
||||||
*cp++ = c;
|
*cp++ = c;
|
||||||
*cp = '\0';
|
*cp = '\0';
|
||||||
rcerror(buf);
|
rcerror(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ regsub(char *sp, /* source string */
|
||||||
*dp++ = *sp;
|
*dp++ = *sp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else if(*sp == '&'){
|
}else if(*sp == '&'){
|
||||||
if(mp[0].s.sp != 0 && mp!=0 && ms>0)
|
if(mp[0].s.sp != 0 && mp!=0 && ms>0)
|
||||||
if(mp[0].s.sp != 0)
|
if(mp[0].s.sp != 0)
|
||||||
for(ssp = mp[0].s.sp;
|
for(ssp = mp[0].s.sp;
|
||||||
|
|
|
@ -46,7 +46,7 @@ rregsub(Rune *sp, /* source string */
|
||||||
*dp++ = *sp;
|
*dp++ = *sp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else if(*sp == '&'){
|
}else if(*sp == '&'){
|
||||||
if(mp[0].s.rsp != 0 && mp!=0 && ms>0)
|
if(mp[0].s.rsp != 0 && mp!=0 && ms>0)
|
||||||
if(mp[0].s.rsp != 0)
|
if(mp[0].s.rsp != 0)
|
||||||
for(ssp = mp[0].s.rsp;
|
for(ssp = mp[0].s.rsp;
|
||||||
|
|
|
@ -7,6 +7,6 @@ void
|
||||||
event_clientmessage(XClientMessageEvent *ev) {
|
event_clientmessage(XClientMessageEvent *ev) {
|
||||||
Window *w;
|
Window *w;
|
||||||
|
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, message, ev);
|
event_handle(w, message, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,6 @@ void
|
||||||
event_destroynotify(XDestroyWindowEvent *ev) {
|
event_destroynotify(XDestroyWindowEvent *ev) {
|
||||||
Window *w;
|
Window *w;
|
||||||
|
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, destroy, ev);
|
event_handle(w, destroy, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,6 @@ event_enternotify(XCrossingEvent *ev) {
|
||||||
if(ev->mode != NotifyNormal)
|
if(ev->mode != NotifyNormal)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, enter, ev);
|
event_handle(w, enter, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,6 @@ void
|
||||||
event_expose(XExposeEvent *ev) {
|
event_expose(XExposeEvent *ev) {
|
||||||
Window *w;
|
Window *w;
|
||||||
|
|
||||||
if(ev->count == 0 && (w = findwin(ev->window)))
|
if(ev->count == 0 && (w = findwin(ev->window)))
|
||||||
event_handle(w, expose, ev);
|
event_handle(w, expose, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,6 @@ event_focusin(XFocusChangeEvent *ev) {
|
||||||
if((ev->mode == NotifyWhileGrabbed))
|
if((ev->mode == NotifyWhileGrabbed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, focusin, ev);
|
event_handle(w, focusin, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,6 @@ event_focusout(XFocusChangeEvent *ev) {
|
||||||
||(ev->detail == NotifyAncestor)))
|
||(ev->detail == NotifyAncestor)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, focusout, ev);
|
event_handle(w, focusout, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,6 @@ event_leavenotify(XCrossingEvent *ev) {
|
||||||
|
|
||||||
if(!ev->send_event)
|
if(!ev->send_event)
|
||||||
event_xtime = ev->time;
|
event_xtime = ev->time;
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, leave, ev);
|
event_handle(w, leave, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,6 @@ event_propertynotify(XPropertyEvent *ev) {
|
||||||
|
|
||||||
if(!ev->send_event)
|
if(!ev->send_event)
|
||||||
event_xtime = ev->time;
|
event_xtime = ev->time;
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, property, ev);
|
event_handle(w, property, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ event_selection(XSelectionEvent *ev) {
|
||||||
|
|
||||||
if(!ev->send_event)
|
if(!ev->send_event)
|
||||||
event_xtime = ev->time;
|
event_xtime = ev->time;
|
||||||
if((w = findwin(ev->requestor)))
|
if((w = findwin(ev->requestor)))
|
||||||
event_handle(w, selection, ev);
|
event_handle(w, selection, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,6 @@ event_selectionclear(XSelectionClearEvent *ev) {
|
||||||
|
|
||||||
if(!ev->send_event)
|
if(!ev->send_event)
|
||||||
event_xtime = ev->time;
|
event_xtime = ev->time;
|
||||||
if((w = findwin(ev->window)))
|
if((w = findwin(ev->window)))
|
||||||
event_handle(w, selectionclear, ev);
|
event_handle(w, selectionclear, ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ event_selectionrequest(XSelectionRequestEvent *ev) {
|
||||||
|
|
||||||
if(!ev->send_event)
|
if(!ev->send_event)
|
||||||
event_xtime = ev->time;
|
event_xtime = ev->time;
|
||||||
if((w = findwin(ev->owner)))
|
if((w = findwin(ev->owner)))
|
||||||
event_handle(w, selectionrequest, ev);
|
event_handle(w, selectionrequest, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -19,7 +19,7 @@ MapEnt *NM;
|
||||||
static ulong
|
static ulong
|
||||||
hash(const char *str) {
|
hash(const char *str) {
|
||||||
ulong h;
|
ulong h;
|
||||||
|
|
||||||
h = 5381;
|
h = 5381;
|
||||||
while (*str != '\0') {
|
while (*str != '\0') {
|
||||||
h += h << 5; /* h *= 33 */
|
h += h << 5; /* h *= 33 */
|
||||||
|
@ -31,7 +31,7 @@ hash(const char *str) {
|
||||||
static void
|
static void
|
||||||
insert(Map *m, MapEnt **e, ulong val, const char *key) {
|
insert(Map *m, MapEnt **e, ulong val, const char *key) {
|
||||||
MapEnt *te;
|
MapEnt *te;
|
||||||
|
|
||||||
m->nmemb++;
|
m->nmemb++;
|
||||||
te = emallocz(sizeof *te);
|
te = emallocz(sizeof *te);
|
||||||
te->hash = val;
|
te->hash = val;
|
||||||
|
@ -61,7 +61,7 @@ hash_getp(Map *map, const char *str, int create) {
|
||||||
MapEnt **e;
|
MapEnt **e;
|
||||||
ulong h;
|
ulong h;
|
||||||
int cmp;
|
int cmp;
|
||||||
|
|
||||||
h = hash(str);
|
h = hash(str);
|
||||||
e = map_getp(map, h, create);
|
e = map_getp(map, h, create);
|
||||||
if(*e && (*e)->key == nil)
|
if(*e && (*e)->key == nil)
|
||||||
|
@ -81,7 +81,7 @@ hash_getp(Map *map, const char *str, int create) {
|
||||||
void**
|
void**
|
||||||
map_get(Map *map, ulong val, bool create) {
|
map_get(Map *map, ulong val, bool create) {
|
||||||
MapEnt *e;
|
MapEnt *e;
|
||||||
|
|
||||||
e = *map_getp(map, val, create);
|
e = *map_getp(map, val, create);
|
||||||
return e ? &e->val : nil;
|
return e ? &e->val : nil;
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ map_get(Map *map, ulong val, bool create) {
|
||||||
void**
|
void**
|
||||||
hash_get(Map *map, const char *str, bool create) {
|
hash_get(Map *map, const char *str, bool create) {
|
||||||
MapEnt *e;
|
MapEnt *e;
|
||||||
|
|
||||||
e = *hash_getp(map, str, create);
|
e = *hash_getp(map, str, create);
|
||||||
return e ? &e->val : nil;
|
return e ? &e->val : nil;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ void*
|
||||||
map_rm(Map *map, ulong val) {
|
map_rm(Map *map, ulong val) {
|
||||||
MapEnt **e, *te;
|
MapEnt **e, *te;
|
||||||
void *ret;
|
void *ret;
|
||||||
|
|
||||||
ret = nil;
|
ret = nil;
|
||||||
e = map_getp(map, val, 0);
|
e = map_getp(map, val, 0);
|
||||||
if(*e) {
|
if(*e) {
|
||||||
|
@ -115,7 +115,7 @@ void*
|
||||||
hash_rm(Map *map, const char *str) {
|
hash_rm(Map *map, const char *str) {
|
||||||
MapEnt **e, *te;
|
MapEnt **e, *te;
|
||||||
void *ret;
|
void *ret;
|
||||||
|
|
||||||
ret = nil;
|
ret = nil;
|
||||||
e = hash_getp(map, str, 0);
|
e = hash_getp(map, str, 0);
|
||||||
if(*e) {
|
if(*e) {
|
||||||
|
|
|
@ -10,11 +10,11 @@
|
||||||
* readable form, Part01/01 Message-ID: <1935@wyse.wyse.com> Date: 22 Dec 88
|
* 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:
|
* 19:28:25 GMT Organization: Wyse Technology, San Jose Lines: 1093 Approved:
|
||||||
* mikew@wyse.com
|
* mikew@wyse.com
|
||||||
*
|
*
|
||||||
* Submitted-by: richsun!darkstar!ken Posting-number: Volume 2, Issue 56
|
* Submitted-by: richsun!darkstar!ken Posting-number: Volume 2, Issue 56
|
||||||
* Archive-name: showevent/part01
|
* Archive-name: showevent/part01
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* There are times during debugging when it would be real useful to be able to
|
* 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
|
* 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
|
* 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 -
|
* 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
|
* 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.
|
* like this, they just want to have them when they need them.
|
||||||
*
|
*
|
||||||
* A simple, sample program is included which does little else but to
|
* A simple, sample program is included which does little else but to
|
||||||
* demonstrate the use of these two functions. These functions have saved me
|
* 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.
|
* 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
|
* 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:
|
* blithering errors you can get it touch with me at the following location:
|
||||||
*
|
*
|
||||||
* ken@richsun.UUCP
|
* ken@richsun.UUCP
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -931,7 +931,7 @@ struct Handler {
|
||||||
int (*fn)(Fmt*, XEvent*);
|
int (*fn)(Fmt*, XEvent*);
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
fmtevent(Fmt *fmt) {
|
fmtevent(Fmt *fmt) {
|
||||||
XEvent *e;
|
XEvent *e;
|
||||||
XAnyEvent *ev;
|
XAnyEvent *ev;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
char*
|
char*
|
||||||
estrndup(const char *str, uint len) {
|
estrndup(const char *str, uint len) {
|
||||||
char *ret;
|
char *ret;
|
||||||
|
|
||||||
len = min(len, strlen(str));
|
len = min(len, strlen(str));
|
||||||
ret = emalloc(len + 1);
|
ret = emalloc(len + 1);
|
||||||
memcpy(ret, str, len);
|
memcpy(ret, str, len);
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stuff/util.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
|
int
|
||||||
getbase(const char **s, long *sign) {
|
getbase(const char **s, long *sign) {
|
||||||
const char *p;
|
const char *p;
|
||||||
|
|
|
@ -22,4 +22,4 @@ strcasestr(const char *dst, const char *src) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
int
|
int
|
||||||
utflcpy(char *to, const char *from, int l) {
|
utflcpy(char *to, const char *from, int l) {
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
p = utfecpy(to, to+l, from);
|
p = utfecpy(to, to+l, from);
|
||||||
return p-to;
|
return p-to;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ XPoint*
|
||||||
convpts(Point *pt, int np) {
|
convpts(Point *pt, int np) {
|
||||||
XPoint *rp;
|
XPoint *rp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
rp = emalloc(np * sizeof *rp);
|
rp = emalloc(np * sizeof *rp);
|
||||||
for(i = 0; i < np; i++) {
|
for(i = 0; i < np; i++) {
|
||||||
rp[i].x = pt[i].x;
|
rp[i].x = pt[i].x;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
void
|
void
|
||||||
drawpoly(Image *dst, Point *pt, int np, int cap, int w, Color col) {
|
drawpoly(Image *dst, Point *pt, int np, int cap, int w, Color col) {
|
||||||
XPoint *xp;
|
XPoint *xp;
|
||||||
|
|
||||||
xp = convpts(pt, np);
|
xp = convpts(pt, np);
|
||||||
XSetLineAttributes(display, dst->gc, w, LineSolid, cap, JoinMiter);
|
XSetLineAttributes(display, dst->gc, w, LineSolid, cap, JoinMiter);
|
||||||
setgccol(dst, col);
|
setgccol(dst, col);
|
||||||
|
|
|
@ -32,11 +32,10 @@ errorhandler(Display *dpy, XErrorEvent *error) {
|
||||||
|
|
||||||
int
|
int
|
||||||
traperrors(bool enable) {
|
traperrors(bool enable) {
|
||||||
|
|
||||||
sync();
|
sync();
|
||||||
_trap_errors = enable;
|
_trap_errors = enable;
|
||||||
if (enable)
|
if (enable)
|
||||||
nerrors = 0;
|
nerrors = 0;
|
||||||
return nerrors;
|
return nerrors;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,16 +55,16 @@ initdisplay(void) {
|
||||||
scr.visual32 = DefaultVisual(display, scr.screen);
|
scr.visual32 = DefaultVisual(display, scr.screen);
|
||||||
scr.gc = DefaultGC(display, scr.screen);
|
scr.gc = DefaultGC(display, scr.screen);
|
||||||
scr.depth = DefaultDepth(display, scr.screen);
|
scr.depth = DefaultDepth(display, scr.screen);
|
||||||
|
|
||||||
scr.white = WhitePixel(display, scr.screen);
|
scr.white = WhitePixel(display, scr.screen);
|
||||||
scr.black = BlackPixel(display, scr.screen);
|
scr.black = BlackPixel(display, scr.screen);
|
||||||
|
|
||||||
scr.root.xid = RootWindow(display, scr.screen);
|
scr.root.xid = RootWindow(display, scr.screen);
|
||||||
scr.root.r = Rect(0, 0,
|
scr.root.r = Rect(0, 0,
|
||||||
DisplayWidth(display, scr.screen),
|
DisplayWidth(display, scr.screen),
|
||||||
DisplayHeight(display, scr.screen));
|
DisplayHeight(display, scr.screen));
|
||||||
scr.rect = scr.root.r;
|
scr.rect = scr.root.r;
|
||||||
|
|
||||||
scr.root.parent = &scr.root;
|
scr.root.parent = &scr.root;
|
||||||
|
|
||||||
windowmap.bucket = wbucket;
|
windowmap.bucket = wbucket;
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
*/
|
*/
|
||||||
#include "../x11.h"
|
#include "../x11.h"
|
||||||
|
|
||||||
typedef struct KMask KMask;
|
|
||||||
|
|
||||||
char *modkey_names[] = {
|
char *modkey_names[] = {
|
||||||
"Shift",
|
"Shift",
|
||||||
"",
|
"",
|
||||||
|
@ -41,3 +39,43 @@ parsekey(char *str, int *mask, char **key) {
|
||||||
else
|
else
|
||||||
return i == nkeys;
|
return i == nkeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
numlockmask(void) {
|
||||||
|
static int masks[] = {
|
||||||
|
ShiftMask, LockMask, ControlMask, Mod1Mask,
|
||||||
|
Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
|
||||||
|
};
|
||||||
|
XModifierKeymap *modmap;
|
||||||
|
KeyCode kcode;
|
||||||
|
int i, max, numlock;
|
||||||
|
|
||||||
|
numlock = 0;
|
||||||
|
modmap = XGetModifierMapping(display);
|
||||||
|
kcode = keycode("Num_Lock");
|
||||||
|
if(kcode && modmap && modmap->max_keypermod > 0) {
|
||||||
|
max = nelem(masks) * modmap->max_keypermod;
|
||||||
|
for(i = 0; i < max && !numlock; i++)
|
||||||
|
if(modmap->modifiermap[i] == kcode)
|
||||||
|
numlock = masks[i / modmap->max_keypermod];
|
||||||
|
}
|
||||||
|
XFreeModifiermap(modmap);
|
||||||
|
return numlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
fmtkey(Fmt *f) {
|
||||||
|
XKeyEvent *ev;
|
||||||
|
char *key;
|
||||||
|
int nfmt;
|
||||||
|
|
||||||
|
ev = va_arg(f->args, XKeyEvent*);
|
||||||
|
key = XKeysymToString(XKeycodeToKeysym(display, ev->keycode, 0));
|
||||||
|
|
||||||
|
nfmt = f->nfmt;
|
||||||
|
unmask(f, ev->state, modkey_names, '-');
|
||||||
|
if(f->nfmt > nfmt)
|
||||||
|
fmtrune(f, '-');
|
||||||
|
return fmtstrcpy(f, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
int
|
int
|
||||||
grabpointer(Window *w, Window *confine, Cursor cur, int mask) {
|
grabpointer(Window *w, Window *confine, Cursor cur, int mask) {
|
||||||
XWindow cw;
|
XWindow cw;
|
||||||
|
|
||||||
cw = None;
|
cw = None;
|
||||||
if(confine)
|
if(confine)
|
||||||
cw = confine->xid;
|
cw = confine->xid;
|
||||||
|
|
|
@ -9,7 +9,7 @@ pointerscreen(void) {
|
||||||
Point pt;
|
Point pt;
|
||||||
uint ui;
|
uint ui;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
return XQueryPointer(display, scr.root.xid, &win, &win, &i, &i,
|
return XQueryPointer(display, scr.root.xid, &win, &win, &i, &i,
|
||||||
&pt.x, &pt.y, &ui);
|
&pt.x, &pt.y, &ui);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ querypointer(Window *w) {
|
||||||
Point pt;
|
Point pt;
|
||||||
uint ui;
|
uint ui;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
XQueryPointer(display, w->xid, &win, &win, &i, &i, &pt.x, &pt.y, &ui);
|
XQueryPointer(display, w->xid, &win, &win, &i, &i, &pt.x, &pt.y, &ui);
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ Window*
|
||||||
findwin(XWindow xw) {
|
findwin(XWindow xw) {
|
||||||
Window *w;
|
Window *w;
|
||||||
void **e;
|
void **e;
|
||||||
|
|
||||||
e = map_get(&windowmap, (ulong)xw, false);
|
e = map_get(&windowmap, (ulong)xw, false);
|
||||||
if(e) {
|
if(e) {
|
||||||
w = *e;
|
w = *e;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
Atom
|
Atom
|
||||||
xatom(const char *name) {
|
xatom(const char *name) {
|
||||||
void **e, **f;
|
void **e, **f;
|
||||||
|
|
||||||
e = hash_get(&atommap, name, true);
|
e = hash_get(&atommap, name, true);
|
||||||
if(*e == nil) {
|
if(*e == nil) {
|
||||||
*e = (void*)XInternAtom(display, name, false);
|
*e = (void*)XInternAtom(display, name, false);
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
#include <plan9.h>
|
#include <plan9.h>
|
||||||
|
|
||||||
Rune*
|
Rune*
|
||||||
runestrdup(const Rune *s)
|
runestrdup(const Rune *s)
|
||||||
{
|
{
|
||||||
Rune *ns;
|
Rune *ns;
|
||||||
|
|
||||||
ns = malloc(sizeof(Rune)*(runestrlen(s) + 1));
|
ns = malloc(sizeof(Rune)*(runestrlen(s) + 1));
|
||||||
|
|
|
@ -9,7 +9,7 @@ static Atom
|
||||||
xatom(Display *display, char *name) {
|
xatom(Display *display, char *name) {
|
||||||
/* Blech. I don't trust Xlib's cacheing.
|
/* Blech. I don't trust Xlib's cacheing.
|
||||||
MapEnt *e;
|
MapEnt *e;
|
||||||
|
|
||||||
e = hash_get(&amap, name, 1);
|
e = hash_get(&amap, name, 1);
|
||||||
if(e->val == nil)
|
if(e->val == nil)
|
||||||
e->val = (void*)XInternAtom(display, name, False);
|
e->val = (void*)XInternAtom(display, name, False);
|
||||||
|
|
15
man/wmii.1
15
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
|
unix!/tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
which opens a unix socket per Plan 9 Port conventions. To
|
which opens a unix socket per Plan 9 Port conventions. To
|
||||||
open a TCP socket, listening at port 4332 on the loopback
|
open a TCP socket, listening at port 4332 on the loopback
|
||||||
interface, use:
|
interface, use:
|
||||||
|
@ -60,7 +59,6 @@ interface, use:
|
||||||
tcp!localhost!4332
|
tcp!localhost!4332
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
\fB$WMII_NAMESPACE\fR is automatically set to this value.
|
\fB$WMII_NAMESPACE\fR is automatically set to this value.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
@ -265,14 +263,12 @@ Rules have the form:
|
||||||
/\fI<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR*
|
/\fI<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR*
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
Where,
|
Where,
|
||||||
|
|
||||||
.nf
|
.nf
|
||||||
\fI<width>\fR := \fI<percent of screen>\fR | \fI<pixels>\fRpx
|
\fI<width>\fR := \fI<percent of screen>\fR | \fI<pixels>\fRpx
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
When a new column, \fI<n>\fR, is created on a view whose name
|
When a new column, \fI<n>\fR, is created on a view whose name
|
||||||
matches \fI<regex>\fR, it is given the \fI<n>\fRth supplied \fI<width>\fR.
|
matches \fI<regex>\fR, it is given the \fI<n>\fRth supplied \fI<width>\fR.
|
||||||
If there is no \fI<n>\fRth width, it is given 1/\fI<ncol>\fRth of the
|
If there is no \fI<n>\fRth width, it is given 1/\fI<ncol>\fRth of the
|
||||||
|
@ -290,7 +286,6 @@ specified as:
|
||||||
/\fI<regex>\fR/ \fI<key>\fR=\fI<value>\fR ...
|
/\fI<regex>\fR/ \fI<key>\fR=\fI<value>\fR ...
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
where each \fI<key>\fR represents a command in the clients \fIctl\fR
|
where each \fI<key>\fR represents a command in the clients \fIctl\fR
|
||||||
file, and each \fI<value>\fR represents the value to assign to it.
|
file, and each \fI<value>\fR represents the value to assign to it.
|
||||||
The rules are applied when the client is first started and
|
The rules are applied when the client is first started and
|
||||||
|
@ -405,7 +400,9 @@ attached to a new view. Ordinarilly, the value
|
||||||
changes automatically whenever the window is
|
changes automatically whenever the window is
|
||||||
moved between the floating and managed layers.
|
moved between the floating and managed layers.
|
||||||
However, setting a value of \fIalways\fR or \fInever\fR
|
However, setting a value of \fIalways\fR or \fInever\fR
|
||||||
overrides this behavior.
|
overrides this behavior. Additionally, dialogs,
|
||||||
|
menus, docks, and splash screens will always
|
||||||
|
float unless this value is set to \fInever\fR.
|
||||||
.TP
|
.TP
|
||||||
fullscreen \fI<on | off | toggle>\fR
|
fullscreen \fI<on | off | toggle>\fR
|
||||||
Sets the client's fullscreen state.
|
Sets the client's fullscreen state.
|
||||||
|
@ -519,7 +516,6 @@ Selects a column or the floating area.
|
||||||
area ::= \fI<area_spec>\fR | \fI<screen_spec>\fR:\fI<area_spec>\fR
|
area ::= \fI<area_spec>\fR | \fI<screen_spec>\fR:\fI<area_spec>\fR
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
When \fI<screen_spec>\fR is omitted and \fI<area_spec>\fR is not "sel",
|
When \fI<screen_spec>\fR is omitted and \fI<area_spec>\fR is not "sel",
|
||||||
0 is assumed. "sel" by itself represents the selected client no
|
0 is assumed. "sel" by itself represents the selected client no
|
||||||
matter which screen it is on.
|
matter which screen it is on.
|
||||||
|
@ -528,7 +524,6 @@ matter which screen it is on.
|
||||||
area_spec ::= "~" | \fI<number>\fR | "sel"
|
area_spec ::= "~" | \fI<number>\fR | "sel"
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
Where "~" represents the floating area and \fI<number>\fR represents a column
|
Where "~" represents the floating area and \fI<number>\fR represents a column
|
||||||
index, starting at one.
|
index, starting at one.
|
||||||
|
|
||||||
|
@ -536,7 +531,6 @@ index, starting at one.
|
||||||
screen_spec ::= \fI<number>\fR
|
screen_spec ::= \fI<number>\fR
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
Where \fI<number>\fR representes the 0\-based Xinerama screen number.
|
Where \fI<number>\fR representes the 0\-based Xinerama screen number.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
@ -547,7 +541,6 @@ Selects a client window.
|
||||||
frame ::= \fI<area>\fR \fI<index>\fR | \fI<area>\fR sel | client \fI<window-id>\fR
|
frame ::= \fI<area>\fR \fI<index>\fR | \fI<area>\fR sel | client \fI<window-id>\fR
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
Where \fI<index>\fR represents the nth frame of \fI<area>\fR or \fI<window\-id>\fR is
|
Where \fI<index>\fR represents the nth frame of \fI<area>\fR or \fI<window\-id>\fR is
|
||||||
the X11 window id of the given client.
|
the X11 window id of the given client.
|
||||||
|
|
||||||
|
@ -559,7 +552,6 @@ The amount to grow or nudge something.
|
||||||
amount ::= \fI<number>\fR | \fI<number>\fRpx
|
amount ::= \fI<number>\fR | \fI<number>\fRpx
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
|
|
||||||
If "px" is given, \fI<number>\fR is interperated as an exact pixel count.
|
If "px" is given, \fI<number>\fR is interperated as an exact pixel count.
|
||||||
Otherwise, it's interperated as a "reasonable" amount, which is
|
Otherwise, it's interperated as a "reasonable" amount, which is
|
||||||
usually either the height of a window's title bar, or its sizing
|
usually either the height of a window's title bar, or its sizing
|
||||||
|
@ -624,6 +616,7 @@ The namespace directory to use if no address is provided.
|
||||||
wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1)
|
wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1)
|
||||||
.P
|
.P
|
||||||
@DOCDIR@/wmii.pdf
|
@DOCDIR@/wmii.pdf
|
||||||
|
@DOCDIR@/FAQ
|
||||||
|
|
||||||
.P
|
.P
|
||||||
\fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips
|
\fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips
|
||||||
|
|
|
@ -50,13 +50,11 @@ of the core window manager.
|
||||||
`<protocol>!<address>`. The default is of the form:
|
`<protocol>!<address>`. The default is of the form:
|
||||||
|
|
||||||
``` unix!/tmp/ns.$USER.${DISPLAY%.0}/wmii
|
``` unix!/tmp/ns.$USER.${DISPLAY%.0}/wmii
|
||||||
|
|
||||||
which opens a unix socket per Plan 9 Port conventions. To
|
which opens a unix socket per Plan 9 Port conventions. To
|
||||||
open a TCP socket, listening at port 4332 on the loopback
|
open a TCP socket, listening at port 4332 on the loopback
|
||||||
interface, use:
|
interface, use:
|
||||||
|
|
||||||
``` tcp!localhost!4332
|
``` tcp!localhost!4332
|
||||||
|
|
||||||
$WMII_NAMESPACE is automatically set to this value.
|
$WMII_NAMESPACE is automatically set to this value.
|
||||||
|
|
||||||
: -r <wmiirc>
|
: -r <wmiirc>
|
||||||
|
@ -232,11 +230,9 @@ follows.
|
||||||
Rules have the form:
|
Rules have the form:
|
||||||
|
|
||||||
``` /<regex>/ -> <width>[+<width>]*
|
``` /<regex>/ -> <width>[+<width>]*
|
||||||
|
|
||||||
Where,
|
Where,
|
||||||
|
|
||||||
``` <width> := <percent of screen> | <pixels>px
|
``` <width> := <percent of screen> | <pixels>px
|
||||||
|
|
||||||
When a new column, <n>, is created on a view whose name
|
When a new column, <n>, is created on a view whose name
|
||||||
matches <regex>, it is given the <n>th supplied <width>.
|
matches <regex>, it is given the <n>th supplied <width>.
|
||||||
If there is no <n>th width, it is given 1/<ncol>th of the
|
If there is no <n>th width, it is given 1/<ncol>th of the
|
||||||
|
@ -250,7 +246,6 @@ follows.
|
||||||
specified as:
|
specified as:
|
||||||
|
|
||||||
``` /<regex>/ <key>=<value> ...
|
``` /<regex>/ <key>=<value> ...
|
||||||
|
|
||||||
where each <key> represents a command in the clients _ctl_
|
where each <key> represents a command in the clients _ctl_
|
||||||
file, and each <value> represents the value to assign to it.
|
file, and each <value> represents the value to assign to it.
|
||||||
The rules are applied when the client is first started and
|
The rules are applied when the client is first started and
|
||||||
|
@ -351,7 +346,9 @@ represents the currently selected client.
|
||||||
changes automatically whenever the window is
|
changes automatically whenever the window is
|
||||||
moved between the floating and managed layers.
|
moved between the floating and managed layers.
|
||||||
However, setting a value of _always_ or _never_
|
However, setting a value of _always_ or _never_
|
||||||
overrides this behavior.
|
overrides this behavior. Additionally, dialogs,
|
||||||
|
menus, docks, and splash screens will always
|
||||||
|
float unless this value is set to _never_.
|
||||||
: fullscreen <on | off | toggle>
|
: fullscreen <on | off | toggle>
|
||||||
Sets the client's fullscreen state.
|
Sets the client's fullscreen state.
|
||||||
: group <group id>
|
: group <group id>
|
||||||
|
@ -375,7 +372,7 @@ represents the currently selected client.
|
||||||
: urgent <on | off | toggle>
|
: urgent <on | off | toggle>
|
||||||
Set or unset the client's urgent hint.
|
Set or unset the client's urgent hint.
|
||||||
<<
|
<<
|
||||||
|
|
||||||
: label
|
: label
|
||||||
Set or read a client's label (title).
|
Set or read a client's label (title).
|
||||||
: props
|
: props
|
||||||
|
@ -435,25 +432,21 @@ all of the clients with the given tag applied. The special
|
||||||
Selects a column or the floating area.
|
Selects a column or the floating area.
|
||||||
|
|
||||||
``` area ::= <area_spec> | <screen_spec>:<area_spec>
|
``` area ::= <area_spec> | <screen_spec>:<area_spec>
|
||||||
|
|
||||||
When <screen_spec> is omitted and <area_spec> is not "sel",
|
When <screen_spec> is omitted and <area_spec> is not "sel",
|
||||||
0 is assumed. "sel" by itself represents the selected client no
|
0 is assumed. "sel" by itself represents the selected client no
|
||||||
matter which screen it is on.
|
matter which screen it is on.
|
||||||
|
|
||||||
``` area_spec ::= "~" | <number> | "sel"
|
``` area_spec ::= "~" | <number> | "sel"
|
||||||
|
|
||||||
Where "~" represents the floating area and <number> represents a column
|
Where "~" represents the floating area and <number> represents a column
|
||||||
index, starting at one.
|
index, starting at one.
|
||||||
|
|
||||||
``` screen_spec ::= <number>
|
``` screen_spec ::= <number>
|
||||||
|
|
||||||
Where <number> representes the 0-based Xinerama screen number.
|
Where <number> representes the 0-based Xinerama screen number.
|
||||||
|
|
||||||
: frame
|
: frame
|
||||||
Selects a client window.
|
Selects a client window.
|
||||||
|
|
||||||
``` frame ::= <area> <index> | <area> sel | client <window-id>
|
``` frame ::= <area> <index> | <area> sel | client <window-id>
|
||||||
|
|
||||||
Where <index> represents the nth frame of <area> or <window-id> is
|
Where <index> represents the nth frame of <area> or <window-id> is
|
||||||
the X11 window id of the given client.
|
the X11 window id of the given client.
|
||||||
|
|
||||||
|
@ -461,7 +454,6 @@ all of the clients with the given tag applied. The special
|
||||||
The amount to grow or nudge something.
|
The amount to grow or nudge something.
|
||||||
|
|
||||||
``` amount ::= <number> | <number>px
|
``` amount ::= <number> | <number>px
|
||||||
|
|
||||||
If "px" is given, <number> is interperated as an exact pixel count.
|
If "px" is given, <number> is interperated as an exact pixel count.
|
||||||
Otherwise, it's interperated as a "reasonable" amount, which is
|
Otherwise, it's interperated as a "reasonable" amount, which is
|
||||||
usually either the height of a window's title bar, or its sizing
|
usually either the height of a window's title bar, or its sizing
|
||||||
|
@ -517,6 +509,7 @@ thus can be used in actions:
|
||||||
= SEE ALSO =
|
= SEE ALSO =
|
||||||
wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) +
|
wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) +
|
||||||
@DOCDIR@/wmii.pdf
|
@DOCDIR@/wmii.pdf
|
||||||
|
@DOCDIR@/FAQ
|
||||||
|
|
||||||
[1] http://www.suckless.org/wiki/wmii/tips/9p_tips +
|
[1] http://www.suckless.org/wiki/wmii/tips/9p_tips +
|
||||||
[2] @DOCDIR@/wmii.pdf
|
[2] @DOCDIR@/wmii.pdf
|
||||||
|
|
|
@ -2,7 +2,7 @@ PTARG = $(ROOT)/lib/$(TARG)
|
||||||
LIB = $(PTARG).a
|
LIB = $(PTARG).a
|
||||||
OFILES = $(OBJ:=.o)
|
OFILES = $(OBJ:=.o)
|
||||||
|
|
||||||
all: $(HFILES) $(LIB)
|
all: $(HFILES) $(LIB)
|
||||||
|
|
||||||
install: $(PTARG).install
|
install: $(PTARG).install
|
||||||
uninstall: $(PTARG).uninstall
|
uninstall: $(PTARG).uninstall
|
||||||
|
|
2
mk/so.mk
2
mk/so.mk
|
@ -3,7 +3,7 @@ SO = $(SOPTARG).$(SOEXT)
|
||||||
SONAME = $(TARG).$(SOEXT)
|
SONAME = $(TARG).$(SOEXT)
|
||||||
OFILES_PIC = $(OBJ:=.o_pic)
|
OFILES_PIC = $(OBJ:=.o_pic)
|
||||||
|
|
||||||
all: $(HFILES) $(SO)
|
all: $(HFILES) $(SO)
|
||||||
|
|
||||||
install: $(SOPTARG).install
|
install: $(SOPTARG).install
|
||||||
uninstall: $(SOPTARG).uninstall
|
uninstall: $(SOPTARG).uninstall
|
||||||
|
|
17
mk/wmii.mk
17
mk/wmii.mk
|
@ -1,26 +1,31 @@
|
||||||
|
|
||||||
VERS = hg$$(hg identify -n)
|
VERS = hg$$(hg identify -n)
|
||||||
VERS = $$(test -n "$$WMII_HGVERSION" && echo $$WMII_HGVERSION || \
|
VERS = $$(test -n "$$WMII_HGVERSION" && echo $$WMII_HGVERSION || \
|
||||||
hg log -r $$(hg id 2>/dev/null | awk -F'[+ ]' '{print $$1}') --template 'hg{rev}' 2>/dev/null)
|
echo -n "hg$$(hg id -n 2>/dev/null)")
|
||||||
|
|
||||||
WMII_HGVERSION = $(VERS)
|
WMII_HGVERSION = $(VERS)
|
||||||
WMII_HGVERSION := $(shell echo $(VERS))
|
WMII_HGVERSION := $(shell echo $(VERS))
|
||||||
WMII_HGVERSION != echo $(VERS)
|
WMII_HGVERSION != echo $(VERS)
|
||||||
VERSION = $(WMII_HGVERSION)
|
VERSION = $(WMII_HGVERSION)
|
||||||
CONFVERSION = -hg
|
|
||||||
COPYRIGHT = ©2010 Kris Maglione
|
COPYRIGHT = ©2010 Kris Maglione
|
||||||
|
|
||||||
|
CONFDIR = wmii-hg
|
||||||
|
LOCALCONF = ~/.$(CONFDIR)
|
||||||
|
GLOBALCONF = $(ETC)/$(CONFDIR)
|
||||||
|
|
||||||
.MAKE.EXPORTED += WMII_HGVERSION
|
.MAKE.EXPORTED += WMII_HGVERSION
|
||||||
SUBMAKE_EXPORT = WMII_HGVERSION=$(WMII_HGVERSION)
|
SUBMAKE_EXPORT = WMII_HGVERSION=$(WMII_HGVERSION)
|
||||||
|
|
||||||
LIBS9 = $(ROOT)/lib/libstuff.a $(ROOT)/lib/libregexp9.a $(ROOT)/lib/libbio.a $(ROOT)/lib/libfmt.a $(ROOT)/lib/libutf.a
|
LIBS9 = $(ROOT)/lib/libstuff.a $(ROOT)/lib/libregexp9.a $(ROOT)/lib/libbio.a $(ROOT)/lib/libfmt.a $(ROOT)/lib/libutf.a
|
||||||
|
|
||||||
CFLAGS += '-DVERSION=\"$(VERSION)\"' '-DCOPYRIGHT=\"$(COPYRIGHT)\"' \
|
CFLAGS += '-DVERSION=\"$(VERSION)\"' '-DCOPYRIGHT=\"$(COPYRIGHT)\"' \
|
||||||
'-DCONFVERSION=\"$(CONFVERSION)\"' '-DCONFPREFIX=\"$(ETC)\"'
|
'-DCONFDIR=\"$(CONFDIR)\"' '-DCONFPREFIX=\"$(ETC)\"' \
|
||||||
|
'-DLOCALCONF=\"$(LOCALCONF)\"' '-DGLOBALCONF=\"$(GLOBALCONF)\"'
|
||||||
|
|
||||||
FILTER = sed "s|@CONFPREFIX@|$(ETC)|g; \
|
FILTER = sed "s|@CONFPREFIX@|$(ETC)|g; \
|
||||||
s|@GLOBALCONF@|$(ETC)/wmii$(CONFVERSION)|g; \
|
s|@GLOBALCONF@|$(GLOBALCONF)|g; \
|
||||||
s|@LOCALCONF@|~/.wmii$(CONFVERSION)|g; \
|
s|@LOCALCONF@|$(LOCALCONF)|g; \
|
||||||
s|@CONFVERSION@|$(CONFVERSION)|g; \
|
s|@CONFDIR@|$(CONFDIR)|g; \
|
||||||
s|@DOCDIR@|$(DOC)|g; \
|
s|@DOCDIR@|$(DOC)|g; \
|
||||||
s|@ALTDOC@|$(DOC)/alternative_wmiircs|g; \
|
s|@ALTDOC@|$(DOC)/alternative_wmiircs|g; \
|
||||||
s|@EXAMPLES@|$(DOC)/examples|g; \
|
s|@EXAMPLES@|$(DOC)/examples|g; \
|
||||||
|
|
|
@ -2,7 +2,7 @@ ROOT=..
|
||||||
include $(ROOT)/mk/hdr.mk
|
include $(ROOT)/mk/hdr.mk
|
||||||
include $(ROOT)/mk/wmii.mk
|
include $(ROOT)/mk/wmii.mk
|
||||||
|
|
||||||
BIN = $(ETC)/wmii$(CONFVERSION)
|
BIN = $(GLOBALCONF)
|
||||||
TARG = wmiirc \
|
TARG = wmiirc \
|
||||||
welcome
|
welcome
|
||||||
|
|
||||||
|
|
|
@ -227,8 +227,8 @@ fn getfuns {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn actionlist {
|
fn actionlist {
|
||||||
{ rescue '*' {} {
|
{ rescue '*' {} {
|
||||||
proglist ${hostenv WMII_CONFPATH}
|
proglist ${hostenv WMII_CONFPATH}
|
||||||
}
|
}
|
||||||
getfuns Action
|
getfuns Action
|
||||||
} | sort | uniq
|
} | sort | uniq
|
||||||
|
|
|
@ -5,7 +5,7 @@ TARG = grav
|
||||||
|
|
||||||
OFILES = ../cmd/util.o \
|
OFILES = ../cmd/util.o \
|
||||||
../cmd/wmii/map.o \
|
../cmd/wmii/map.o \
|
||||||
../cmd/wmii/x11.o
|
../cmd/wmii/x11.o
|
||||||
|
|
||||||
LDFLAGS += $(OFILES) -lfmt -lutf -lbio $(LIBX11) -lXext
|
LDFLAGS += $(OFILES) -lfmt -lutf -lbio $(LIBX11) -lXext
|
||||||
CFLAGS += $(INCX11)
|
CFLAGS += $(INCX11)
|
||||||
|
|
|
@ -66,7 +66,7 @@ readfile(file: string): (string, int)
|
||||||
fd := open(file, OREAD);
|
fd := open(file, OREAD);
|
||||||
if(fd == nil)
|
if(fd == nil)
|
||||||
return ("", 0);
|
return ("", 0);
|
||||||
|
|
||||||
ret := "";
|
ret := "";
|
||||||
buf := array[512] of byte;
|
buf := array[512] of byte;
|
||||||
while((n := read(fd, buf, len buf)) > 0)
|
while((n := read(fd, buf, len buf)) > 0)
|
||||||
|
@ -115,7 +115,7 @@ init(draw: ref Draw->Context, argv: list of string)
|
||||||
}
|
}
|
||||||
|
|
||||||
relist = reverse(relist);
|
relist = reverse(relist);
|
||||||
|
|
||||||
line: for(;;) {
|
line: for(;;) {
|
||||||
lin := <-line;
|
lin := <-line;
|
||||||
if(lin == nil)
|
if(lin == nil)
|
||||||
|
|
|
@ -96,7 +96,7 @@ prompt() {
|
||||||
unset val
|
unset val
|
||||||
if [ -z "$def" -o -n "$force" ]; then
|
if [ -z "$def" -o -n "$force" ]; then
|
||||||
echo "$@"
|
echo "$@"
|
||||||
echo -n "$var[$def]$(equals) "
|
echo -n "$var[$def]$(equals) "
|
||||||
read val
|
read val
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
@ -158,7 +158,7 @@ if $1 -v 2>&1 | grep 'gcc version' >/dev/null; then
|
||||||
echo
|
echo
|
||||||
fi
|
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 LIBS Libraries to be linked with every executable
|
||||||
|
|
||||||
prompt CFLAGS Flags for the C compiler
|
prompt CFLAGS Flags for the C compiler
|
||||||
|
|
|
@ -27,9 +27,9 @@ echo LD "$($bin/cleanname ${BASE}$outfile)"
|
||||||
[ -n "$noisycc" ] && echo $LD -o $outfile $ofiles $LDFLAGS $args
|
[ -n "$noisycc" ] && echo $LD -o $outfile $ofiles $LDFLAGS $args
|
||||||
$LD -o $outfile $ofiles $LDFLAGS $args >$xtmp 2>&1
|
$LD -o $outfile $ofiles $LDFLAGS $args >$xtmp 2>&1
|
||||||
status=$?
|
status=$?
|
||||||
[ $? -eq 0 ] || $LD -o $outfile $ofiles $LDFLAGS $args >&2
|
[ $status -eq 0 ] || $LD -o $outfile $ofiles $LDFLAGS $args >&2
|
||||||
|
|
||||||
sed 's/.*: In function `[^:]*: *//' $xtmp | egrep . |
|
sed 's/.*: In function `[^:]*: *//' $xtmp | egrep . |
|
||||||
egrep -v 'is almost always misused|is dangerous, better use|in statically linked applications requires at runtime'
|
egrep -v 'is almost always misused|is dangerous, better use|in statically linked applications requires at runtime'
|
||||||
rm -f $xtmp
|
rm -f $xtmp
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue