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 Therefore, the `BSPWM_SOCKET` environment variable **must** be defined and indicate the path to where the socket will be created.
17 The recommended way of defining keyboard shortcuts, is to use `xbindkeys`.
19 Configuration files must be placed in `$XDG_CONFIG_HOME/bspwm/`.
21 In that directory, `bspwmrc` (written in Lua) will be sourced and `autostart` executed.
23 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)
27 There is only two splitting modes: *automatic* and *manual*.
29 The default mode is *automatic*. The *manual* mode is entered by sending a *presel* message.
31 Example: insertion of a new node (number 4) into the given tree in
41 +-------------------------+ +-------------------------+
45 | 3 |------------| --> | 4 |------------|
49 +-------------------------+ +-------------------------+
51 Same departure, but the mode is *manual*, a `presel up` message
60 +-------------------------+ +-------------------------+
64 | 3 |------------| --> |------------|------------|
68 +-------------------------+ +-------------------------+
72 The syntax for the client is `bspc COMMAND ARGUMENTS...`.
74 The following messages are handled:
80 Return the value of the given setting.
83 Set the value of the given setting.
86 Output the internal representation of the window tree.
89 Perform a dump of each desktop.
92 Return the list of managed windows (i.e. their identifiers).
95 Close the focused window.
98 Switch to manual mode and select the splitting direction.
101 Set the splitting ratio of the focused window.
104 Switch to automatic mode.
107 Focus the neighbor node situated in the given direction.
110 Focus the neighbor node situated in the given direction.
113 Push the fence located in the given direction.
116 Pull the fence located in the given direction.
118 cycle CYC [--skip-floating|--skip-tiled]
119 Focus the next or previous window in the list of leaves.
122 Rotate the tree of the current desktop.
125 Send the focused window to the given desktop.
128 Select the given desktop.
131 Alternate between the current and the last focused desktop.
134 Make a new desktop with the given name.
136 rename CURRENT_NAME NEW_NAME
137 Rename the desktop named CURRENT_NAME to NEW_NAME.
140 Select the next or previous desktop.
143 Set the layout of the current desktop to LYT.
146 Toggle the fullscreen state of the current window.
149 Toggle the floating state of the current window.
152 Toggle the locked state of the current window (locked windows will not respond to the 'close' command).
154 rule PATTERN floating
155 Make a new rule that will floats the windows whose class name or instance name matches PATTERN.
158 Reload the autostart file.
161 Reload the settings file.
164 Reload the autostart and the settings file.
168 DIR = left|right|up|down
170 ROT = clockwise|counter_clockwise|full_cycle
175 Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or '#RRGGBB'.
178 Color of the main border of a focused window.
181 Color of the main border of an unfocused window.
184 Color of the inner border of a window.
187 Color of the outer border of a window.
190 Color of the *presel* message feedback.
192 active_locked_border_color
193 Color of the main border of a focused locked window.
195 normal_locked_border_color
196 Color of the main border of an unfocused locked window.
199 Color of the border of an urgent window.
204 Width of the inner, main and outer borders.
207 Value of the gap that separates windows.
213 Padding space added at the sides of the screen.
216 The value that shall be used for the _NET_WM_NAME property of the root window.
221 Move the window under the pointer.
224 Focus the window under the pointer.
227 Resize the window under the pointer (by moving one of its four corners).
229 Where *M4* is the fourth modifier mask (generally bound to *Super*).
231 ## Required Libraries:
233 libxcb, xcb-util-wm, lua.