wmii.1 (18071B)
1 .TH "WMII" 1 "2010 June" "wmii-@VERSION@" 2 3 .SH NAME 4 .P 5 wmii \- Window Manager Improved² 6 7 .SH SYNOPSIS 8 .P 9 wmii \fI[\-a \fI<address>\fR]\fR \fI[\-r \fI<wmiirc>\fR]\fR 10 .P 11 wmii \-v 12 13 .SH DESCRIPTION 14 .SS Overview 15 .P 16 \fBwmii\fR is a dynamic window manager for X11. In contrast to 17 static window management the user rarely has to think about how 18 to organize windows, no matter what he is doing or how many 19 applications are used at the same time. The window manager 20 adapts to the current environment and fits to the needs of the 21 user, rather than forcing him to use a preset, fixed layout and 22 trying to shoehorn all windows and applications into it. 23 24 .P 25 \fBwmii\fR supports classic and tiled window management with 26 extended keyboard and mouse control. Classic window management 27 arranges windows in a floating layer in which tyen can be moved 28 and resized freely. Tiled window management arranges windows in 29 vertical columns. Each column holds an arbitrary number 30 arbitrary windows and arranges them vertically in a 31 non\-overlapping manner. They can then be moved and resized, 32 among and within columns, at will. 33 34 .P 35 \fBwmii\fR provides a virtual filesystem which represents the 36 internal state similar to the procfs of Unix operating systems. 37 Modifying this virtual filesystem results in changing the state 38 of the window manager. The virtual filesystem service can be 39 accessed through 9P\-capable client programs, like 40 wmiir(1). This allows simple and powerful remote control 41 of the core window manager. 42 43 .SS Command Line Arguments 44 .TP 45 \-a \fI<address>\fR 46 Specifies the address on which \fBwmii\fR should listen for 47 connections. The address takes the form 48 \fB\fI<protocol>\fR!\fI<address>\fR\fR. The default is of the form: 49 50 .nf 51 unix!/tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii 52 .fi 53 54 which opens a unix socket per Plan 9 Port conventions. To 55 open a TCP socket, listening at port 4332 on the loopback 56 interface, use: 57 58 .nf 59 tcp!localhost!4332 60 .fi 61 62 \fB$WMII_NAMESPACE\fR is automatically set to this value. 63 64 .TP 65 \-r \fI<wmiirc>\fR 66 Specifies which rc script to run. If \fI<wmiirc>\fR consists of a 67 single argument, \fB$WMII_CONFPATH\fR is searched before \fB$PATH\fR. 68 Otherwise, it is passed to the shell for evaluation. The 69 environment variables \fB$WMII_ADDRESS\fR and \fB$WMII_CONFPATH\fR are 70 preset for the script. 71 72 .SS Terminology 73 .TP 74 Display 75 A running X server instance consisting of input 76 devices and screens. 77 .TP 78 Screen 79 A physical or virtual (Xinerama or Xnest(1)) 80 screen of an X display. 81 .TP 82 Window 83 A (rectangular) drawable X object which is 84 displayed on a screen, usually an application window. 85 .TP 86 Client 87 An application window surrounded by a frame window 88 containing a border and a titlebar. 89 .TP 90 Floating layer 91 A screen layer of \fBwmii\fR on top of all other layers, 92 where clients are arranged in a classic (floating) 93 manner. They can be resized or moved freely. 94 .TP 95 Managed layer 96 A screen layer of \fBwmii\fR underneath the floating layer, 97 where clients are arranged in a non\-overlapping 98 (managed) manner. Here, the window manager dynamically 99 assigns each client a size and position. The managed 100 layer consists of columns. 101 .TP 102 Tag 103 Alphanumeric strings which can be assigned to a 104 client. This provides a mechanism to group clients with 105 similar properties. Clients can have one tag, e.g. 106 \fIwork\fR, or several tags, e.g. \fIwork+mail\fR. 107 Tags are separated with the \fI+\fR character. 108 .TP 109 View 110 A set of clients containing a specific tag, quite 111 similar to a workspace in other window managers. It 112 consists of the floating and managed layers. 113 .TP 114 Column 115 A column is a screen area which arranges clients 116 vertically in a non\-overlapping way. Clients can be 117 moved and resized between and within columns freely. 118 .TP 119 Bar 120 The bar at the bottom of the screen displays a label 121 for each view and allows the creation of arbitrary 122 user\-defined labels. 123 .TP 124 Event 125 An event is a message which can be read from a 126 special file in the filesystem of \fBwmii\fR, such as a 127 mouse button press, a key press, or a message written by 128 a different 9P\-client. 129 130 131 .SS Basic window management 132 .P 133 Running a raw \fBwmii\fR process without a wmiirc(1) script provides 134 basic window management capabilities. However, to use it 135 effectively, remote control through its filesystem interface is 136 necessary. Without such a script, it is only possible to move 137 and resize clients with the mouse, but not to change their tags 138 or to switch views. Other interactions, such as customizing the 139 style, killing or retagging clients, and grabbing keys, cannot 140 be achieved without accessing the filesystem. 141 142 .P 143 The filesystem can be accessed by connecting to the \fIaddress\fR 144 of \fBwmii\fR with any 9P\-capable client, such as wmiir(1) 145 146 .SS Actions 147 .P 148 The default configuration provides for a special menu of 149 actions. These consist of either shell scripts in \fB$WMII_CONFPATH\fR 150 or action definitions included in wmiirc. 151 152 .P 153 Here is a list of the default actions: 154 155 .TS 156 tab(^); ll. 157 exec^Replace the window manager with another program 158 quit^Leave the window manager nicely 159 rehash^Refresh the program list 160 showkeys^Display a list of key bindings recognized by wmii 161 status^Periodically print date and load average to the bar 162 welcome^Display a welcome message that contains the wmii tutorial 163 .TE 164 165 .SS Default Key Bindings 166 .P 167 All of the provided \fBwmiirc\fR scripts accept at least the following key 168 bindings. They should also provide a \fBshowkeys\fR action to open a 169 key binding quick\-reference. 170 171 .SS Moving Around 172 .TS 173 tab(^); ll. 174 \fBKey\fR^\fBAction\fR 175 Mod\-h^Move to a window to the \fIleft\fR of the one currently focused 176 Mod\-l^Move to a window to the \fIright\fR of the one currently focused 177 Mod\-j^Move to the window \fIbelow\fR the one currently focused 178 Mod\-k^Move to a window \fIabove\fR the one currently focused 179 Mod\-space^Toggle between the managed and floating layers 180 Mod\-t \fI<tag>\fR^Move to the view of the given \fI<tag>\fR 181 Mod\-n^Move to the next view 182 Mod\-b^Move to the previous view 183 Mod\-\fI\fI[0\-9]\fR\fR^Move to the view with the given number 184 .TE 185 186 .SS Moving Things Around 187 .TS 188 tab(^); ll. 189 \fBKey\fR^\fBAction\fR 190 Mod\-Shift\-h^Move the current window \fIwindow\fR to a column on the \fIleft\fR 191 Mod\-Shift\-l^Move the current window to a column on the \fIright\fR 192 Mod\-Shift\-j^Move the current window below the window beneath it. 193 Mod\-Shift\-k^Move the current window above the window above it. 194 Mod\-Shift\-space^Toggle the current window between the managed and floating layer 195 Mod\-Shift\-t \fI<tag>\fR^Move the current window to the view of the given \fI<tag>\fR 196 Mod\-Shift\-\fI\fI[0\-9]\fR\fR^Move the current window to the view with the given number 197 .TE 198 199 .SS Miscellaneous 200 .TS 201 tab(^); ll. 202 \fBKey\fR^\fBAction\fR 203 Mod\-m^Switch the current column to \fImax mode\fR 204 Mod\-s^Switch the current column to \fIstack mode\fR 205 Mod\-d^Switch the current column to \fIdefault mode\fR 206 Mod\-Shift\-c^\fBKill\fR the selected client 207 Mod\-p \fI<program>\fR^\fBExecute\fR \fI<program>\fR 208 Mod\-a \fI<action>\fR^\fBExecute\fR the named <action 209 Mod\-Enter^\fBExecute\fR an \fB@TERMINAL@\fR 210 .TE 211 212 .SH Configuration 213 .P 214 If you feel the need to change the default configuration, then 215 customize (as described above) the \fBwmiirc\fR action. This 216 action is executed at the end of the \fBwmii\fR script and does 217 all the work of setting up the window manager, the key bindings, 218 the bar labels, etc. 219 220 .SS Filesystem 221 .P 222 Most aspects of \fBwmii\fR are controlled via the filesystem. It is 223 usually accessed via the wmiir(1) command, but it can be 224 accessed by any 9P, including plan9port's 9P\fI[1]\fR, and can be 225 mounted natively on Linux via v9fs\fI[1]\fR, and on Inferno (which man 226 run on top of Linux). All data in the filesystem, including 227 filenames, is UTF\-8 encoded. However, when accessed via 228 wmiir(1), text is automatically translated to and from your 229 locale encoding. 230 231 .P 232 The filesystem is, as are many other 9P filesystems, entirely 233 synthetic. The files exist only in memory, and are not written 234 to disk. They are generally initiated on wmii startup via a 235 script such as wmiirc. Several files are used to issue commands, 236 others simply act as if they were ordinary files (their contents 237 are updated and returned exactly as written), though writing 238 them has side\-effects (such as changing key bindings). A 239 description of the filesystem layout and control commands 240 follows. 241 242 .SS Hierarchy 243 .TP 244 / 245 Global control files 246 .TP 247 /client/\fI*\fR/ 248 Client control files 249 .TP 250 /tag/\fI*\fR/ 251 View control files 252 .TP 253 /lbar/, /rbar/ 254 Files representing the contents of the bottom bar 255 256 257 .SS The / Hierarchy 258 .TP 259 colrules 260 The \fIcolrules\fR file contains a list of 261 rules which affect the width of newly created columns. 262 Rules have the form: 263 264 .nf 265 /\fI<regex>\fR/ -> \fI<width>\fR\fI[+\fI<width>\fR]\fR* 266 .fi 267 268 Where, 269 270 .nf 271 \fI<width>\fR := \fI<percent of screen>\fR | \fI<pixels>\fRpx 272 .fi 273 274 When a new column, \fI<n>\fR, is created on a view whose name 275 matches \fI<regex>\fR, it is given the \fI<n>\fRth supplied \fI<width>\fR. 276 If there is no \fI<n>\fRth width, it is given 1/\fI<ncol>\fRth of the 277 screen. 278 279 .TP 280 rules 281 \fBPROVISIONAL\fR 282 283 The \fIrules\fR file contains a list of rules that may be used 284 to automatically set properties of new clients. Rules are 285 specified as: 286 287 .nf 288 /\fI<regex>\fR/ \fI<key>\fR=\fI<value>\fR ... 289 .fi 290 291 where each \fI<key>\fR represents a command in the clients \fIctl\fR 292 file, and each \fI<value>\fR represents the value to assign to it. 293 The rules are applied when the client is first started and 294 the contents of the \fIprops\fR file match the regular 295 expression \fI<regex>\fR. 296 297 Additionally, the following keys are accepted and have 298 special meaning: 299 300 .RS 8 301 .TP 302 continue 303 Normally, when a matching rule is encountered, rule 304 matching stops. When the continue key is provided 305 (with any value), matching continues at the next 306 rule. 307 .TP 308 force\-tags=\fI<tags>\fR 309 Like \fItags\fR, but overrides any settings obtained 310 obtained from the client's group or from the 311 \fB_WMII_TAGS\fR window property. 312 .RS -8 313 .TP 314 keys 315 The \fIkeys\fR file contains a list of keys which 316 \fBwmii\fR will grab. Whenever these key combinations 317 are pressed, the string which represents them are 318 written to '/event' as: Key \fI<string>\fR 319 .TP 320 event 321 The \fIevent\fR file never returns EOF while 322 \fBwmii\fR is running. It stays open and reports events 323 as they occur. Included among them are: 324 .RS 8 325 .TP 326 \fI[Not]\fRUrgent \fI<client>\fR \fI[Manager|Client]\fR 327 \fI<client>\fR's urgent hint has been set or 328 unset. The second arg is \fI[Client]\fR if it's 329 been set by the client, and \fI[Manager]\fR if 330 it's been set by \fBwmii\fR via a control 331 message. 332 .TP 333 \fI[Not]\fRUrgentTag \fI<tag>\fR \fI[Manager|Client]\fR 334 A client on \fI<tag>\fR has had its urgent hint 335 set, or the last urgent client has had its 336 urgent hint unset. 337 .TP 338 Client\fI<Click|MouseDown>\fR \fI<client>\fR \fI<button>\fR 339 A client's titlebar has either been clicked or 340 has a button pressed over it. 341 .TP 342 \fI[Left|Right]\fRBar\fI[Click|MouseDown]\fR \fI<button>\fR \fI<bar>\fR 343 A left or right bar has been clicked or has a 344 button pressed over it. 345 .RS -8 346 347 For a more comprehensive list of available events, see 348 \fIwmii.pdf\fR\fI[2]\fR 349 350 .TP 351 ctl 352 The \fIctl\fR file takes a number of messages to 353 change global settings such as color and font, which can 354 be viewed by reading it. It also takes the following 355 commands: 356 .RS 8 357 .TP 358 quit 359 Quit \fBwmii\fR 360 .TP 361 exec \fI<prog>\fR 362 Replace \fBwmii\fR with \fI<prog>\fR 363 .TP 364 spawn \fI<prog>\fR 365 Spawn a new program, as if by the \fI\-r\fR flag. 366 .RS -8 367 368 369 .SS The /client/ Hierarchy 370 .P 371 Each directory under '/client/' represents an X11 client. 372 Each directory is named for the X window id of the window the 373 client represents, in the form that most X utilities recognize. 374 The one exception is the special 'sel' directory, which 375 represents the currently selected client. 376 377 .TP 378 ctl 379 When read, the 'ctl' file returns the X window id 380 of the client. The following commands may be written to 381 it: 382 .RS 8 383 .TP 384 allow \fI<flags>\fR 385 The set of unusual actions the client is allowed to 386 perform, in the same format as the tag set. 387 .RS 8 388 .TP 389 activate 390 The client is allowed to activate 391 itself – that is, focus its window and, 392 as the case may require, uncollapse it 393 and select a tag it resides on. This 394 flag must be set on a client if you wish 395 it able to activate itself from the 396 system tray. 397 .RS -8 398 .TP 399 floating \fI<on | off | always | never>\fR 400 Defines whether this client is likely to float when 401 attached to a new view. Ordinarilly, the value 402 changes automatically whenever the window is 403 moved between the floating and managed layers. 404 However, setting a value of \fIalways\fR or \fInever\fR 405 overrides this behavior. Additionally, dialogs, 406 menus, docks, and splash screens will always 407 float unless this value is set to \fInever\fR. 408 .TP 409 fullscreen \fI<on | off | toggle>\fR 410 Sets the client's fullscreen state. 411 .TP 412 group \fI<group id>\fR 413 The client's group ID, or 0 if not part of a group. 414 Clients tend to open with the same tags and in the 415 same columns as the last active member of their 416 group. Setting this property is only useful when 417 done via the rules file. 418 .TP 419 kill 420 Close the client's window. 421 .TP 422 pid 423 Read\-only value of the PID of the program that 424 owns the window, if the value is available and 425 the process is on the same machine as wmii. 426 .TP 427 slay 428 Forcibly kill the client's connection to the X 429 server, closing all of its windows. Kill the parent 430 process if the client's PID is available. 431 .TP 432 tags \fI<tags>\fR 433 The client's tags. The same as the tags file. 434 .TP 435 urgent \fI<on | off | toggle>\fR 436 Set or unset the client's urgent hint. 437 .RS -8 438 439 .TP 440 label 441 Set or read a client's label (title). 442 .TP 443 props 444 Returns a clients class and label as: 445 \fI<instance>\fR:\fI<class>\fR:\fI<label>\fR. 446 .TP 447 tags 448 Set or read a client's tags. Tags are separated by 449 \fB+\fR, \fB\-\fR, or \fB^\fR. Tags beginning with \fB+\fR are 450 added, while those beginning with \fB\-\fR are removed and 451 those beginning with \fB^\fR are toggled. If the tag 452 string written begins with \fB+\fR, \fB^\fR, or \fB\-\fR, the 453 written tags are added to or removed from the client's 454 set, otherwise the set is overwritten. 455 456 457 .SS The /tag/ Hierarchy 458 .P 459 Each directory under '/tag/' represents a view, containing 460 all of the clients with the given tag applied. The special 461 \&'sel' directory represents the currently selected tag. 462 463 .TP 464 ctl 465 The 'ctl' file can be read to retrieve the name 466 of the tag the directory represents, or written with the 467 following commands: 468 .RS 8 469 .TP 470 select 471 Select a client: 472 select \fI[left|right|up|down]\fR 473 .P 474 select \fI[\fI<row number>\fR|sel]\fR \fI[\fI<frame number>\fR]\fR 475 .P 476 select client \fI<client>\fR 477 .TP 478 send 479 Send a client somewhere: 480 .RS 8 481 .TP 482 send \fI[\fI<client>\fR|sel]\fR \fI[up|down|left|right]\fR 483 .TP 484 send \fI[\fI<client>\fR|sel]\fR \fI<area>\fR 485 Send \fI<client>\fR to the \fIn\fRth \fI<area>\fR 486 .TP 487 send \fI[\fI<client>\fR|sel]\fR toggle 488 Toggle \fI<client>\fR between the floating and managed layer. 489 .RS -8 490 .TP 491 swap 492 Swap a client with another. Same syntax as send. 493 494 .TP 495 grow 496 Grow or shrink a client. 497 498 .nf 499 grow \fI<frame>\fR \fI<direction>\fR \fI[\fI<amount>\fR]\fR 500 .fi 501 502 .TP 503 nudge 504 Nudge a client in a given direction. 505 506 .nf 507 grow \fI<frame>\fR \fI<direction>\fR \fI[\fI<amount>\fR]\fR 508 .fi 509 510 .RS -8 511 Where the arguments are defined as follows: 512 .RS 8 513 .TP 514 area 515 Selects a column or the floating area. 516 517 .nf 518 area ::= \fI<area_spec>\fR | \fI<screen_spec>\fR:\fI<area_spec>\fR 519 .fi 520 521 When \fI<screen_spec>\fR is omitted and \fI<area_spec>\fR is not "sel", 522 0 is assumed. "sel" by itself represents the selected client no 523 matter which screen it is on. 524 525 .nf 526 area_spec ::= "~" | \fI<number>\fR | "sel" 527 .fi 528 529 Where "~" represents the floating area and \fI<number>\fR represents a column 530 index, starting at one. 531 532 .nf 533 screen_spec ::= \fI<number>\fR 534 .fi 535 536 Where \fI<number>\fR representes the 0\-based Xinerama screen number. 537 538 .TP 539 frame 540 Selects a client window. 541 542 .nf 543 frame ::= \fI<area>\fR \fI<index>\fR | \fI<area>\fR sel | client \fI<window-id>\fR 544 .fi 545 546 Where \fI<index>\fR represents the nth frame of \fI<area>\fR or \fI<window\-id>\fR is 547 the X11 window id of the given client. 548 549 .TP 550 amount 551 The amount to grow or nudge something. 552 553 .nf 554 amount ::= \fI<number>\fR | \fI<number>\fRpx 555 .fi 556 557 If "px" is given, \fI<number>\fR is interperated as an exact pixel count. 558 Otherwise, it's interperated as a "reasonable" amount, which is 559 usually either the height of a window's title bar, or its sizing 560 increment (as defined by X11) in a given direction. 561 .RS -8 562 .TP 563 index 564 Read for a description of the contents of a tag. 565 566 567 .SS The /rbar/, /lbar/ Hierarchy 568 .P 569 The files under '/rbar/' and '/lbar/' represent the 570 items of the bar at the bottom of the screen. Files under 571 \&'/lbar/' appear on the left side of the bar, while those 572 under '/rbar/' appear on the right, with the leftmost item 573 occupying all extra available space. The items are sorted 574 lexicographically. 575 576 .P 577 The files may be read or written to obtain or alter the colors 578 and text of the bars. The format is similar to the various \fIctl\fR 579 files and should be self explanitory. 580 581 .SH FILES 582 .TP 583 /tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii 584 The wmii socket file which provides a 9P service. 585 .TP 586 @GLOBALCONF@ 587 Global action directory. 588 .TP 589 @LOCALCONF@ 590 User\-specific action directory. Actions are first searched here. 591 592 593 .SH ENVIRONMENT 594 .TP 595 \fB$HOME\fR, \fB$DISPLAY\fR 596 See the section \fBFILES\fR above. 597 598 .P 599 The following variables are set and exported within \fBwmii\fR and 600 thus can be used in actions: 601 602 .TP 603 \fB$WMII_ADDRESS\fR 604 The address on which \fBwmii\fR is listening. 605 .TP 606 \fB$WMII_CONFPATH\fR 607 The path that wmii searches for its configuration 608 scripts and actions. 609 .TP 610 \fB$NAMESPACE\fR 611 The namespace directory to use if no address is provided. 612 613 .SH SEE ALSO 614 .P 615 wimenu(1), wmii9menu(1), witray(1), wmiir(1), wihack(1) 616 .P 617 @DOCDIR@/wmii.pdf 618 @DOCDIR@/FAQ 619 620 .P 621 \fI[1]\fR http://www.suckless.org/wiki/wmii/tips/9p_tips 622 .P 623 \fI[2]\fR @DOCDIR@/wmii.pdf 624 625 626 .\" man code generated by txt2tags 2.5 (http://txt2tags.sf.net) 627 .\" cmdline: txt2tags -o- wmii.man1 628