wmii

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

commit a434beeb0bc8c0a48e567a82d1bd0c68a2061b57
parent 579115c4308c2e4404a3da961b1d15535a3d1e6b
Author: Kris Maglione <jg@suckless.org>
Date:   Tue,  9 Dec 2008 18:06:10 -0500

Move from modified, quirky latex2man to txt2tags.

Diffstat:
.hgignore | 2+-
cmd/wmii/frame.c | 2++
man/Makefile | 4+++-
man/wmii.1 | 1046+++++++++++++++++++++++++++++++------------------------------------------------
man/wmii.man1 | 458+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
man/wmii.tex | 392-------------------------------------------------------------------------------
man/wmiiloop.1 | 72------------------------------------------------------------------------
man/wmiiloop.tex | 42------------------------------------------
mk/hdr.mk | 10+++++-----
mk/man.mk | 3+--
10 files changed, 884 insertions(+), 1147 deletions(-)

diff --git a/.hgignore b/.hgignore @@ -1,6 +1,6 @@ syntax: regexp (^|/)\.((.*\.)?swp|depend|hgignore)$ (^|/)(tags|mkfile)$ -\.([oOa]|man1|o_pic|so)$ +\.([oOa]|o_pic|so)$ ^config\.local\.mk$ diff --git a/cmd/wmii/frame.c b/cmd/wmii/frame.c @@ -653,6 +653,8 @@ constrain(Rectangle r, int inset) { SET(best); sbest = nil; for(sp=screens; (s = *sp); sp++) { + if (!screen->showing) + continue; isect = rect_intersection(r, insetrect(s->r, inset)); if(Dx(isect) >= 0 && Dy(isect) >= 0) return r; diff --git a/man/Makefile b/man/Makefile @@ -3,9 +3,11 @@ include ${ROOT}/mk/hdr.mk include ${ROOT}/mk/wmii.mk TARG = wmii.1 \ - wmiiloop.1 \ wmiir.1 +wmiir.1: + true + $(TARG): Makefile $(ROOT)/mk/wmii.mk FILTER = sed "s|CONFPREFIX|$(ETC)|g; \ diff --git a/man/wmii.1 b/man/wmii.1 @@ -1,733 +1,515 @@ -'\" t -.\" Manual page created with latex2man on Wed Oct 15 16:08:29 EDT 2008 -.\" NOTE: This file is generated, DO NOT EDIT. -.de Vb -.ft CW -.nf -.. -.de Ve -.ft R +.TH "WMII" 1 "Dec, 2008" "" -.fi -.. -.TH "WMII" "1" " Wed Dec 31 19:00:00 EDT 1969 -" "" "" .SH NAME -wmii\-VERSION -.PP +.P +wmii \- Window Manager Improved Improved + .SH SYNOPSIS -wmii -[\fB\-a\fP\fI<address>\fP] -[\fB\-c\fP\fI<wmiirc>\fP] -.br -wmii -\fB\-v\fP -.PP +.P +wmii \fI[\-a \fI<address>\fR]\fR \fI[\-c \fI<wmiirc>\fR]\fR +.P +wmii \-v + .SH DESCRIPTION -.PP -.SS OVERVIEW -.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. -.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. -.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. -.PP -wmii -basically consists of clients, columns, views, and -the bar, which are described in detail in the -\fBTerminology\fP -section. -.PP -.SS TERMINOLOGY -.PP +.SS Overview +.P +\fBwmii\fR 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. + +.P +\fBwmii\fR 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. + +.P +\fBwmii\fR 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 +wmiir(1). This allows simple and powerful remote control +of the core window manager. + +.P +\fBwmii\fR basically consists of clients, columns, views, and +the bar, which are described in detail in the +\fBTerminology\fR section. + +.SS Terminology .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. +A physical or virtual (Xinerama or Xnest(1)) +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. +A screen layer of \fBwmii\fR 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. +A screen layer of \fBwmii\fR 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. .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, -or several tags, e.g. \fIwork+mail\fP\&. -Tags are separated with the \fI+\fP -character. +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\fR, or several tags, e.g. \fIwork+mail\fR. +Tags are separated with the \fI+\fR character. .TP View -A set of clients containing a specific tag, quite -similar to a workspace in other window managers. It -consists of the floating and managed layers. +A set of clients containing a specific tag, quite +similar 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 +user\-defined 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. -.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. -.PP -The filesystem can be accessed by connecting to the -\fIaddress\fP -of wmii -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 -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. -.PP -Here is a list of the default actions: -.PP +An event is a message which can be read from a +special file in the filesystem of \fBwmii\fR, such as a +mouse button press, a key press, or a message written by +a different 9P\-client. + + +.SS Basic window management +.P +Running a raw \fBwmii\fR process without a 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 \fIMod1 (Alt)\fR +modifier key. Other interactions, such as customizing the style, +killing or retagging clients, and grabbing keys, cannot be +achieved without accessing the filesystem. + +.P +The filesystem can be accessed by connecting to the +\fIaddress\fR of \fBwmii\fR with any 9P\-capable client, such +as wmiir(1) + +.SS Actions +.P +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 +\&'/home/kris/wmiiinst/etc/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. + +.P +Here is a list of the default actions: + .TS -tab(&) expand; -l lS. -T{ -quit -T}&T{ -leave the window manager nicely -T} -T{ -status -T}&T{ -periodically print date and load average to the bar -T} -T{ -welcome -T}&T{ -display a welcome message that contains the wmii tutorial -T} -T{ -wmiirc -T}&T{ -configure wmii -T} +tab(^); ll. + quit^leave the window manager nicely + status^periodically print date and load average to the bar + welcome^display a welcome message that contains the wmii tutorial + wmiirc^configure wmii .TE -.PP -.SS DEFAULT KEY BINDINGS + +.SS Default Key Bindings .SS Moving Around -.PP .TS -tab(&) expand; -l lS. -T{ -\fBKey\fP -T}&T{ -\fBAction\fP -T} -T{ -Mod\-h -T}&T{ -Move to a window to the \fIleft\fP -of the one currently -focused -T} -T{ -Mod\-l -T}&T{ -Move to a window to the \fIright\fP -of the one currently -focused -T} -T{ -Mod\-j -T}&T{ -Move to the window \fIbelow\fP -the one currently focused -T} -T{ -Mod\-k -T}&T{ -Move to a window \fIabove\fP -the one currently focused -T} -T{ -Mod\-space -T}&T{ -Toggle between the managed and floating layers -T} -T{ -Mod\-t \fItag\fP -T}&T{ -Move to the view of the given \fItag\fP -T} -T{ -Mod\-\fI[0\-9]\fP -T}&T{ -Move to the view with the given number -T} +tab(^); ll. + \fBKey\fR^\fBAction\fR + Mod\-h^Move to a window to the \fIleft\fR of the one currently focused + Mod\-l^Move to a window to the \fIright\fR of the one currently focused + Mod\-j^Move to the window \fIbelow\fR the one currently focused + Mod\-k^Move to a window \fIabove\fR the one currently focused + Mod\-space^Toggle between the managed and floating layers + Mod\-t \fI<tag>\fR^Move to the view of the given \fI<tag>\fR + Mod\-\fI\fI[0\-9]\fR\fR^Move to the view with the given number .TE -.PP + .SS Moving Things Around -.PP .TS -tab(&) expand; -l lS. -T{ -\fBKey\fP -T}&T{ -\fBAction\fP -T} -T{ -Mod\-Shift\-h -T}&T{ -Move the current window \fIwindow\fP -to a -column on the \fIleft\fP -T} -T{ -Mod\-Shift\-l -T}&T{ -Move the current window to a column -on the \fIright\fP -T} -T{ -Mod\-Shift\-j -T}&T{ -Move the current window below the window -beneath it. -T} -T{ -Mod\-Shift\-k -T}&T{ -Move the current window above the window -above it. -T} -T{ -Mod\-Shift\-space -T}&T{ -Toggle the current window between the -managed and floating layer -T} -T{ -Mod\-Shift\-t \fItag\fP -T}&T{ -Move the current window to the -view of the given \fItag\fP -T} -T{ -Mod\-Shift\-\fI[0\-9]\fP -T}&T{ -Move to the current window to the -view with the given number -T} +tab(^); ll. + \fBKey\fR^\fBAction\fR + Mod\-Shift\-h^Move the current window \fIwindow\fR to a column on the \fIleft\fR + Mod\-Shift\-l^Move the current window to a column on the \fIright\fR + Mod\-Shift\-j^Move the current window below the window beneath it. + Mod\-Shift\-k^Move the current window above the window above it. + Mod\-Shift\-space^Toggle the current window between the managed and floating layer + Mod\-Shift\-t \fI<tag>\fR^Move the current window to the view of the given \fI<tag>\fR + Mod\-Shift\-\fI\fI[0\-9]\fR\fR^Move to the current window to the view with the given number .TE -.PP + .SS Miscellaneous -.PP .TS -tab(&) expand; -l lS. -T{ -\fBKey\fP -T}&T{ -\fBAction\fP -T} -T{ -Mod\-m -T}&T{ -Switch the current column to \fImax mode\fP -T} -T{ -Mod\-s -T}&T{ -Switch the current column to \fIstack mode\fP -T} -T{ -Mod\-d -T}&T{ -Switch the current column to \fIdefault mode\fP -T} -T{ -Mod\-Shift\-c -T}&T{ -Kill -the selected client -T} -T{ -Mod\-p \fIprogram\fP -T}&T{ -Execute -\fIprogram\fP -T} -T{ -Mod\-a \fIaction\fP -T}&T{ -Execute -the named \fIaction\fP -T} -T{ -Mod\-Enter -T}&T{ -Execute -an xterm -T} +tab(^); ll. + \fBKey\fR^\fBAction\fR + Mod\-m^Switch the current column to \fImax mode\fR + Mod\-s^Switch the current column to \fIstack mode\fR + Mod\-d^Switch the current column to \fIdefault mode\fR + Mod\-Shift\-c^\fBKill\fR the selected client + Mod\-p \fI<program>\fR^\fBExecute\fR \fI<program>\fR + Mod\-a \fI<action>\fR^\fBExecute\fR the named <action + Mod\-Enter^\fBExecute\fR an \fBxterm\fR .TE -.PP -.SH CONFIGURATION -.PP -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. -.PP -.SH FILESYSTEM -.PP -Most aspects of wmii -are controlled via the filesystem. -It is usually accessed via the \fIwmiir\fP(1) -command, but it -can be accessed by any 9P -client, including plan9port\&'s -\fI9P\fP(1), -and can be mounted natively on Linux via v9fs[1], -and on Inferno (which man run on top of Linux). -.PP -The filesystem is, as are many other 9P filesystems, entirely -synthetic. The files exist only in memory, and are not written -to disk. They are generally initiated on wmii startup via a -script such as rc.wmii or wmiirc. Several files read commands, -others simply act as if they were ordinary files (their contents -are updated and returned exactly as written), though writing -them has side\-effects (such as changing key bindings). A -description of the filesystem layout and control commands -follows. -.PP + +.SH Configuration +.P +If you feel the need to change the default configuration, then +customize (as described above) the \fBwmiirc\fR action. This +action is executed at the end of the \fBwmii\fR script and does +all the work of setting up the window manager, the key bindings, +the bar labels, etc. + +.SS Filesystem +.P +Most aspects of \fBwmii\fR are controlled via the filesystem. +It is usually accessed via the wmiir(1) command, but it +can be accessed by any 9P, including plan9port's +9P\fI[1]\fR, and can be mounted natively on Linux via v9fs\fI[1]\fR, +and on Inferno (which man run on top of Linux). + +.P +The filesystem is, as are many other 9P filesystems, entirely +synthetic. The files exist only in memory, and are not written +to disk. They are generally initiated on wmii startup via a +script such as rc.wmii or wmiirc. Several files read commands, +others simply act as if they were ordinary files (their contents +are updated and returned exactly as written), though writing +them has side\-effects (such as changing key bindings). A +description of the filesystem layout and control commands +follows. + .SS Hierarchy .TP / -Global control files +Global control files .TP -/client/\fI*\fP/ -Client control files +/client/\fI*\fR/ +Client control files .TP -/tag/\fI*\fP/ -View control files +/tag/\fI*\fR/ +View control files .TP /lbar/, /rbar/ -Files representing the contents of the -bottom bar -.PP +Files representing the contents of the bottom bar + + .SS The / Hierarchy .TP colrules -The \fIcolrules\fP -file contains a list of -rules which affect the width of newly created columns. -Rules have the form: -.br -\fB \fP -.br -\fB \fP\fB \fP/\fIregex\fP/ -\-> \fIwidth\fP[\fI+width...\fP] -.br -\fB \fP -.br -When a new column, \fIn\fP, -is created on a view whose -name matches \fIregex\fP, -the \fIn\fPth -given -\fIwidth\fP -percentage of the screen is given to it. If -there is no \fIn\fPth -width, 1/\fIncol\fPth -of the -screen is given to it. +The \fIcolrules\fR file contains a list of +rules which affect the width of newly created columns. +Rules have the form: + +.nf + /\fI<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR* +.fi + + +When a new column, \fIn\fR, is created on a view whose +name matches \fI<regex>\fR, the \fIn\fRth given +\fI<width>\fR percentage of the screen is given to it. If +there is no \fIn\fRth width, 1/\fIncol\fRth of the +screen is given to it. + .TP tagrules -The \fItagrules\fP -file contains a list of -rules similar to the colrules. These rules specify -the tags a client is to be given when it is created. -Rules are specified: -.br -\fB \fP -.br -\fB \fP\fB \fP/\fIregex\fP/ -\-> \fItag\fP[\fI+tag...\fP] -.br -\fB \fP -.br -When a client\&'s \fIname\fP:\fIclass\fP:\fItitle\fP -matches -\fIregex\fP, -it is given the tagstring \fItag\fP\&. -There are -two special tags. \fI!\fP, -which is deprecated, and identical -to \fIsel\fP, -represents the current tag. \fI~\fP -represents the floating layer. +The \fItagrules\fR file contains a list of +rules similar to the colrules. These rules specify +the tags a client is to be given when it is created. +Rules are specified: + +.nf + /\fI<regex>\fR/ -> \fI<tag>\fR\fI[+\fI<tag>\fR]\fR* +.fi + + +When a client's \fI<name>\fR:\fI<class>\fR:\fI<title>\fR matches +\fI<regex>\fR, it is given the tagstring \fI<tag>\fR. There are +two special tags. \fB!\fR, which is deprecated, and identical +to \fIsel\fR, represents the current tag. \fB~\fR +represents the floating layer. + .TP keys -The \fIkeys\fP -file contains a list of keys which -wmii -will grab. Whenever these key combinations -are pressed, the string which represents them are -written to /event -as: Key \fIstring\fP +The \fIkeys\fR file contains a list of keys which +\fBwmii\fR will grab. Whenever these key combinations +are pressed, the string which represents them are +written to '/event' as: Key \fI<string>\fR .TP event -The \fIevent\fP -file never returns EOF while -wmii -is running. It stays open and reports events -as they occur. Included among them are: -.RS -.TP -\fINot\fPUrgent \fIclient\fP \fIManager|Client\fP -\fIclient\fP\&'s -urgent hint has been set or -unset. The second arg is \fIClient\fP -if it\&'s -been set by the client, and \fIManager\fP -if -it\&'s been set by wmii -via a control -message. -.TP -\fINot\fPUrgentTag \fItag\fP \fIManager|Client\fP -A client on \fItag\fP -has had its urgent hint -set, or the last urgent client has had its -urgent hint unset. -.TP -ClientClick|ClientMouseDown \fIclient\fP \fIbutton\fP -A client\&'s titlebar has either been clicked or -has a button pressed over it. -.TP -\fILeft|Right\fPBar\fIClick|MouseDown\fP \fIbutton\fP \fIbar\fP -A left or right bar has been clicked or has a -button pressed over it. -.TP -\&.\&.\&. -To be continued... -.RE -.RS -.PP -.RE +The \fIevent\fR file never returns EOF while +\fBwmii\fR is running. It stays open and reports events +as they occur. Included among them are: +.RS 8 +.TP +\fI[Not]\fRUrgent \fI<client>\fR \fI[Manager|Client]\fR +\fI<client>\fR's urgent hint has been set or +unset. The second arg is \fI[Client]\fR if it's +been set by the client, and \fI[Manager]\fR if +it's been set by \fBwmii\fR via a control +message. +.TP +\fI[Not]\fRUrgentTag \fI<tag>\fR \fI[Manager|Client]\fR +A client on \fI<tag>\fR has had its urgent hint +set, or the last urgent client has had its +urgent hint unset. +.TP +Client\fI<Click|MouseDown>\fR \fI<client>\fR \fI<button>\fR +A client's titlebar has either been clicked or +has a button pressed over it. +.TP +\fI[Left|Right]\fRBar\fI[Click|MouseDown]\fR \fI<button>\fR \fI<bar>\fR +A left or right bar has been clicked or has a +button pressed over it. +.TP +... +To be continued... +.RS -8 + .TP ctl -The \fIctl\fP -file takes a number of messages to -change global settings such as color and font, which can -be viewed by reading it. It also takes the following -commands: -.RS +The \fIctl\fR file takes a number of messages to +change global settings such as color and font, which can +be viewed by reading it. It also takes the following +commands: +.RS 8 .TP quit -Quit wmii -.TP -exec \fIprog\fP -Replace wmii -with -\fIprog\fP -.RE -.RS -.PP -.RE -.PP +Quit \fBwmii\fR +.TP +exec \fI<prog>\fR +Replace \fBwmii\fR with \fI<prog>\fR + + .SS The /client/ Hierarchy -.PP -Each directory under /client/ -represents an X11 client. -Each directory is named for the X window id of the window the -client represents, in the form that most X utilities recognize. -The one exception is the special sel -directory, which -represents the currently selected client. -.PP -.RE +.P +Each directory under '/client/' represents an X11 client. +Each directory is named for the X window id of the window the +client represents, in the form that most X utilities recognize. +The one exception is the special 'sel' directory, which +represents the currently selected client. + .TP ctl -When read, the ctl -file returns the X window id -of the client. The following commands may be written to -it: -.RS +When read, the 'ctl' file returns the X window id +of the client. The following commands may be written to +it: +.RS 8 .TP kill -Close the client\&'s window. This command will -likely kill the X client in the future -(including its other windows), while the close -command will replace it. -.TP -\fINot\fPUrgent -Set or unset the client\&'s urgent -hint. -.TP -\fINot\fPFullscreen -.RS -.PP -.RE -.RE -.PP -.RE +Close the client's window. This command will +likely kill the X client in the future +(including its other windows), while the close +command will replace it. +.TP +\fI[Not]\fRUrgent +Set or unset the client's urgent hint. +.TP +\fI[Not]\fRFullscreen +.RS -8 + .TP label -Set or read a client\&'s label (title). +Set or read a client's label (title). .TP props -Returns a clients class and label as: -\fIname\fP:\fIclass\fP:\fIlabel\fP +Returns a clients class and label as: +\fI<name>\fR:\fI<class>\fR:\fI<label>\fR .TP tags -Set or read a client\&'s tags. Tags are separated by -\fI+\fP -or \fI\-\fP\&. -Tags beginning with \fI+\fP -are -added, while those beginning 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 +Set or read a client's tags. Tags are separated by +\fB+\fR or \fB\-\fR. Tags beginning with \fB+\fR are +added, while those beginning with \fB\-\fR are removed. +If the tag string written begins with \fB+\fR or +\fB\-\fR, the written tags are added to or removed from +the client's set, otherwise, the set is overwritten. + + .SS The /tag/ Hierarchy -.PP -Each directory under /tag/ -represents a view, containing -all of the clients with the given tag applied. The special -sel -directory represents the currently selected tag. -.PP +.P +Each directory under '/tag/' represents a view, containing +all of the clients with the given tag applied. The special +\&'sel' directory represents the currently selected tag. + .TP ctl -The ctl -file can be read to retrieve the name -of the tag the directory represents, or written with the -following commands: -.RS +The 'ctl' file can be read to retrieve the name +of the tag the directory represents, or written with the +following commands: +.RS 8 .TP select -Select a client: -.br -\fB \fP\fB \fPselect \fIdirection\fP -.br -\fB \fP\fB \fPselect \fIframe\fP -.br +Select a client: +select \fI[left|right|up|down]\fR +.P +select \fI[\fI<row number>\fR|sel]\fR \fI[\fI<frame number>\fR]\fR +.P +select client \fI<client>\fR .TP send -Send a client somewhere: -.RS -.TP -send \fIclient|sel\fP \fIup|down|left|right\fP -.TP -send \fIclient|sel\fP \fIarea\fP -Send -\fIclient\fP -to the nth \fIarea\fP -.TP -send \fIclient|sel\fP toggle -Toggle -\fIclient\fP -between the floating and -managed layer. -.RE -.RS -.PP -.RE +Send a client somewhere: +.RS 8 +.TP +send \fI[\fI<client>\fR|sel]\fR \fI[up|down|left|right]\fR +.TP +send \fI[\fI<client>\fR|sel]\fR \fI<area>\fR +Send \fI<client>\fR to the \fIn\fRth \fI<area>\fR +.TP +send \fI[\fI<client>\fR|sel]\fR toggle +Toggle \fI<client>\fR between the floating and managed layer. +.RS -8 .TP swap -Swap a client with another. Same syntax as -send. +Swap a client with another. Same syntax as send. + .TP grow -Grow or shrink a client. -\fB \fP\fB \fPgrow \fI<frame>\fP -\fI<direction>\fP -\fI[amount]\fP +Grow or shrink a client. + +.nf + grow \fI<frame>\fR \fI<direction>\fR \fI[\fI<amount>\fR]\fR +.fi + .TP nudge -Nudge a client in a given direction. -\fB \fP\fB \fPgrow \fI<frame>\fP -\fI<direction>\fP -\fI[amount]\fP -.RE -.RS -.PP -Where the arguments are defined as follows: -.RS -.RE +Nudge a client in a given direction. + +.nf + grow \fI<frame>\fR \fI<direction>\fR \fI[\fI<amount>\fR]\fR +.fi + +.RS -8 +Where the arguments are defined as follows: +.RS 8 .TP area -Selects a column or the floating area. -.br -\fB \fP\fB \fParea ::= "~"\fB \fP| <number> | "sel" -.br -Where represents the floating area and <number> -represents a column index, starting at one. +Selects a column or the floating area. + +.nf + area ::= "~" | \fI<number>\fR | "sel" +.fi + + +Where represents the floating area and \fI<number>\fR represents a column +index, starting at one. + .TP frame -Selects a client window. -.br -\fB \fP\fB \fPframe ::= <area> <space> <index> | <area> "sel" | client <window\-id> -.br -Where <index> represents the nth frame of <area> or -<window\-id> is the X11 window id of the given client. +Selects a client window. + +.nf + frame ::= \fI<area>\fR \fI<space>\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. + .TP amount -The amount to grow or nudge something. -.br -\fB \fP\fB \fPamount ::= <number> "px"? -.br -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 increment (as defined by X11) in a given -direction. -.RE -.RS -.PP -.RE +The amount to grow or nudge something. + +.nf + amount ::= \fI<number>\fR "px"? +.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 +increment (as defined by X11) in a given direction. +.RS -8 .TP index -Read for a description of the contents of a tag. -.PP +Read for a description of the contents of a tag. + + .SS The /rbar/, /lbar/ Hierarchy -.PP -The files under /rbar/ -and /lbar/ -represent the -items of the bar at the bottom of the screen. Files under -/lbar/ -appear on the left side of the bar, while those -under /rbar/ -appear on the right, with the leftmost item -occupying all extra available space. The items are sorted -lexicographically. -.PP -The files may be read to obtain the colors and text of the bars. -The colors are at the beginning of the string, represented as a -tuple of 3 hex color codes for the foreground, background, and -border, respectively. When writing the bar files, the colors may -be omitted if the text would not otherwise appear to contain -them. -.PP +.P +The files under '/rbar/' and '/lbar/' represent the +items of the bar at the bottom of the screen. Files under +\&'/lbar/' appear on the left side of the bar, while those +under '/rbar/' appear on the right, with the leftmost item +occupying all extra available space. The items are sorted +lexicographically. + +.P +The files may be read to obtain the colors and text of the bars. +The colors are at the beginning of the string, represented as a +tuple of 3 hex color codes for the foreground, background, and +border, respectively. When writing the bar files, the colors may +be omitted if the text would not otherwise appear to contain +them. + .SH FILES -.PP .TP -/tmp/ns.USER.{DISPLAY%\&.0}/wmii -The wmii socket file -which provides a 9P service. +/tmp/ns.$USER.${DISPLAY%.0}/wmii +The wmii socket file which provides a 9P service. .TP -CONFPREFIX/wmii\-3.5 -Global action directory. +/home/kris/wmiiinst/etc/wmii\-3.5 +Global action directory. .TP $HOME/.wmii\-3.5 -User\-specific action directory. Actions -are first searched here. -.PP +User\-specific action directory. Actions are first searched here. + + .SH ENVIRONMENT -.PP .TP HOME, DISPLAY -See the section \fBFILES\fP -above. -.PP -The following variables are set and exported within wmii -and -thus can be used in actions: -.PP +See the section \fBFILES\fR above. + +.P +The following variables are set and exported within \fBwmii\fR and +thus can be used in actions: + .TP WMII_ADDRESS -Socket file of Used by \fIwmiir\fP(1)\&. -.PP +Socket file of Used by wmiir(1). + .SH SEE ALSO -\fIdmenu\fP(1), -\fIwmiir\fP(1) -.PP -[1] http://www.suckless.org/wiki/wmii/tips/9p_tips -.PP -.\" NOTE: This file is generated, DO NOT EDIT. +.P +dmenu(1), wmiir(1) + +.P +\fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips + + +.\" man code generated by txt2tags 2.5 (http://txt2tags.sf.net) +.\" cmdline: txt2tags -o- wmii.man1 + diff --git a/man/wmii.man1 b/man/wmii.man1 @@ -0,0 +1,458 @@ +WMII + +Dec, 2008 + +%!target: man +%!encoding: UTF-8 + +% Special formatting for certain constructs. They, unfortunately +% have to be post-processed. The _italic_ hack is necessary for +% italicising things like /_foo_/, which txt2tags will ignore. +% The others need to work in ``` lines. +%!postproc(man): (<.*?>) \\fI\1\\fR +%!postproc(man): _(.*?)_ \\fI\1\\fR +%!postproc(man): `(.*?)` \\fB\1\\fR +%!postproc(man): (\[.*?\]) \\fI\1\\fR +%!postproc(man): \+$ \n.P + +%!postproc(html): (<.*?>) (:arg \1:) +%!postproc(html): _(.*?)_ (:emph \1:) +%!postproc(html): `(.*?)` (:code \1:) +%!postproc(html): \+$ <br/> + +%!postproc(html) \(:(\w+)\s*(.*):\) <span class="\1">\2</span> + +% Well, it seems that txt2tags isn't particularly well suited +% to troff output. These two hacks make multi-level definition +% lists possible. +%!postproc(man): ^\s*>>$ .RS 8 +%!postproc(man): ^\s*<<$ .RS -8 + +%!postproc(html): ^\s*>>$ +%!postproc(html): ^\s*<<$ + += NAME = + +wmii - Window Manager Improved Improved + += SYNOPSIS = + +wmii [-a <address>] [-c <wmiirc>] + +wmii -v + += DESCRIPTION = + +== Overview == + +`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. + +`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. + +`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 +wmiir(1). This allows simple and powerful remote control +of the core window manager. + +`wmii` basically consists of clients, columns, views, and +the bar, which are described in detail in the +**Terminology** section. + +== Terminology == + +: Display + A running X server instance consisting of input + devices and screens. +: Screen + A physical or virtual (Xinerama or Xnest(1)) + screen of an X display. A screen displays a bar window + and a view at a time. +: Window + A (rectangular) drawable X object which is + displayed on a screen, usually an application window. +: Client + An application window surrounded by a frame window + containing a border and a titlebar. + +: 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. +: Managed layer + A screen layer of `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. +: 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. + _work_, or several tags, e.g. _work+mail_. + Tags are separated with the _+_ character. +: View + A set of clients containing a specific tag, quite + similar to a workspace in other window managers. It + consists of the floating and managed layers. +: 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. +: Bar + The bar at the bottom of the screen displays a label + for each view and allows the creation of arbitrary + user-defined labels. +: 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. +: + +== Basic window management == + +Running a raw `wmii` process without a 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 //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 +//address// of `wmii` with any 9P-capable client, such +as wmiir(1) + +== 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 +'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. + +Here is a list of the default actions: + +| quit | leave the window manager nicely +| status | periodically print date and load average to the bar +| welcome | display a welcome message that contains the wmii tutorial +| wmiirc | configure wmii + +== Default Key Bindings == + +=== Moving Around === + +|| Key | Action +| Mod-h | Move to a window to the _left_ of the one currently focused +| Mod-l | Move to a window to the _right_ of the one currently focused +| Mod-j | Move to the window _below_ the one currently focused +| Mod-k | Move to a window _above_ the one currently focused +| Mod-space | Toggle between the managed and floating layers +| Mod-t <tag> | Move to the view of the given <tag> +| Mod-//[0-9]// | Move to the view with the given number + +=== Moving Things Around === + +|| Key | Action +| Mod-Shift-h | Move the current window _window_ to a column on the _left_ +| Mod-Shift-l | Move the current window to a column on the _right_ +| Mod-Shift-j | Move the current window below the window beneath it. +| Mod-Shift-k | Move the current window above the window above it. +| Mod-Shift-space | Toggle the current window between the managed and floating layer +| Mod-Shift-t <tag> | Move the current window to the view of the given <tag> +| Mod-Shift-//[0-9]// | Move to the current window to the view with the given number + +=== Miscellaneous === + +|| Key | Action +| Mod-m | Switch the current column to _max mode_ +| Mod-s | Switch the current column to _stack mode_ +| Mod-d | Switch the current column to _default mode_ +| Mod-Shift-c | `Kill` the selected client +| Mod-p <program> | `Execute` <program> +| Mod-a <action> | `Execute` the named <action +| Mod-Enter | `Execute` an `xterm` + += Configuration = + +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. + +== Filesystem == + +Most aspects of `wmii` are controlled via the filesystem. +It is usually accessed via the wmiir(1) command, but it +can be accessed by any ``9P``, including plan9port's +9P[1], and can be mounted natively on Linux via v9fs[1], +and on Inferno (which man run on top of Linux). + +The filesystem is, as are many other 9P filesystems, entirely +synthetic. The files exist only in memory, and are not written +to disk. They are generally initiated on wmii startup via a +script such as rc.wmii or wmiirc. Several files read commands, +others simply act as if they were ordinary files (their contents +are updated and returned exactly as written), though writing +them has side-effects (such as changing key bindings). A +description of the filesystem layout and control commands +follows. + +== Hierarchy == + +: / + Global control files +: /client/_*_/ + Client control files +: /tag/_*_/ + View control files +: /lbar/, /rbar/ + Files representing the contents of the bottom bar +: + +== The / Hierarchy == + +: colrules + The _colrules_ file contains a list of + rules which affect the width of newly created columns. + Rules have the form: + +``` /<regex>/ -> <width>[+<width>]* + + When a new column, _n_, is created on a view whose + name matches <regex>, the _n_th given + <width> percentage of the screen is given to it. If + there is no _n_th width, 1/_ncol_th of the + screen is given to it. + +: tagrules + The //tagrules// file contains a list of + rules similar to the colrules. These rules specify + the tags a client is to be given when it is created. + Rules are specified: + +``` /<regex>/ -> <tag>[+<tag>]* + + When a client's <name>:<class>:<title> matches + <regex>, it is given the tagstring <tag>. There are + two special tags. **!**, which is deprecated, and identical + to _sel_, represents the current tag. **~** + represents the floating layer. + +: keys + The _keys_ file contains a list of keys which + `wmii` will grab. Whenever these key combinations + are pressed, the string which represents them are + written to '/event' as: Key <string> +: event + The _event_ file never returns EOF while + `wmii` is running. It stays open and reports events + as they occur. Included among them are: + >> + : [Not]Urgent <client> [Manager|Client] + <client>'s urgent hint has been set or + unset. The second arg is [Client] if it's + been set by the client, and [Manager] if + it's been set by `wmii` via a control + message. + : [Not]UrgentTag <tag> [Manager|Client] + A client on <tag> has had its urgent hint + set, or the last urgent client has had its + urgent hint unset. + : Client<Click|MouseDown> <client> <button> + A client's titlebar has either been clicked or + has a button pressed over it. + : [Left|Right]Bar[Click|MouseDown] <button> <bar> + A left or right bar has been clicked or has a + button pressed over it. + : ... + To be continued... + : + << + +: ctl + The _ctl_ file takes a number of messages to + change global settings such as color and font, which can + be viewed by reading it. It also takes the following + commands: + >> + : quit + Quit `wmii` + : exec <prog> + Replace `wmii` with <prog> + : +: + +== The /client/ Hierarchy == + +Each directory under '/client/' represents an X11 client. +Each directory is named for the X window id of the window the +client represents, in the form that most X utilities recognize. +The one exception is the special 'sel' directory, which +represents the currently selected client. + +: ctl + When read, the 'ctl' file returns the X window id + of the client. The following commands may be written to + it: + >> + : kill + Close the client's window. This command will + likely kill the X client in the future + (including its other windows), while the close + command will replace it. + : [Not]Urgent + Set or unset the client's urgent hint. + : [Not]Fullscreen + << + +: label + Set or read a client's label (title). +: props + Returns a clients class and label as: + <name>:<class>:<label> +: tags + Set or read a client's tags. Tags are separated by + **+** or **-**. Tags beginning with **+** are + added, while those beginning with **-** are removed. + If the tag string written begins with **+** or + **-**, the written tags are added to or removed from + the client's set, otherwise, the set is overwritten. +: + +== The /tag/ Hierarchy == + +Each directory under '/tag/' represents a view, containing +all of the clients with the given tag applied. The special +'sel' directory represents the currently selected tag. + +: ctl + The 'ctl' file can be read to retrieve the name + of the tag the directory represents, or written with the + following commands: + >> + : select + Select a client: + select [left|right|up|down] + + select [<row number>|sel] [<frame number>] + + select client <client> + : send + Send a client somewhere: + >> + : send [<client>|sel] [up|down|left|right] + : send [<client>|sel] <area> + Send <client> to the _n_th <area> + : send [<client>|sel] toggle + Toggle <client> between the floating and managed layer. + << + : swap + Swap a client with another. Same syntax as send. + + : grow + Grow or shrink a client. + +``` grow <frame> <direction> [<amount>] + : nudge + Nudge a client in a given direction. + +``` grow <frame> <direction> [<amount>] + : + << + Where the arguments are defined as follows: + >> + : area + Selects a column or the floating area. + +``` area ::= "~" | <number> | "sel" + + Where represents the floating area and <number> represents a column + index, starting at one. + + : frame + Selects a client window. + +``` frame ::= <area> <space> <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. + + : amount + The amount to grow or nudge something. + +``` amount ::= <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 + increment (as defined by X11) in a given direction. + << +: index + Read for a description of the contents of a tag. +: + + +== The /rbar/, /lbar/ Hierarchy == + +The files under '/rbar/' and '/lbar/' represent the +items of the bar at the bottom of the screen. Files under +'/lbar/' appear on the left side of the bar, while those +under '/rbar/' appear on the right, with the leftmost item +occupying all extra available space. The items are sorted +lexicographically. + +The files may be read to obtain the colors and text of the bars. +The colors are at the beginning of the string, represented as a +tuple of 3 hex color codes for the foreground, background, and +border, respectively. When writing the bar files, the colors may +be omitted if the text would not otherwise appear to contain +them. + += FILES = + +: /tmp/ns.$USER.${DISPLAY%.0}/wmii + The wmii socket file which provides a 9P service. +: CONFPREFIX/wmii-3.5 + Global action directory. +: $HOME/.wmii-3.5 + User-specific action directory. Actions are first searched here. +: + += ENVIRONMENT = + +: HOME, DISPLAY + See the section **FILES** above. +: +The following variables are set and exported within `wmii` and +thus can be used in actions: + +: WMII_ADDRESS + Socket file of Used by wmiir(1). +: += SEE ALSO = +dmenu(1), wmiir(1) + +[1] http://www.suckless.org/wiki/wmii/tips/9p_tips + diff --git a/man/wmii.tex b/man/wmii.tex @@ -1,392 +0,0 @@ -\begin{Name}{1}{wmii}{Kris Maglione}{}{wmii - window manager improved, improved} - \Prog{wmii}-VERSION -\end{Name} - -\section{SYNOPSIS} -\Prog{wmii} \oOptArg{-a}{<address>} \oOptArg{-c}{<wmiirc>} \\ -\Prog{wmii} \Opt{-v} - -\section{DESCRIPTION} - -\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. - -\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. - -\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. - -\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}. - Tags are separated with the \emph{+} character. -\item[View] A set of clients containing a specific tag, quite - similar 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. - -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 -\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. - -Here is a list of the default actions: - -\begin{Table}[]{2} -quit & leave the window manager nicely \\ -status & periodically print date and load average to the bar \\ -welcome & display a welcome message that contains the wmii tutorial \\ -wmiirc & configure wmii \\ -\end{Table} - -\subsection{Default Key Bindings} -\subsubsection{Moving Around} -\begin{Table}[]{2} -\textbf{Key} & \textbf{Action} \\ -Mod-h & Move to a window to the \emph{left} of the one currently - focused \\ -Mod-l & Move to a window to the \emph{right} of the one currently - focused \\ -Mod-j & Move to the window \emph{below} the one currently focused \\ -Mod-k & Move to a window \emph{above} the one currently focused \\ -Mod-space & Toggle between the managed and floating layers \\ -Mod-t \emph{tag} & Move to the view of the given \emph{tag} \\ -Mod-\emph{[0-9]} & Move to the view with the given number \\ -\end{Table} - -\subsubsection{Moving Things Around} -\begin{Table}[]{2} -\textbf{Key} & \textbf{Action} \\ -Mod-Shift-h & Move the current window \emph{window} to a - column on the \emph{left} \\ -Mod-Shift-l & Move the current window to a column - on the \emph{right} \\ -Mod-Shift-j & Move the current window below the window - beneath it. \\ -Mod-Shift-k & Move the current window above the window - above it. \\ -Mod-Shift-space & Toggle the current window between the - managed and floating layer \\ -Mod-Shift-t \emph{tag} & Move the current window to the - view of the given \emph{tag} \\ -Mod-Shift-\emph{[0-9]} & Move to the current window to the - view with the given number \\ -\end{Table} - -\subsubsection{Miscellaneous} -\begin{Table}[]{2} -\textbf{Key} & \textbf{Action} \\ -Mod-m & Switch the current column to \emph{max mode} \\ -Mod-s & Switch the current column to \emph{stack mode} \\ -Mod-d & Switch the current column to \emph{default mode} \\ -Mod-Shift-c & \Prog{Kill} the selected client \\ -Mod-p \emph{program} & \Prog{Execute} \emph{program} \\ -Mod-a \emph{action} & \Prog{Execute} the named \emph{action} \\ -Mod-Enter & \Prog{Execute} an \Prog{xterm} \\ -\end{Table} - -\section{Configuration} - -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. - -\section{Filesystem} - -Most aspects of \Prog{wmii} are controlled via the filesystem. -It is usually accessed via the \Cmd{wmiir}{1} command, but it -can be accessed by any \texttt{9P} client, including plan9port's -\Cmd{9P}{1}, and can be mounted natively on Linux via v9fs[1], -and on Inferno (which man run on top of Linux). - -The filesystem is, as are many other 9P filesystems, entirely -synthetic. The files exist only in memory, and are not written -to disk. They are generally initiated on wmii startup via a -script such as rc.wmii or wmiirc. Several files read commands, -others simply act as if they were ordinary files (their contents -are updated and returned exactly as written), though writing -them has side-effects (such as changing key bindings). A -description of the filesystem layout and control commands -follows. - -\subsubsection{Hierarchy} -\begin{description} -\item[/] Global control files -\item[/client/\emph{*}/] Client control files -\item[/tag/\emph{*}/] View control files -\item[/lbar/, /rbar/] Files representing the contents of the - bottom bar -\end{description} - -\subsubsection{The / Hierarchy} -\begin{description} -\item[colrules] The \emph{colrules} file contains a list of - rules which affect the width of newly created columns. - Rules have the form: \\ \SP % Yuck! (kludge) - \MANbr - \SP\SP /\Arg{regex}/ -> \Arg{width}\oArg{+width...} \\ \SP - \MANbr - When a new column, \Arg{n}, is created on a view whose - name matches \Arg{regex}, the \Arg{n}th given - \Arg{width} percentage of the screen is given to it. If - there is no \Arg{n}th width, 1/\emph{ncol}th of the - screen is given to it. -\item[tagrules] The \emph{tagrules} file contains a list of - rules similar to the colrules. These rules specify - the tags a client is to be given when it is created. - Rules are specified: \\ \SP - \MANbr - \SP\SP /\Arg{regex}/ -> \Arg{tag}\oArg{+tag...} \\ \SP - \MANbr - When a client's \Arg{name}:\Arg{class}:\Arg{title} matches - \Arg{regex}, it is given the tagstring \Arg{tag}. There are - two special tags. \emph{!}, which is deprecated, and identical - to \emph{sel}, represents the current tag. \emph{\Tilde} - represents the floating layer. -\item[keys] The \emph{keys} file contains a list of keys which - \Prog{wmii} will grab. Whenever these key combinations - are pressed, the string which represents them are - written to \File{/event} as: Key \Arg{string} -\item[event] The \emph{event} file never returns EOF while - \Prog{wmii} is running. It stays open and reports events - as they occur. Included among them are: - \begin{description} - \item[\emph{Not}Urgent \Arg{client} \Arg{Manager\Bar Client}] - \Arg{client}'s urgent hint has been set or - unset. The second arg is \emph{Client} if it's - been set by the client, and \emph{Manager} if - it's been set by \Prog{wmii} via a control - message. - \item[\emph{Not}UrgentTag \Arg{tag} \Arg{Manager\Bar Client}] - A client on \Arg{tag} has had its urgent hint - set, or the last urgent client has had its - urgent hint unset. - \item[ClientClick\Bar ClientMouseDown \Arg{client} \Arg{button}] - A client's titlebar has either been clicked or - has a button pressed over it. - \item[\emph{Left\Bar Right}Bar\emph{Click\Bar MouseDown} \Arg{button} \Arg{bar}] - A left or right bar has been clicked or has a - button pressed over it. - \item[...] To be continued... - \end{description} -\item[ctl] The \emph{ctl} file takes a number of messages to - change global settings such as color and font, which can - be viewed by reading it. It also takes the following - commands: - \begin{description} - \item[quit] Quit \Prog{wmii} - \item[exec \Arg{prog}] Replace \Prog{wmii} with - \emph{prog} - \end{description} -\end{description} - -\subsubsection{The /client/ Hierarchy} - -Each directory under \File{/client/} represents an X11 client. -Each directory is named for the X window id of the window the -client represents, in the form that most X utilities recognize. -The one exception is the special \File{sel} directory, which -represents the currently selected client. - -\begin{description} -\item[ctl] When read, the \File{ctl} file returns the X window id - of the client. The following commands may be written to - it: - \begin{description} - \item[kill] Close the client's window. This command will - likely kill the X client in the future - (including its other windows), while the close - command will replace it. - \item[\Arg{Not}Urgent] Set or unset the client's urgent - hint. - \item[\Arg{Not}Fullscreen] - - \end{description} -\item[label] Set or read a client's label (title). -\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 separated by - \emph{+} or \emph{-}. Tags beginning with \emph{+} are - added, while those beginning 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} - -Each directory under \File{/tag/} represents a view, containing -all of the clients with the given tag applied. The special -\File{sel} directory represents the currently selected tag. - -\begin{description} -\item[ctl] The \File{ctl} file can be read to retrieve the name - of the tag the directory represents, or written with the - following commands: - \begin{description} - \item[select] Select a client: \\ - \SP\SP select \Arg{direction} \\ - \SP\SP select \Arg{frame} \\ - \item[send] Send a client somewhere: - \begin{description} - \item[send \Arg{client|sel} \Arg{up|down|left|right}] - \item[send \Arg{client|sel} \Arg{area}] Send - \Arg{client} to the nth \Arg{area} - \item[send \Arg{client|sel} toggle] Toggle - \Arg{client} between the floating and - managed layer. - \end{description} - \item[swap] Swap a client with another. Same syntax as - send. - \item[grow] Grow or shrink a client. - \SP\SP grow \Arg{<frame>} \Arg{<direction>} \Arg{[amount]} - \item[nudge] Nudge a client in a given direction. - \SP\SP grow \Arg{<frame>} \Arg{<direction>} \Arg{[amount]} - \end{description} - - Where the arguments are defined as follows: - \begin{description} - \item[area] Selects a column or the floating area. \\ - \SP\SP area ::= "\Tilde"\SP | <number> | "sel" \\ - Where ~ represents the floating area and <number> - represents a column index, starting at one. - \item[frame] Selects a client window. \\ - \SP\SP frame ::= <area> <space> <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. - \item[amount] The amount to grow or nudge something. \\ - \SP\SP amount ::= <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 increment (as defined by X11) in a given - direction. - \end{description} - -\item[index] Read for a description of the contents of a tag. -\end{description} - -\subsubsection{The /rbar/, /lbar/ Hierarchy} - -The files under \File{/rbar/} and \File{/lbar/} represent the -items of the bar at the bottom of the screen. Files under -\File{/lbar/} appear on the left side of the bar, while those -under \File{/rbar/} appear on the right, with the leftmost item -occupying all extra available space. The items are sorted -lexicographically. - -The files may be read to obtain the colors and text of the bars. -The colors are at the beginning of the string, represented as a -tuple of 3 hex color codes for the foreground, background, and -border, respectively. When writing the bar files, the colors may -be omitted if the text would not otherwise appear to contain -them. - -\section{FILES} - -\begin{description} -\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. -\end{description} - -\section{ENVIRONMENT} - -\begin{description} -\item[HOME, DISPLAY] See the section \textbf{FILES} above. -\end{description} - -The following variables are set and exported within \Prog{wmii} and -thus can be used in actions: - -\begin{description} -\item[WMII\_ADDRESS] Socket file of Used by \Cmd{wmiir}{1}. -\end{description} - -\section{SEE ALSO} -\Cmd{dmenu}{1}, \Cmd{wmiir}{1} - -[1] http://www.suckless.org/wiki/wmii/tips/9p\_tips - diff --git a/man/wmiiloop.1 b/man/wmiiloop.1 @@ -1,72 +0,0 @@ -'\" t -.\" Manual page created with latex2man on Wed Oct 15 16:04:52 EDT 2008 -.\" NOTE: This file is generated, DO NOT EDIT. -.de Vb -.ft CW -.nf -.. -.de Ve -.ft R - -.fi -.. -.TH "WMIILOOP" "1" " Wed Dec 31 19:00:00 EDT 1969 -" "" "" -.SH NAME -wmiiloop\-VERSION -.PP -.SH SYNOPSIS -eval -"$(wmiiloop -<events)" -.PP -.SH DESCRIPTION -.PP -wmiiloop -is an awk and sh script which preprocesses \fIsh\fP(1) -syntax -to simplify writing a wmii event loop. -.PP -wmiiloop -associates lines begining with \fIEvent\fP, -\fIAction\fP, -or -\fIKey\fP -(henceforth known as \fB$keyword\fP), -followed by arbitrary -text (henceforth known as \fB$args\fP), -with functions which call any -indented lines which follow. In the function names, all non\-alphanumeric -characters in \fB$args\fP -are replaced with underscores (_). The -functions are named \fB$keyword\fP\&'_\&'\fB$args\fP\&. -.PP -Any variables in the unintented lines are interpolated by the shell. -.PP -Additionally, each declaration\&'s \fB$args\fP -are assigned to a variable -named \fB$keyword\fP\&'s\&'\&. -In this case, no transliteration occurs. For -instance, the following declaration: -.PP -.Vb -Key $MODKEY\-j - echo Got $@ -.Ve -yields (assuming \fI$MODKEY\fP -is set to \fIMod1\fP): -.PP -.Vb -Keys=" $Keys Mod1\-j" -Mod1_j() { - echo Got $@ -} -.Ve -.PP -.SH SEE ALSO -\fIwmii\fP(1), -\fIwmii\fP(1)\&. -\fIwmiir\fP(1), -PREFX/etc/wmiirc -.PP -.\" NOTE: This file is generated, DO NOT EDIT. diff --git a/man/wmiiloop.tex b/man/wmiiloop.tex @@ -1,42 +0,0 @@ -\begin{Name}{1}{wmiiloop}{Kris Maglione}{}{wmiiloop} - \Prog{wmiiloop}-VERSION -\end{Name} - -\section{Synopsis} -\Prog{eval} "\$(\Prog{wmiiloop} <\File{events})" - -\section{Description} - -\Prog{wmiiloop} is an awk and sh script which preprocesses \Cmd{sh}{1} syntax -to simplify writing a wmii event loop. - -\Prog{wmiiloop} associates lines begining with \emph{Event}, \emph{Action}, or -\emph{Key} (henceforth known as \textbf{\$keyword}), followed by arbitrary -text (henceforth known as \textbf{\$args}), with functions which call any -indented lines which follow. In the function names, all non-alphanumeric -characters in \textbf{\$args} are replaced with underscores (\_). The -functions are named \textbf{\$keyword}'_'\textbf{\$args}. - -Any variables in the unintented lines are interpolated by the shell. - -Additionally, each declaration's \textbf{\$args} are assigned to a variable -named \textbf{\$keyword}'s'. In this case, no transliteration occurs. For -instance, the following declaration: - -\begin{verbatim} -Key $MODKEY-j - echo Got $@ -\end{verbatim} -yields (assuming \emph{\$MODKEY} is set to \emph{Mod1}): - -\begin{verbatim} -Keys=" $Keys Mod1-j" -Mod1_j() { - echo Got $@ -} -\end{verbatim} - -\section{SEE ALSO} -\Cmd{wmii}{1}, \Cmd{wmii}{1}. \Cmd{wmiir}{1}, -\File{PREFX/etc/wmiirc} - diff --git a/mk/hdr.mk b/mk/hdr.mk @@ -54,9 +54,9 @@ all: echo FILTER $(BASE)$< $(FILTER) $< >$@ chmod 0755 $@ -.1.man1: - echo FILTER $(BASE)$< - $(FILTER) $< >$@ +.man1.1: + echo TXT2TAGS $(BASE)$< + txt2tags -o- $< | $(FILTER) >$@ .O.install: echo INSTALL $$($(CLEANNAME) $(BASE)$*) @@ -82,14 +82,14 @@ all: echo UNINSTALL $$($(CLEANNAME) $(BASE)$<) rm -f $(INCLUDE)/$< -.man1.install: +.1.install: set -e; \ man=1; \ path="$(MAN)/man$$man/$*.$$man"; \ echo INSTALL man $$($(CLEANNAME) "$(BASE)/$*($$man)"); \ cp "$<" "$$path"; \ chmod 0644 "$$path" -.man1.uninstall: +.1.uninstall: echo UNINSTALL man $$($(CLEANNAME) $*'(1)') rm -f $(MAN)/man1/$< diff --git a/mk/man.mk b/mk/man.mk @@ -1,6 +1,5 @@ -OFILES=$(TARG:.1=.man1) -all: $(OFILES) +all: $(TARG) install: ${TARG:.1=.install} uninstall: ${TARG:.1=.uninstall}