---
name: "cwmrc"
section: "5"
platform: "linux"
package: "cwm"
version: "7.1-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cwmrc"
---

# cwmrc(5)

calm window manager configuration file

## NAME

**cwmrc** – calm window manager configuration file

## DESCRIPTION

This manual page describes the [cwm(1)](/cwm/1.md) configuration file.

The current line can be extended over multiple lines using a backslash (‘\\’). Comments can be put anywhere in the file using a hash mark (‘#’), and extend to the end of the current line. Care should be taken when commenting out multi-line text: the comment is effective until the end of the entire block.

Arguments containing whitespace should be surrounded by double quotes (").

The following options are accepted:

- **autogroup** *group* \[*windowname*,\]*windowclass*

  Automatically add new windows to *group* if their class property matches *windowclass*, or if their name and class properties match *windowname* and *windowclass*, respectively. The more specific last match wins. *group* is a number between 0 and 9. If *group* is 0, matching windows will not be added to any group; this may be used to override “sticky group mode”.

  The name and class values, respectively, for existing windows are both set in the WM\_CLASS property and may be obtained using [xprop(1)](/xprop/1.md).

- **bind-key** *key* *function*

  Bind or rebind key *key* to *function*. The modifier keys come first, followed by a ‘-’, then a keysym name, taken from */usr/X11R6/include/X11/keysymdef.h*.

  The following modifiers are recognised:

  - **C**

    Control key.

  - **M**

    Meta key.

  - **S**

    Shift key.

  - **4**

    Mod4 (windows) key.

  - **5**

    Mod5 (AltGr) key.

    The *function* may either be one from the BIND FUNCTION LIST (see below) or the command line that is to be executed.

- **bind-mouse** *button* *function*

  Bind or rebind button *button* to *function*. The modifier keys come first, followed by a ‘-’, then the button number.

  The same modifiers are recognised as for *key* in **bind-key**.

  The following buttons are recognised:

  - **1**

    Left mouse button.

  - **2**

    Middle mouse button.

  - **3**

    Right mouse button.

  - **4**

    Scroll up mouse button.

  - **5**

    Scroll down mouse button.

    The *function* may be taken from the BIND FUNCTION LIST (see below) or the command line that is to be executed.

- **borderwidth** *pixels*

  Set the window border width to *pixels*.

- **color** **activeborder** *color*

  Set the color of the active border.

- **color** **font** *color*

  Set menu font color.

- **color** **selfont** *color*

  Set font color for selected menu item.

- **color** **groupborder** *color*

  Set the color of the border while grouping a window.

- **color** **inactiveborder** *color*

  Set the color of the inactive border.

- **color** **menubg** *color*

  Set menu background color.

- **color** **menufg** *color*

  Set menu foreground color.

- **color** **urgencyborder** *color*

  Set the color of the border of a window indicating urgency.

- **color** **ungroupborder** *color*

  Set the color of the border while ungrouping a window.

- **command** *name* *path*

  Every *name* entry is shown in the application menu. When selected, the defined *path* is executed with [execvp(3)](/execvp/3.md).

  The *name* entries **term** and **lock** have a special meaning. They point to the terminal and screen locking programs specified by key bindings. The defaults are [xterm(1)](/xterm/1.md) and [xlock(1)](/xlock/1.md), respectively.

- **fontname** *font*

  Change the default *font* for [Xft(3)](/Xft/3.md).

- **gap** *top* *bottom* *left* *right*

  Define a “gap” in pixels at the edge of the screen, so that when a window is maximized it will not overlap this area. This “gap” can be used for applications such as [xclock(1)](/xclock/1.md), where the user may wish to remain visible.

- **htile** *percent*

  Set the percentage of screen the master window should occupy after calling **window-htile**. If set to 0, the horizontal size of the master window will remain unchanged. The default is 50.

- **ignore** *windowname*

  Ignore, and do not warp to, windows with the name *windowname* when drawing borders and cycling through windows.

- **moveamount** *pixels*

  Set a default size for the keyboard movement bindings, in pixels. The default is 1.

- **snapdist** *pixels*

  Minimum distance to snap-to adjacent edge, in pixels. The default is 0.

- **sticky** **yes**\|**no**

  Toggle sticky group mode. The default behavior for new windows is to not assign any group. By enabling sticky group mode, [cwm(1)](/cwm/1.md) will assign new windows to the currently selected group.

- **unbind-key** *key*

  Unbind function bound to *key*. A special *key* keyword “all” can be used to unbind all keys.

- **unbind-mouse** *button*

  Unbind function bound to *button*. A special *button* keyword “all” can be used to unbind all buttons.

- **vtile** *percent*

  Set the percentage of screen the master window should occupy after calling **window-vtile**. If set to 0, the vertical size of the master window will remain unchanged. The default is 50.

- **wm** *name* *path*

  Every *name* entry is shown in the wm menu. When selected, the window manager is replaced by *path*.

## BIND FUNCTION LIST

- restart

  Restart the running [cwm(1)](/cwm/1.md).

- quit

  Quit [cwm(1)](/cwm/1.md).

- terminal

  Spawn a new terminal.

- lock

  Lock the screen.

- menu-window

  Launch window search menu.

- menu-window-hidden

  Launch hidden window search menu.

- menu-cmd

  Launch application search menu.

- menu-group

  Launch group search menu.

- menu-exec

  Launch “exec program” menu.

- menu-exec-wm

  Launch “exec WindowManager” menu.

- menu-ssh

  Launch “ssh” menu.

- group-toggle-\[n\]

  Toggle visibility of group n, where n is 1-9.

- group-only-\[n\]

  Show only group n, where n is 1-9, hiding other groups.

- group-last

  Show only the previously active group.

- group-close-\[n\]

  Close all windows in group n, where n is 1-9.

- group-toggle-all

  Toggle visibility of all groups.

- window-group

  Toggle group membership of current window.

- window-movetogroup-\[n\]

  Hide current window from display and move to group n, where n is 1-9.

- group-cycle

  Forward cycle through groups.

- group-rcycle

  Reverse cycle through groups.

- window-cycle

  Forward cycle through windows.

- window-rcycle

  Reverse cycle through windows.

- window-cycle-ingroup

  Forward cycle through windows in current group.

- window-rcycle-ingroup

  Reverse cycle through windows in current group.

- window-close

  Close current window.

- window-hide

  Hide current window.

- window-lower

  Lower current window.

- window-raise

  Raise current window.

- window-menu-label

  Label current window.

- window-freeze

  Freeze current window geometry.

- window-stick

  Stick current window to all groups (same as assigning to nogroup).

- window-fullscreen

  Full-screen current window (gap + border removed).

- window-maximize

  Maximize current window (gap + border honored).

- window-vmaximize

  Vertically maximize current window (gap + border honored).

- window-hmaximize

  Horizontally maximize current window (gap + border honored).

- window-htile

  Current window is placed at the top of the screen, maximized horizontally and resized to *htile* (default half) of the vertical screen space. Other windows in its group share remaining screen space.

- window-vtile

  Current window is placed on the left of the screen, maximized vertically and resized to *vtile* (default half) of the horizontal screen space. Other windows in its group share remaining screen space.

- window-move

  Move current window.

- window-resize

  Resize current window.

- window-move-up

  Move window *moveamount* pixels up.

- window-move-down

  Move window *moveamount* pixels down.

- window-move-right

  Move window *moveamount* pixels right.

- window-move-left

  Move window *moveamount* pixels left.

- window-move-up-big

  Move window 10 times *moveamount* pixels up.

- window-move-down-big

  Move window 10 times *moveamount* pixels down.

- window-move-right-big

  Move window 10 times *moveamount* pixels right.

- window-move-left-big

  Move window 10 times *moveamount* pixels left.

- window-resize-up

  Resize window *moveamount* pixels up.

- window-resize-down

  Resize window *moveamount* pixels down.

- window-resize-right

  Resize window *moveamount* pixels right.

- window-resize-left

  Resize window *moveamount* pixels left.

- window-resize-up-big

  Resize window 10 times *moveamount* pixels up.

- window-resize-down-big

  Resize window 10 times *moveamount* pixels down.

- window-resize-right-big

  Resize window 10 times *moveamount* pixels right.

- window-resize-left-big

  Resize window 10 times *moveamount* pixels left.

- window-snap-up

  Snap window to top edge.

- window-snap-down

  Snap window to bottom edge.

- window-snap-right

  Snap window to right edge.

- window-snap-left

  Snap window to left edge.

- window-snap-up-right

  Snap window to top-right corner.

- window-snap-up-left

  Snap window to top-left corner.

- window-snap-down-right

  Snap window to bottom-right corner.

- window-snap-down-left

  Snap window to bottom-left corner.

- pointer-move-up

  Move pointer *moveamount* pixels up.

- pointer-move-down

  Move pointer *moveamount* pixels down.

- pointer-move-right

  Move pointer *moveamount* pixels right.

- pointer-move-left

  Move pointer *moveamount* pixels left.

- pointer-move-up-big

  Move pointer 10 times *moveamount* pixels up.

- pointer-move-down-big

  Move pointer 10 times *moveamount* pixels down.

- pointer-move-right-big

  Move pointer 10 times *moveamount* pixels right.

- pointer-move-left-big

  Move pointer 10 times *moveamount* pixels left.

## FILES

- *~/.cwmrc*

  Default [cwm(1)](/cwm/1.md) configuration file.

## EXAMPLES

```
# Set default Xft(3) font
fontname "sans-serif:pixelsize=14:bold"
# Turn on sticky-group mode
sticky yes
# Any entry here is shown in the application menu
command firefox		firefox
command xmms		xmms
command top		"xterm -e top"
# Autogroup definitions
autogroup 3 "aterm,XTerm"
autogroup 3 "xterm,XTerm"
# Ignore programs by that name by not drawing borders around them.
ignore XMMS
ignore xwi
ignore xapm
ignore xclock
# Key bindings
bind-key CM-r		window-menu-label
bind-key CS-Return	"xterm -e top"
bind-key C4-equal	window-vmaximize
bind-key C4S-equal	window-hmaximize
bind-key M-1		group-only-1
bind-key M-2		group-only-2
bind-key M-3		group-only-3
bind-key MS-1		window-movetogroup-1
bind-key MS-2		window-movetogroup-2
bind-key MS-3		window-movetogroup-3
unbind-key 4-o
unbind-key CM-equal
unbind-key CMS-equal
# Mouse bindings
bind-mouse M-2		window-lower
bind-mouse M-3		window-resize
```

## SEE ALSO

[cwm(1)](/cwm/1.md)

## HISTORY

The **cwmrc** file format first appeared in OpenBSD 4.4.
