1 ![logo](https://github.com/baskerville/bspwm/raw/master/resources/bspwm_logo.png)
5 `bspwm` is a tiling window manager based on binary space partitioning.
7 The windows are represented as the leaves of a binary tree.
11 `bspwm` have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
13 Those messages are sent through the `bspc` program.
15 If the `BSPWM_SOCKET` environment variable is defined it will be used as the socket path, otherwise `/tmp/bspwm-socket` is used.
17 The recommended way of defining keyboard shortcuts, is to use `xbindkeys`.
19 Configuration files (`bspwmrc` and `autostart`) must be placed in `$XDG_CONFIG_HOME/bspwm/`.
21 Example configurations: [bspwmrc](https://github.com/baskerville/dotfiles/blob/master/bspwmrc), [autostart](https://github.com/baskerville/bin/blob/master/bspwm_autostart) and [xbindkeysrc](https://github.com/baskerville/dotfiles/blob/master/xbindkeysrc)
25 There is only two splitting modes: *automatic* and *manual*.
27 The default mode is *automatic*. The *manual* mode is entered by sending a *presel* message.
29 Example: insertion of a new node (number 4) into the given tree in
39 +-------------------------+ +-------------------------+
43 | 3 |------------| --> | 4 |------------|
47 +-------------------------+ +-------------------------+
49 Same departure, but the mode is *manual*, a `presel up` message
58 +-------------------------+ +-------------------------+
62 | 3 |------------| --> |------------|------------|
66 +-------------------------+ +-------------------------+
70 The syntax for the client is `bspc COMMAND ARGUMENTS...`.
72 The following messages are handled:
78 Return the value of the given setting.
81 Set the value of the given setting.
84 Output the internal representation of the window tree.
87 Perform a dump of each desktop.
90 Return the list of managed windows (i.e. their identifiers).
93 Close the focused window.
96 Switch to manual mode and select the splitting direction.
99 Set the splitting ratio of the focused window.
102 Switch to automatic mode.
105 Focus the neighbor node situated in the given direction.
108 Focus the neighbor node situated in the given direction.
111 Push the fence located in the given direction.
114 Pull the fence located in the given direction.
116 cycle CYC [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
117 Focus the next or previous window in the list of leaves.
120 Rotate the tree of the current desktop.
123 Move all the fences toward the given corner.
126 Send the focused window to the given desktop.
129 Select the given desktop.
132 Alternate between the current and the last focused desktop.
135 Make a new desktop with the given name.
137 rename CURRENT_NAME NEW_NAME
138 Rename the desktop named CURRENT_NAME to NEW_NAME.
141 Select the next or previous desktop.
144 Set the layout of the current desktop to LYT.
147 Toggle the fullscreen state of the current window.
150 Toggle the floating state of the current window.
153 Toggle the locked state of the current window (locked windows will not respond to the 'close' command).
155 rule PATTERN floating
156 Make a new rule that will floats the windows whose class name or instance name matches PATTERN.
159 Reload the autostart file.
162 Reload the settings file.
165 Reload the autostart and the settings file.
169 DIR = left|right|up|down
171 ROT = clockwise|counter_clockwise|full_cycle
172 COR = top_left|top_right|bottom_left|bottom_right
177 Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or '#RRGGBB'.
180 Color of the main border of a focused window.
183 Color of the main border of an unfocused window.
186 Color of the inner border of a window.
189 Color of the outer border of a window.
192 Color of the *presel* message feedback.
194 active_locked_border_color
195 Color of the main border of a focused locked window.
197 normal_locked_border_color
198 Color of the main border of an unfocused locked window.
201 Color of the border of an urgent window.
206 Width of the inner, main and outer borders.
209 Value of the gap that separates windows.
215 Padding space added at the sides of the screen.
218 The value that shall be used for the _NET_WM_NAME property of the root window.
223 Move the window under the pointer.
226 Focus the window under the pointer.
229 Resize the window under the pointer (by moving one of its four corners).
231 Where *M4* is the fourth modifier mask (generally bound to *Super*).
233 ## Required Libraries:
235 libxcb, xcb-util-wm, lua.