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)$
|
||||
\.(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/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -9,4 +9,4 @@ BINARY = __init__.py \
|
|||
monitor.py \
|
||||
util.py
|
||||
|
||||
DIR = $(ETC)/wmii$(CONFVERSION)/python/pygmi
|
||||
DIR = $(GLOBALCONF)/python/pygmi
|
||||
|
|
|
@ -12,4 +12,4 @@ BINARY = __init__.py \
|
|||
mux.py \
|
||||
types.py
|
||||
|
||||
DIR = $(ETC)/wmii$(CONFVERSION)/python/pyxp
|
||||
DIR = $(GLOBALCONF)/python/pyxp
|
||||
|
|
|
@ -9,5 +9,5 @@ EXECS = wmiirc
|
|||
TEXT = config.rb \
|
||||
config.yaml
|
||||
|
||||
DIR = $(ETC)/wmii$(CONFVERSION)/ruby
|
||||
DIR = $(GLOBALCONF)/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
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
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;
|
||||
|
|
|
@ -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++) {
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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)
|
||||
usage();
|
||||
|
||||
fmtinstall('K', fmtkey);
|
||||
initdisplay();
|
||||
|
||||
selectinput(&scr.root, KeyPressMask|KeyReleaseMask);
|
||||
|
@ -46,25 +47,11 @@ main(int argc, char *argv[]) {
|
|||
|
||||
static bool
|
||||
kdown_event(Window *w, void *aux, XKeyEvent *ev) {
|
||||
Fmt f;
|
||||
char buf[32];
|
||||
char *key;
|
||||
KeySym ksym;
|
||||
int num;
|
||||
|
||||
USED(aux);
|
||||
USED(w, aux);
|
||||
nkeys++;
|
||||
num = XLookupString(ev, buf, sizeof buf, &ksym, 0);
|
||||
key = XKeysymToString(ksym);
|
||||
|
||||
fmtstrinit(&f);
|
||||
unmask(&f, ev->state, modkey_names, '-');
|
||||
if(f.nfmt)
|
||||
fmtrune(&f, '-');
|
||||
fmtstrcpy(&f, key);
|
||||
|
||||
free(keyname);
|
||||
keyname = fmtstrflush(&f);
|
||||
keyname = smprint("%K", ev);
|
||||
return false;
|
||||
}
|
||||
|
|
@ -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"),
|
||||
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>
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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*);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -100,7 +100,7 @@ Brdstr(Biobuf *bp, int delim, int nulldelim)
|
|||
}
|
||||
ip += j;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* full buffer without finding; add to user string and continue
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "plan9.h"
|
||||
#include <bio.h>
|
||||
|
||||
static int
|
||||
static int
|
||||
fmtBflush(Fmt *f)
|
||||
{
|
||||
Biobuf *bp;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -110,7 +110,7 @@ regerr2(char *s, int c)
|
|||
while(*s)
|
||||
*cp++ = *s++;
|
||||
*cp++ = c;
|
||||
*cp = '\0';
|
||||
*cp = '\0';
|
||||
rcerror(buf);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -22,4 +22,4 @@ strcasestr(const char *dst, const char *src) {
|
|||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
int
|
||||
utflcpy(char *to, const char *from, int l) {
|
||||
char *p;
|
||||
|
||||
|
||||
p = utfecpy(to, to+l, from);
|
||||
return p-to;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -32,11 +32,10 @@ errorhandler(Display *dpy, XErrorEvent *error) {
|
|||
|
||||
int
|
||||
traperrors(bool enable) {
|
||||
|
||||
|
||||
sync();
|
||||
_trap_errors = enable;
|
||||
if (enable)
|
||||
nerrors = 0;
|
||||
return nerrors;
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
int
|
||||
grabpointer(Window *w, Window *confine, Cursor cur, int mask) {
|
||||
XWindow cw;
|
||||
|
||||
|
||||
cw = None;
|
||||
if(confine)
|
||||
cw = confine->xid;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ Window*
|
|||
findwin(XWindow xw) {
|
||||
Window *w;
|
||||
void **e;
|
||||
|
||||
|
||||
e = map_get(&windowmap, (ulong)xw, false);
|
||||
if(e) {
|
||||
w = *e;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
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
|
||||
.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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
2
mk/so.mk
2
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
|
||||
|
|
17
mk/wmii.mk
17
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; \
|
||||
|
|
|
@ -2,7 +2,7 @@ ROOT=..
|
|||
include $(ROOT)/mk/hdr.mk
|
||||
include $(ROOT)/mk/wmii.mk
|
||||
|
||||
BIN = $(ETC)/wmii$(CONFVERSION)
|
||||
BIN = $(GLOBALCONF)
|
||||
TARG = wmiirc \
|
||||
welcome
|
||||
|
||||
|
|
|
@ -227,8 +227,8 @@ fn getfuns {
|
|||
}
|
||||
|
||||
fn actionlist {
|
||||
{ rescue '*' {} {
|
||||
proglist ${hostenv WMII_CONFPATH}
|
||||
{ rescue '*' {} {
|
||||
proglist ${hostenv WMII_CONFPATH}
|
||||
}
|
||||
getfuns Action
|
||||
} | sort | uniq
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue