---
name: "gwm"
section: "1x"
platform: "linux"
package: "gwm"
version: "1.8d-2"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/gwm"
---

# gwm(1x)

Generic Window Manager for the X Window System

## NAME

gwm - Generic Window Manager for the X Window System

## SYNOPSIS

**gwm** \[ **-f** *filename* \] \[ **-p** *path* \] \[ **-d** *display* \] \[ **-x** *screens* \] \[ **-1DstqmFiawWIPr?** \]

## DESCRIPTION

The *GWM* command is a window manager client application of the X11 window server specified in the *display* argument (or the *DISPLAY* shell variable if no argument is given), extensible via a built-in *lisp* interpreter, *WOOL* (Window Object Oriented Lisp) used to build **Wobs** (Window OBjects) which are used to decorate the windows of the other X11 applications running on the display. *GWM* tries to enforce the ICCCM conventions to communicate between X11 clients and thus should be compatible with any well-behaved X11 application.

- **-f** *filename*

  Names an alternate file as a *GWM* startup file. Default is **.gwmrc.gwm** (note that the **.gwm** extension is optional, as for any *WOOL* file).

-

  For instance, to use the *Motif* emulation package, type *gwm -f mwm -1* , and to use the *Twm* emulation package, type *gwm -f twm*.

- **-p** *path*

  Gives the path to be searched for *WOOL* or bitmap files when loaded, including the startup file. Overrides the setting by the environment variable **GWMPATH**. Defaults to *.:$HOME:$HOME/gwm:GWMDIR*, where *GWMDIR* is the local directory where *GWM* is installed (normally, */usr/lib/X11/gwm*).

-

  You can append or prepend a path to the current path by preceding the path given as argument to the  *-p* option by *+* (for appending) or *-* (for prepending). For instance, if you want to search the directory */usr/local/gwm* before the standard ones (including your homedir), just say: *-p -/usr/local/gwm*.

- **-d** *display*

  Specifies the name of the display whose windows must be managed, such as *unix:0*. The *-d* is optional, you can type *gwm unix:0*.

- **-x** *screens*

  Do not manage the screens given in the comma-separated list of numbers, as in: *-x 2,5,3*. Normally, *GWM* manages **all** the screens of the given display.

- **-1**

  Manages only the given screen, e.g. *gwm -1 foo:0.2* manages only the third screen of the display number *0* on the *foo* machine. Same as defining the GWM\_MONOSCREEN shell variable.

- **-I**

  Continues reading interactively Wool expressions from the standard input and prints their result. Useful for testing interactively code. Recommended use of GWM is for instance to run it interactively in an xterm, with:

  ```
  xterm -title Gwm -e fep gwm -IP&
  ```

- **-P**

  When used with -I, makes Gwm issue a simple prompt displaying the current parenthese level.

- **-k** *process-id*

  Kills a process once initialisation is done. Takes a process id as an argument. When gwm has finished initializing, it sends a signal (SIGALRM by default, but this can be changed by -K, see below) to the given process.  So, if you do the following lines:

  ```
  sleep 15 & pid=$!
  xterm -title Gwm -e fep gwm -k $pid -IP &
  wait $pid
  ```

  then your init shell script will pause until gwm has finished initializing.

- **-K** *signal*

  sets the signal to use (number) instead of SIGALRM for the -k option above.

- **-D**

  Enables debugging mode for *WOOL* files. In this version the only effect of debug mode is to continue reading a file after a *WOOL* error occurred. Default behavior is to abort reading a file after an error. Thus, if you modified your profile and introduced an error, *GWM* will refuse to complete execution, use *gwm -D* to run it anyway.

- **-s**

  Synchronize X calls, useful for debugging but slower.

- **-r**

  Normally, when gwm starts and sees that another window manager has still the control of the display, gwm aborts with a warning message. Specifying -r makes it retrying till it can get control.

- **-t**

  Turns tracing on, as if you had done the call *(trace t)* in your profile.

- **-q**

  (Quiet) Does not print startup banner, and sets the *WOOL* *gwm-quiet* variable to 1.

- **-m**

  Maps all toplevel windows already on screen. Useful after unmapping some windows by accident.

- **-F**

  Does not freeze the server during pop-up menus, move and resize of the windows, which is the default behavior.

- **-i**

  Disables the setting of input focus by *GWM* (*set-focus* has no effects, except *(set-focus ())*, which resets the focus to PointerRoot) on a window, keypresses go to the window under the cursor. Very useful to debug profiles with only one screen.

- **-a**

  Asynchronously handle moves and resizes, do not cancel a move or a resize operation if the user released the button before the grid appeared, which is the default behavior.

- **-w window\_id**

  Makes Gwm decorate only one window, given by its ID, a decimal number

- **-W**

  Makes Gwm decorate all windows on screen, even if another window manager  is already in charge.

- **-?**

  This, or any invalid option lists the available options and shows the default path defined at compile time by your local installer.

On startup, *GWM* interprets its profile to build wobs describing how to decorate user windows, which we will call **Clients**. Then it creates **Windows** around each client window on the screens attached to the managed display. A Window is made of 4 (optional) **Bars** on the 4 sides of the window.  Each of these bars is made of a variable number of **Plugs**, the most primitive wobs. **Menus** can then be made with a list of bars. To each of these objects is associated a **fsm** (**F**inite **S**tate **M**achine) describing their behavior in terms of *WOOL* code triggered by X or *WOOL* events.

When *GWM* wants to decorate a window, it calls the user-defined *WOOL* function *describe-window* which must return a list of two window descriptions (one for the window itself, and one for its icon) made by the *window-make* *WOOL* primitive describing the window. To build these descriptions the user can query the client window for any X11 properties and use the X11 Resource Manager to decide how to decorate it.

The screens must also be described by such a description that *GWM* will find by calling the user-defined *WOOL* function *describe-screen* for each managed screen.

A full description of *GWM* is beyond the scope of this manual page.  See the *GWM Manual* for a comprehensive description of all the facilities provided by **GWM**.

## FILES

```
 $HOME/.gwmrc.gwm
 $HOME/gwm/.gwmrc.gwm
 /usr/lib/X11/gwm/.gwmrc.gwm
```

## ENVIRONMENT VARIABLES

- DISPLAY

  This variable is used to determine which X server to use.

- HOME

  Used to locate *.gwmrc.gwm*.

- GWMPATH

  Used to override default *GWM* path of *.:$HOME:$HOME/gwm:GWMDIR*.

- GWM\_MONOSCREEN

  Tells gwm to manage only one screen. This (or  *-1*) option is required to run the Motif emulation package.

- NO\_KOALA\_SPY NO\_GWM\_LOG

  By default, gwm sends silently one udp packet when started to the author with the hostname of the machine as contnts, to maintain some rough statistics of use. If you dont want this to happen, you can set either of these two variables to anything, or recompile with either of these preprocesssor symbols defined.

## SEE ALSO

X(1), [Xserver(1)](/Xserver/1.md), [xdm(1)](/xdm/1.md), [xrdb(1)](/xrdb/1.md)

## COPYRIGHT

```
Copyright 1989 GROUPE BULL
Copyright 1989 Massachusetts Institute of Technology
```

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of GROUPE BULL not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.  GROUPE BULL makes no representations about the suitability of this software for any purpose.  It is provided \`\`as is'' without express or implied warranty.

GROUPE BULL disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness, in no event shall GROUPE BULL be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use  or performance of this software.

## AUTHOR

```
Colas Nahaboo.
colas@mirsa.inria.fr
KOALA Project
BULL Research c/o INRIA
2004 route des Lucioles
06565 Valbonne Cedex
FRANCE
```

## GWM INTEREST ELECTRONIC MAILING LIST

- *gwm@mirsa.inria.fr*

  For questions to gwm maintainer, and for requests to be added to or removed from the other mailing lists.

- *gwm-talk@mirsa.inria.fr*

  General comments, discussion, bug reports, etc. All mails posted to this address will be redispatched to every member of this list.
