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 The only way to configure `bspwm` is by sending *set* messages via the client, hence `bspwm`'s configuration file is an executable called `autostart` which lives in `$XDG_CONFIG_HOME/bspwm/`.
21 Example configurations: [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 Kill the focused window.
99 Switch to manual mode and select the splitting direction.
102 Set the splitting ratio of the focused window.
105 Switch to automatic mode.
108 Focus the neighbor node situated in the given direction.
111 Focus the neighbor node situated in the given direction.
114 Push the fence located in the given direction.
117 Pull the fence located in the given direction.
119 nearest older|newer [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
120 Focus the nearest leaf matching the given constraints.
122 cycle CYC [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
123 Focus the next or previous window in the list of leaves.
126 Rotate the tree of the current desktop.
129 Move all the fences toward the given corner.
132 Send the focused window to the given desktop.
135 Select the given desktop.
138 Alternate between the current and the last focused window.
141 Alternate between the current and the last focused desktop.
144 Make a new desktop with the given name.
146 rename CURRENT_NAME NEW_NAME
147 Rename the desktop named CURRENT_NAME to NEW_NAME.
150 Select the next or previous desktop.
153 Set the layout of the current desktop to LYT.
156 Cycle the layout of the current desktop.
159 Toggle the fullscreen state of the current window.
162 Toggle the floating state of the current window.
165 Toggle the locked state of the current window (locked windows will not respond to the 'close' command).
167 rule PATTERN floating
168 Make a new rule that will float the windows whose class name or instance name equals PATTERN.
171 Reload the autostart file.
174 Reload the default settings.
177 Reload the autostart file and the default settings.
181 DIR = left|right|up|down
183 ROT = clockwise|counter_clockwise|full_cycle
184 COR = top_left|top_right|bottom_left|bottom_right
189 Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or '#RRGGBB', booleans are 'true' or 'false'.
192 Color of the main border of a focused window.
195 Color of the main border of an unfocused window.
198 Color of the inner border of a window.
201 Color of the outer border of a window.
204 Color of the *presel* message feedback.
206 active_locked_border_color
207 Color of the main border of a focused locked window.
209 normal_locked_border_color
210 Color of the main border of an unfocused locked window.
213 Color of the border of an urgent window.
218 Width of the inner, main and outer borders.
221 Value of the gap that separates windows.
227 Padding space added at the sides of the screen.
230 The value that shall be used for the _NET_WM_NAME property of the root window.
233 Whether to remove borders for tiled windows in monocle mode.
238 Move the window under the pointer.
241 Focus the window under the pointer.
244 Resize the window under the pointer (by moving one of its four corners).
246 Where *M4* is the fourth modifier mask (generally bound to *Super*).
250 `dzen2` fed with the output of `ewmhstatus`. Example: [launchpanel](https://github.com/baskerville/bin/blob/master/launchpanel).
252 ## Required Libraries:
254 libxcb, xcb-util, xcb-util-wm.