mirror of https://github.com/0intro/wmii
More info from /tag/*/ctl.
This commit is contained in:
parent
d7c68da518
commit
13e3c32a79
|
@ -20,6 +20,28 @@ area_selclient(Area *a) {
|
|||
return nil;
|
||||
}
|
||||
|
||||
uint
|
||||
area_idx(Area *a) {
|
||||
View *v;
|
||||
Area *ap;
|
||||
uint i;
|
||||
|
||||
v = a->view;
|
||||
for(i = 0, ap = v->area; a != ap; ap = ap->next)
|
||||
i++;
|
||||
return i;
|
||||
}
|
||||
|
||||
char*
|
||||
area_name(Area *a) {
|
||||
static char buf[16];
|
||||
|
||||
if(a->floating)
|
||||
return "~";
|
||||
snprintf(buf, sizeof(buf), "%d", area_idx(a));
|
||||
return buf;
|
||||
}
|
||||
|
||||
Area *
|
||||
create_area(View *v, Area *pos, uint w) {
|
||||
static ushort id = 1;
|
||||
|
@ -234,11 +256,13 @@ detach_from_area(Frame *f) {
|
|||
cp = win2client(c->trans);
|
||||
if(cp && cp->frame) {
|
||||
a = cp->sel->area;
|
||||
if(a->view == v)
|
||||
if(a->view == v) {
|
||||
focus_area(a);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(v->area->next->frame)
|
||||
if(v->area->next->frame)
|
||||
focus_area(v->area->next);
|
||||
}else
|
||||
assert(a->sel);
|
||||
|
|
|
@ -30,6 +30,13 @@ str2colmode(const char *str) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
char*
|
||||
colmode2str(int i) {
|
||||
if(i < nelem(modes))
|
||||
return modes[i];
|
||||
return nil;
|
||||
}
|
||||
|
||||
static Divide*
|
||||
getdiv(Divide **dp) {
|
||||
WinAttr wa;
|
||||
|
|
|
@ -134,7 +134,6 @@ focusin(XEvent *e) {
|
|||
XFocusChangeEvent *ev;
|
||||
Window *w;
|
||||
Client *c;
|
||||
XEvent me;
|
||||
|
||||
ev = &e->xfocus;
|
||||
/* Yes, we're focusing in on nothing, here. */
|
||||
|
@ -162,13 +161,9 @@ focusin(XEvent *e) {
|
|||
handle(w, focusin, ev);
|
||||
else if(ev->mode == NotifyGrab) {
|
||||
if(ev->window == scr.root.w)
|
||||
if(XCheckMaskEvent(display, KeyPressMask, &me)) {
|
||||
/* wmii has grabbed focus */
|
||||
screen->hasgrab = &c_root;
|
||||
dispatch_event(&me);
|
||||
}
|
||||
screen->hasgrab = &c_root;
|
||||
/* Some unmanaged window has grabbed focus */
|
||||
if((c = screen->focus)) {
|
||||
else if((c = screen->focus)) {
|
||||
print_focus(&c_magic, "<magic>");
|
||||
screen->focus = &c_magic;
|
||||
if(c->sel)
|
||||
|
@ -179,6 +174,7 @@ focusin(XEvent *e) {
|
|||
|
||||
static void
|
||||
focusout(XEvent *e) {
|
||||
XEvent me;
|
||||
XFocusChangeEvent *ev;
|
||||
Window *w;
|
||||
|
||||
|
@ -192,7 +188,10 @@ focusout(XEvent *e) {
|
|||
if(ev->mode == NotifyUngrab)
|
||||
screen->hasgrab = nil;
|
||||
|
||||
if((w = findwin(ev->window)))
|
||||
if((ev->mode == NotifyGrab)
|
||||
&& XCheckMaskEvent(display, KeyPressMask, &me))
|
||||
dispatch_event(&me);
|
||||
else if((w = findwin(ev->window)))
|
||||
handle(w, focusout, ev);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
*/
|
||||
|
||||
/* area.c */
|
||||
char *area_name(Area *a);
|
||||
uint area_idx(Area *a);
|
||||
Area *create_area(View*, Area *pos, uint w);
|
||||
void destroy_area(Area*);
|
||||
Area *area_of_id(View*, ushort id);
|
||||
|
@ -60,6 +62,7 @@ void arrange_column(Area*, Bool dirty);
|
|||
void resize_column(Area*, int w);
|
||||
void resize_colframe(Frame*, Rectangle*);
|
||||
int str2colmode(const char *str);
|
||||
char *colmode2str(int i);
|
||||
Area *new_column(View*, Area *pos, uint w);
|
||||
|
||||
/* event.c */
|
||||
|
@ -69,6 +72,7 @@ uint flushevents(long even_mask, Bool dispatch);
|
|||
void print_focus(Client *c, char *to);
|
||||
|
||||
/* frame.c */
|
||||
uint frame_idx(Frame *f);
|
||||
Frame *create_frame(Client*, View*);
|
||||
void remove_frame(Frame*);
|
||||
void insert_frame(Frame *pos, Frame*);
|
||||
|
@ -157,6 +161,7 @@ Client *view_selclient(View*);
|
|||
char *message_view(View *v, Message *m);
|
||||
void restack_view(View*);
|
||||
uchar *view_index(View*);
|
||||
uchar *view_ctl(View *v);
|
||||
void destroy_view(View*);
|
||||
void update_views(void);
|
||||
uint newcolw(View*, int i);
|
||||
|
|
|
@ -7,6 +7,17 @@
|
|||
#include "dat.h"
|
||||
#include "fns.h"
|
||||
|
||||
uint
|
||||
frame_idx(Frame *f) {
|
||||
Frame *fp;
|
||||
uint i;
|
||||
|
||||
fp = f->area->frame;
|
||||
for(i = 1; fp != f; fp = fp->anext)
|
||||
i++;
|
||||
return i;
|
||||
}
|
||||
|
||||
Frame *
|
||||
create_frame(Client *c, View *v) {
|
||||
static ushort id = 1;
|
||||
|
|
|
@ -639,10 +639,6 @@ fs_read(Ixp9Req *r) {
|
|||
write_buf(r, f->p.client->name, strlen(f->p.client->name));
|
||||
respond(r, nil);
|
||||
return;
|
||||
case FsFTctl:
|
||||
write_buf(r, f->p.view->name, strlen(f->p.view->name));
|
||||
respond(r, nil);
|
||||
return;
|
||||
case FsFBar:
|
||||
write_buf(r, f->p.bar->buf, strlen(f->p.bar->buf));
|
||||
respond(r, nil);
|
||||
|
@ -669,6 +665,12 @@ fs_read(Ixp9Req *r) {
|
|||
write_buf(r, buf, n);
|
||||
respond(r, nil);
|
||||
return;
|
||||
case FsFTctl:
|
||||
buf = (char*)view_ctl(f->p.view);
|
||||
n = strlen(buf);
|
||||
write_buf(r, buf, n);
|
||||
respond(r, nil);
|
||||
return;
|
||||
case FsFEvent:
|
||||
respond_event(r);
|
||||
return;
|
||||
|
|
|
@ -182,9 +182,8 @@ kpress_seq(XWindow w, Key *done) {
|
|||
if((done->mod == mod) && (done->key == key))
|
||||
emulate_key_press(mod, key); /* double key */
|
||||
else {
|
||||
if(!found) {
|
||||
if(!found)
|
||||
XBell(display, 0);
|
||||
} /* grabbed but not found */
|
||||
else if(!found->tnext && !found->next)
|
||||
write_event("Key %s\n", found->name);
|
||||
else
|
||||
|
|
|
@ -331,45 +331,68 @@ rects_of_view(View *v, uint *num, Frame *ignore) {
|
|||
/* XXX: This will need cleanup */
|
||||
uchar *
|
||||
view_index(View *v) {
|
||||
Rectangle *r;
|
||||
Frame *f;
|
||||
Area *a;
|
||||
char *buf;
|
||||
uint i, n;
|
||||
int len;
|
||||
char *buf, *end;
|
||||
uint i;
|
||||
|
||||
len = sizeof(buffer);
|
||||
buf = buffer;
|
||||
for((a=v->area), (i=0); a && len > 0; (a=a->next), i++) {
|
||||
end = buffer+sizeof(buffer);
|
||||
for((a=v->area), (i=0); a && buf < end-1; (a=a->next), i++) {
|
||||
if(a->floating)
|
||||
n = snprintf(buf, len, "# ~ %d %d\n",
|
||||
buf += snprintf(buf, end-buf, "# ~ %d %d\n",
|
||||
Dx(a->r), Dy(a->r));
|
||||
else
|
||||
n = snprintf(buf, len, "# %d %d %d\n",
|
||||
buf += snprintf(buf, end-buf, "# %d %d %d\n",
|
||||
i, a->r.min.x, Dx(a->r));
|
||||
|
||||
buf += n;
|
||||
len -= n;
|
||||
for(f=a->frame; f && len > 0; f=f->anext) {
|
||||
Rectangle *r = &f->r;
|
||||
for(f=a->frame; f && buf < end-1; f=f->anext) {
|
||||
r = &f->r;
|
||||
if(a->floating)
|
||||
n = snprintf(buf, len, "~ 0x%x %d %d %d %d %s\n",
|
||||
buf += snprintf(buf, end-buf, "~ 0x%x %d %d %d %d %s\n",
|
||||
(uint)f->client->w.w,
|
||||
r->min.x, r->min.y, Dx(*r), Dy(*r),
|
||||
r->min.x, r->min.y,
|
||||
Dx(*r), Dy(*r),
|
||||
f->client->props);
|
||||
else
|
||||
n = snprintf(buf, len, "%d 0x%x %d %d %s\n",
|
||||
buf += snprintf(buf, end-buf, "%d 0x%x %d %d %s\n",
|
||||
i, (uint)f->client->w.w,
|
||||
r->min.y, Dy(*r),
|
||||
f->client->props);
|
||||
if(len - n < 0)
|
||||
return (uchar*)buffer;
|
||||
buf += n;
|
||||
len -= n;
|
||||
}
|
||||
}
|
||||
return (uchar*)buffer;
|
||||
}
|
||||
|
||||
uchar *
|
||||
view_ctl(View *v) {
|
||||
Area *a;
|
||||
char *buf, *end;
|
||||
uint i;
|
||||
|
||||
buf = buffer;
|
||||
end = buffer+sizeof(buffer);
|
||||
|
||||
buf += snprintf(buf, end-buf, "%s\n", v->name);
|
||||
|
||||
/* select <area>[ <frame>] */
|
||||
buf += snprintf(buf, end-buf, "select %s", area_name(v->sel));
|
||||
if(v->sel->sel)
|
||||
buf += snprintf(buf, end-buf, " %d", frame_idx(v->sel->sel));
|
||||
buf += snprintf(buf, end-buf, "\n");
|
||||
|
||||
/* select client <client> */
|
||||
if(v->sel->sel)
|
||||
buf += snprintf(buf, end-buf, "select client 0x%x\n", clientwin(v->sel->sel->client));
|
||||
|
||||
for(a = v->area->next, i = 1; a && buf < end-1; a = a->next, i++) {
|
||||
buf += snprintf(buf, end-buf, "colmode %d %s\n",
|
||||
i, colmode2str(a->mode));
|
||||
}
|
||||
return (uchar*)buffer;
|
||||
}
|
||||
|
||||
void
|
||||
update_views(void) {
|
||||
View *n, *v, *old;
|
||||
|
|
176
man/wmii.1
176
man/wmii.1
|
@ -1,5 +1,5 @@
|
|||
'\" t
|
||||
.\" Manual page created with latex2man on Mon Jun 11 12:08:17 EDT 2007
|
||||
.\" Manual page created with latex2man on Mon Jun 11 15:48:33 EDT 2007
|
||||
.\" NOTE: This file is generated, DO NOT EDIT.
|
||||
.de Vb
|
||||
.ft CW
|
||||
|
@ -28,130 +28,137 @@ wmii
|
|||
.PP
|
||||
wmii
|
||||
is a dynamic window manager for X11. In contrast to
|
||||
static window management the user rarely has to think about how to
|
||||
organize windows, no matter what he is doing or how many
|
||||
applications are used at the same time. The window manager adapts
|
||||
to the current environment and fits to the needs of the user, rather
|
||||
than forcing him to use a preset, fixed layout and trying to
|
||||
shoehorn all windows and applications into it.
|
||||
static window management the user rarely has to think about how
|
||||
to organize windows, no matter what he is doing or how many
|
||||
applications are used at the same time. The window manager
|
||||
adapts to the current environment and fits to the needs of the
|
||||
user, rather than forcing him to use a preset, fixed layout and
|
||||
trying to shoehorn all windows and applications into it.
|
||||
.PP
|
||||
wmii
|
||||
supports classic and tiled window management with
|
||||
extended keyboard and mouse control. The classic window management
|
||||
arranges windows in a floating layer in which windows can be moved
|
||||
and resized freely. The tiled window management is based on columns
|
||||
which split up the screen horizontally. Each column handles
|
||||
arbitrary windows and arranges them vertically in a nonoverlapping
|
||||
way. They can then be moved and resized between and within columns
|
||||
at will.
|
||||
extended keyboard and mouse control. The classic window
|
||||
management arranges windows in a floating layer in which windows
|
||||
can be moved and resized freely. The tiled window management is
|
||||
based on columns which split up the screen horizontally. Each
|
||||
column handles arbitrary windows and arranges them vertically in
|
||||
a nonoverlapping way. They can then be moved and resized
|
||||
between and within columns at will.
|
||||
.PP
|
||||
wmii
|
||||
provides a virtual filesystem which represents the
|
||||
internal state similar to the procfs of Unix operating systems.
|
||||
Modifying this virtual filesystem results in changing the state of
|
||||
the window manager. The virtual filesystem service can be accessed
|
||||
through 9Pcapable client programs, like \fIwmiir\fP(1)\&.
|
||||
This
|
||||
allows simple and powerful remote control of the core window
|
||||
manager.
|
||||
Modifying this virtual filesystem results in changing the state
|
||||
of the window manager. The virtual filesystem service can be
|
||||
accessed through 9Pcapable client programs, like
|
||||
\fIwmiir\fP(1)\&.
|
||||
This allows simple and powerful remote control
|
||||
of the core window manager.
|
||||
.PP
|
||||
wmii
|
||||
basically consists of clients, columns, views, and the
|
||||
bar, which are described in detail in the \fBTerminology\fP
|
||||
basically consists of clients, columns, views, and
|
||||
the bar, which are described in detail in the
|
||||
\fBTerminology\fP
|
||||
section.
|
||||
.PP
|
||||
.SS TERMINOLOGY
|
||||
.PP
|
||||
.TP
|
||||
Display
|
||||
A running X server instance consisting of input devices
|
||||
and screens.
|
||||
A running X server instance consisting of input
|
||||
devices and screens.
|
||||
.TP
|
||||
Screen
|
||||
A physical or virtual (Xinerama or \fIXnest\fP(1))
|
||||
screen
|
||||
of an X display. A screen displays a bar window and a view at a time.
|
||||
screen of an X display. A screen displays a bar window
|
||||
and a view at a time.
|
||||
.TP
|
||||
Window
|
||||
A (rectangular) drawable X object which is displayed on a
|
||||
screen, usually an application window.
|
||||
A (rectangular) drawable X object which is
|
||||
displayed on a screen, usually an application window.
|
||||
.TP
|
||||
Client
|
||||
An application window surrounded by a frame window containing
|
||||
a border and a titlebar.
|
||||
An application window surrounded by a frame window
|
||||
containing a border and a titlebar.
|
||||
.TP
|
||||
Floating layer
|
||||
A screen layer of wmii
|
||||
on top of all other
|
||||
layers, where clients are arranged in a classic (floating) way.
|
||||
They can be resized or moved freely.
|
||||
on top of
|
||||
all other layers, where clients are arranged in a
|
||||
classic (floating) way. They can be resized or moved
|
||||
freely.
|
||||
.TP
|
||||
Managed layer
|
||||
A screen layer of wmii
|
||||
behind the floating layer,
|
||||
where clients are arranged in a nonoverlapping (managed) way. Here,
|
||||
the window manager dynamically assigns each client a size and position.
|
||||
The managed layer consists of columns.
|
||||
behind the
|
||||
floating layer, where clients are arranged in a
|
||||
nonoverlapping (managed) way. Here, the window
|
||||
manager dynamically assigns each client a size and
|
||||
position. The managed layer consists of columns.
|
||||
.TP
|
||||
Tag
|
||||
Alphanumeric strings which can be assigned to a client. This provides
|
||||
a mechanism to group clients with similar properties. Clients can have one
|
||||
tag, e.g. \fIwork\fP,
|
||||
Alphanumeric strings which can be assigned to a
|
||||
client. This provides a mechanism to group clients with
|
||||
similar properties. Clients can have one tag, e.g.
|
||||
\fIwork\fP,
|
||||
or several tags, e.g. \fIwork+mail\fP\&.
|
||||
.PP
|
||||
Tags are separated with the \fI+\fP
|
||||
character.
|
||||
.TP
|
||||
View
|
||||
A set of clients containing a specific tag, quite similiar to a
|
||||
workspace in other window managers. It consists of the floating and
|
||||
managed layers.
|
||||
A set of clients containing a specific tag, quite
|
||||
similiar to a workspace in other window managers. It
|
||||
consists of the floating and managed layers.
|
||||
.TP
|
||||
Column
|
||||
A column is a screen area which arranges clients vertically in a
|
||||
non\-overlapping way. Columns provide three different modes, which
|
||||
arrange clients with equal size, stacked, or maximized respectively.
|
||||
Clients can be moved and resized between and within columns freely.
|
||||
A column is a screen area which arranges clients
|
||||
vertically in a non\-overlapping way. Columns provide
|
||||
three different modes, which arrange clients with equal
|
||||
size, stacked, or maximized respectively. Clients can
|
||||
be moved and resized between and within columns freely.
|
||||
.TP
|
||||
Bar
|
||||
The bar at the bottom of the screen displays a label for each view and
|
||||
allows the creation of arbitrary userdefined labels.
|
||||
The bar at the bottom of the screen displays a label
|
||||
for each view and allows the creation of arbitrary
|
||||
userdefined labels.
|
||||
.TP
|
||||
Event
|
||||
An event is a message which can be read from a special file in the
|
||||
filesystem of wmii,
|
||||
such as a mouse button press, a key press, or
|
||||
a message written by a different 9P\-client.
|
||||
An event is a message which can be read from a
|
||||
special file in the filesystem of wmii,
|
||||
such as a
|
||||
mouse button press, a key press, or a message written by
|
||||
a different 9P\-client.
|
||||
.PP
|
||||
.SS BASIC WINDOW MANAGEMENT
|
||||
.PP
|
||||
Running a raw wmii
|
||||
process without a \fIwmiirc\fP(1)
|
||||
script
|
||||
provides basic window management capabilities already. However, to
|
||||
use it effectively, remote control through its filesystem interface
|
||||
is necessary. By default it is only usable with the mouse in
|
||||
conjunction with the \fIMod1 (Alt)\fP
|
||||
modifier key. Other
|
||||
interactions, such as customizing the style, killing or retagging
|
||||
clients, and grabbing keys, cannot be achieved without accessing the
|
||||
filesystem.
|
||||
script provides basic window management capabilities already.
|
||||
However, to use it effectively, remote control through its
|
||||
filesystem interface is necessary. By default it is only usable
|
||||
with the mouse in conjunction with the \fIMod1 (Alt)\fP
|
||||
modifier key. Other interactions, such as customizing the style,
|
||||
killing or retagging clients, and grabbing keys, cannot be
|
||||
achieved without accessing the filesystem.
|
||||
.PP
|
||||
The filesystem can be accessed by connecting to the \fIaddress\fP
|
||||
The filesystem can be accessed by connecting to the
|
||||
\fIaddress\fP
|
||||
of wmii
|
||||
with any 9P\-capable client, such as \fIwmiir\fP(1)
|
||||
with any 9P\-capable client, such
|
||||
as \fIwmiir\fP(1)
|
||||
.PP
|
||||
.SS ACTIONS
|
||||
.PP
|
||||
An action is a shell script in the default setup, but it can
|
||||
actually be any executable file. It is executed usually by
|
||||
selecting it from the actions menu. You can customize an action by
|
||||
copying it from the global action directory
|
||||
selecting it from the actions menu. You can customize an action
|
||||
by copying it from the global action directory
|
||||
CONFPREFIX/wmii\-3.5
|
||||
to $HOME/.wmii\-3.5
|
||||
and then
|
||||
editing the copy to fit your needs. Of course you can also create
|
||||
your own actions there; make sure that they are executable.
|
||||
editing the copy to fit your needs. Of course you can also
|
||||
create your own actions there; make sure that they are
|
||||
executable.
|
||||
.PP
|
||||
Here is a list of the default actions:
|
||||
.PP
|
||||
|
@ -346,9 +353,9 @@ If you feel the need to change the default configuration, then
|
|||
customize (as described above) the wmiirc
|
||||
action. This
|
||||
action is executed at the end of the wmii
|
||||
script and does all
|
||||
the work of setting up the window manager, the key bindings, the bar
|
||||
labels, etc.
|
||||
script and does
|
||||
all the work of setting up the window manager, the key bindings,
|
||||
the bar labels, etc.
|
||||
.PP
|
||||
.SH FILESYSTEM
|
||||
.PP
|
||||
|
@ -556,15 +563,16 @@ Returns a clients class and label as:
|
|||
tags
|
||||
Set or read a client\&'s tags. Tags are seperated by
|
||||
\fI+\fP
|
||||
or {\-}. Tags begining with \fI+\fP
|
||||
are added,
|
||||
while those begining with \fI\-\fP
|
||||
are removed. If the
|
||||
tag string written begins with \fI+\fP
|
||||
or \fI\-\fP,
|
||||
the
|
||||
written tags are added to or removed from the client\&'s
|
||||
set, otherwise, the set is overwritten.
|
||||
or \fI\-\fP\&.
|
||||
Tags begining with \fI+\fP
|
||||
are
|
||||
added, while those begining with \fI\-\fP
|
||||
are removed.
|
||||
If the tag string written begins with \fI+\fP
|
||||
or
|
||||
\fI\-\fP,
|
||||
the written tags are added to or removed from
|
||||
the client\&'s set, otherwise, the set is overwritten.
|
||||
.PP
|
||||
.SS The /tag/ Hierarchy
|
||||
.PP
|
||||
|
@ -648,13 +656,15 @@ them.
|
|||
.PP
|
||||
.TP
|
||||
/tmp/ns.USER.{DISPLAY%\&.0}/wmii
|
||||
The wmii socket file which provides a 9P service.
|
||||
The wmii socket file
|
||||
which provides a 9P service.
|
||||
.TP
|
||||
CONFPREFIX/wmii\-3.5
|
||||
Global action directory.
|
||||
.TP
|
||||
$HOME/.wmii\-3.5
|
||||
User\-specific action directory. Actions are first searched here.
|
||||
User\-specific action directory. Actions
|
||||
are first searched here.
|
||||
.PP
|
||||
.SH ENVIRONMENT
|
||||
.PP
|
||||
|
|
162
man/wmii.tex
162
man/wmii.tex
|
@ -11,94 +11,102 @@
|
|||
\subsection{Overview}
|
||||
|
||||
\Prog{wmii} is a dynamic window manager for X11. In contrast to
|
||||
static window management the user rarely has to think about how to
|
||||
organize windows, no matter what he is doing or how many
|
||||
applications are used at the same time. The window manager adapts
|
||||
to the current environment and fits to the needs of the user, rather
|
||||
than forcing him to use a preset, fixed layout and trying to
|
||||
shoehorn all windows and applications into it.
|
||||
static window management the user rarely has to think about how
|
||||
to organize windows, no matter what he is doing or how many
|
||||
applications are used at the same time. The window manager
|
||||
adapts to the current environment and fits to the needs of the
|
||||
user, rather than forcing him to use a preset, fixed layout and
|
||||
trying to shoehorn all windows and applications into it.
|
||||
|
||||
\Prog{wmii} supports classic and tiled window management with
|
||||
extended keyboard and mouse control. The classic window management
|
||||
arranges windows in a floating layer in which windows can be moved
|
||||
and resized freely. The tiled window management is based on columns
|
||||
which split up the screen horizontally. Each column handles
|
||||
arbitrary windows and arranges them vertically in a non\-overlapping
|
||||
way. They can then be moved and resized between and within columns
|
||||
at will.
|
||||
extended keyboard and mouse control. The classic window
|
||||
management arranges windows in a floating layer in which windows
|
||||
can be moved and resized freely. The tiled window management is
|
||||
based on columns which split up the screen horizontally. Each
|
||||
column handles arbitrary windows and arranges them vertically in
|
||||
a non\-overlapping way. They can then be moved and resized
|
||||
between and within columns at will.
|
||||
|
||||
\Prog{wmii} provides a virtual filesystem which represents the
|
||||
internal state similar to the procfs of Unix operating systems.
|
||||
Modifying this virtual filesystem results in changing the state of
|
||||
the window manager. The virtual filesystem service can be accessed
|
||||
through 9P\-capable client programs, like \Cmd{wmiir}{1}. This
|
||||
allows simple and powerful remote control of the core window
|
||||
manager.
|
||||
Modifying this virtual filesystem results in changing the state
|
||||
of the window manager. The virtual filesystem service can be
|
||||
accessed through 9P\-capable client programs, like
|
||||
\Cmd{wmiir}{1}. This allows simple and powerful remote control
|
||||
of the core window manager.
|
||||
|
||||
\Prog{wmii} basically consists of clients, columns, views, and the
|
||||
bar, which are described in detail in the \textbf{Terminology}
|
||||
section.
|
||||
\Prog{wmii} basically consists of clients, columns, views, and
|
||||
the bar, which are described in detail in the
|
||||
\textbf{Terminology} section.
|
||||
|
||||
\subsection{Terminology}
|
||||
|
||||
\begin{description}
|
||||
\item[Display] A running X server instance consisting of input devices
|
||||
and screens.
|
||||
\item[Screen] A physical or virtual (Xinerama or \Cmd{Xnest}{1}) screen
|
||||
of an X display. A screen displays a bar window and a view at a time.
|
||||
\item[Window] A (rectangular) drawable X object which is displayed on a
|
||||
screen, usually an application window.
|
||||
\item[Client] An application window surrounded by a frame window containing
|
||||
a border and a titlebar.
|
||||
\item[Floating layer] A screen layer of \Prog{wmii} on top of all other
|
||||
layers, where clients are arranged in a classic (floating) way.
|
||||
They can be resized or moved freely.
|
||||
\item[Managed layer] A screen layer of \Prog{wmii} behind the floating layer,
|
||||
where clients are arranged in a non\-overlapping (managed) way. Here,
|
||||
the window manager dynamically assigns each client a size and position.
|
||||
The managed layer consists of columns.
|
||||
\item[Tag] Alphanumeric strings which can be assigned to a client. This provides
|
||||
a mechanism to group clients with similar properties. Clients can have one
|
||||
tag, e.g. \emph{work}, or several tags, e.g. \emph{work+mail}.
|
||||
|
||||
\item[Display] A running X server instance consisting of input
|
||||
devices and screens.
|
||||
\item[Screen] A physical or virtual (Xinerama or \Cmd{Xnest}{1})
|
||||
screen of an X display. A screen displays a bar window
|
||||
and a view at a time.
|
||||
\item[Window] A (rectangular) drawable X object which is
|
||||
displayed on a screen, usually an application window.
|
||||
\item[Client] An application window surrounded by a frame window
|
||||
containing a border and a titlebar.
|
||||
\item[Floating layer] A screen layer of \Prog{wmii} on top of
|
||||
all other layers, where clients are arranged in a
|
||||
classic (floating) way. They can be resized or moved
|
||||
freely.
|
||||
\item[Managed layer] A screen layer of \Prog{wmii} behind the
|
||||
floating layer, where clients are arranged in a
|
||||
non\-overlapping (managed) way. Here, the window
|
||||
manager dynamically assigns each client a size and
|
||||
position. The managed layer consists of columns.
|
||||
\item[Tag] Alphanumeric strings which can be assigned to a
|
||||
client. This provides a mechanism to group clients with
|
||||
similar properties. Clients can have one tag, e.g.
|
||||
\emph{work}, or several tags, e.g. \emph{work+mail}.
|
||||
Tags are separated with the \emph{+} character.
|
||||
\item[View] A set of clients containing a specific tag, quite similiar to a
|
||||
workspace in other window managers. It consists of the floating and
|
||||
managed layers.
|
||||
\item[Column] A column is a screen area which arranges clients vertically in a
|
||||
non-overlapping way. Columns provide three different modes, which
|
||||
arrange clients with equal size, stacked, or maximized respectively.
|
||||
Clients can be moved and resized between and within columns freely.
|
||||
\item[Bar] The bar at the bottom of the screen displays a label for each view and
|
||||
allows the creation of arbitrary user\-defined labels.
|
||||
\item[Event] An event is a message which can be read from a special file in the
|
||||
filesystem of \Prog{wmii}, such as a mouse button press, a key press, or
|
||||
a message written by a different 9P-client.
|
||||
\item[View] A set of clients containing a specific tag, quite
|
||||
similiar to a workspace in other window managers. It
|
||||
consists of the floating and managed layers.
|
||||
\item[Column] A column is a screen area which arranges clients
|
||||
vertically in a non-overlapping way. Columns provide
|
||||
three different modes, which arrange clients with equal
|
||||
size, stacked, or maximized respectively. Clients can
|
||||
be moved and resized between and within columns freely.
|
||||
\item[Bar] The bar at the bottom of the screen displays a label
|
||||
for each view and allows the creation of arbitrary
|
||||
user\-defined labels.
|
||||
\item[Event] An event is a message which can be read from a
|
||||
special file in the filesystem of \Prog{wmii}, such as a
|
||||
mouse button press, a key press, or a message written by
|
||||
a different 9P-client.
|
||||
\end{description}
|
||||
|
||||
\subsection{Basic window management}
|
||||
|
||||
Running a raw \Prog{wmii} process without a \Cmd{wmiirc}{1} script
|
||||
provides basic window management capabilities already. However, to
|
||||
use it effectively, remote control through its filesystem interface
|
||||
is necessary. By default it is only usable with the mouse in
|
||||
conjunction with the \emph{Mod1 (Alt)} modifier key. Other
|
||||
interactions, such as customizing the style, killing or retagging
|
||||
clients, and grabbing keys, cannot be achieved without accessing the
|
||||
filesystem.
|
||||
Running a raw \Prog{wmii} process without a \Cmd{wmiirc}{1}
|
||||
script provides basic window management capabilities already.
|
||||
However, to use it effectively, remote control through its
|
||||
filesystem interface is necessary. By default it is only usable
|
||||
with the mouse in conjunction with the \emph{Mod1 (Alt)}
|
||||
modifier key. Other interactions, such as customizing the style,
|
||||
killing or retagging clients, and grabbing keys, cannot be
|
||||
achieved without accessing the filesystem.
|
||||
|
||||
The filesystem can be accessed by connecting to the \emph{address}
|
||||
of \Prog{wmii} with any 9P-capable client, such as \Cmd{wmiir}{1}
|
||||
The filesystem can be accessed by connecting to the
|
||||
\emph{address} of \Prog{wmii} with any 9P-capable client, such
|
||||
as \Cmd{wmiir}{1}
|
||||
|
||||
\subsection{Actions}
|
||||
|
||||
An action is a shell script in the default setup, but it can
|
||||
actually be any executable file. It is executed usually by
|
||||
selecting it from the actions menu. You can customize an action by
|
||||
copying it from the global action directory
|
||||
selecting it from the actions menu. You can customize an action
|
||||
by copying it from the global action directory
|
||||
\File{CONFPREFIX/wmii-3.5} to \File{\$HOME/.wmii-3.5} and then
|
||||
editing the copy to fit your needs. Of course you can also create
|
||||
your own actions there; make sure that they are executable.
|
||||
editing the copy to fit your needs. Of course you can also
|
||||
create your own actions there; make sure that they are
|
||||
executable.
|
||||
|
||||
Here is a list of the default actions:
|
||||
|
||||
|
@ -159,9 +167,9 @@ Mod-Enter & \Prog{Execute} an \Prog{xterm} \\
|
|||
|
||||
If you feel the need to change the default configuration, then
|
||||
customize (as described above) the \Prog{wmiirc} action. This
|
||||
action is executed at the end of the \Prog{wmii} script and does all
|
||||
the work of setting up the window manager, the key bindings, the bar
|
||||
labels, etc.
|
||||
action is executed at the end of the \Prog{wmii} script and does
|
||||
all the work of setting up the window manager, the key bindings,
|
||||
the bar labels, etc.
|
||||
|
||||
\section{Filesystem}
|
||||
|
||||
|
@ -279,11 +287,11 @@ represents the currently selected client.
|
|||
\item[props] Returns a clients class and label as:
|
||||
\emph{name}:\emph{class}:\emph{label}
|
||||
\item[tags] Set or read a client's tags. Tags are seperated by
|
||||
\emph{+} or {-}. Tags begining with \emph{+} are added,
|
||||
while those begining with \emph{-} are removed. If the
|
||||
tag string written begins with \emph{+} or \emph{-}, the
|
||||
written tags are added to or removed from the client's
|
||||
set, otherwise, the set is overwritten.
|
||||
\emph{+} or \emph{-}. Tags begining with \emph{+} are
|
||||
added, while those begining with \emph{-} are removed.
|
||||
If the tag string written begins with \emph{+} or
|
||||
\emph{-}, the written tags are added to or removed from
|
||||
the client's set, otherwise, the set is overwritten.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{The /tag/ Hierarchy}
|
||||
|
@ -335,9 +343,11 @@ them.
|
|||
\section{FILES}
|
||||
|
||||
\begin{description}
|
||||
\item[/tmp/ns.$USER.${DISPLAY\%.0}/wmii] The wmii socket file which provides a 9P service.
|
||||
\item[/tmp/ns.$USER.${DISPLAY\%.0}/wmii] The wmii socket file
|
||||
which provides a 9P service.
|
||||
\item[CONFPREFIX/wmii-3.5] Global action directory.
|
||||
\item[\$HOME/.wmii-3.5] User-specific action directory. Actions are first searched here.
|
||||
\item[\$HOME/.wmii-3.5] User-specific action directory. Actions
|
||||
are first searched here.
|
||||
\end{description}
|
||||
|
||||
\section{ENVIRONMENT}
|
||||
|
|
Loading…
Reference in New Issue