1 ![logo](https://github.com/baskerville/bspwm/raw/master/logo/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 via `bspc`.
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 `shkd` or `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*, and a `presel up` message
58 +-------------------------+ +-------------------------+
62 | 3 |------------| --> |------------|------------|
66 +-------------------------+ +-------------------------+
70 bspwm [-v|-s STATUS_FIFO]
72 bspc MESSAGE [ARGUMENTS] [OPTIONS]
76 The syntax for the client is `bspc MESSAGE [ARGUMENTS ...]`.
78 The following messages are handled:
81 Return the value of the given setting.
84 Set the value of the given setting.
87 Output the internal representation of the window tree.
89 list_desktops [--quiet]
90 Perform a dump of each desktop for the current monitor.
92 list_monitors [--quiet]
93 Perform a dump of each monitor.
96 Return the list of managed windows (i.e. their identifiers).
98 presel left|right|up|down [SPLIT_RATIO]
99 Switch to manual mode and select the splitting direction.
102 Switch to automatic mode.
105 Set the splitting ratio of the focused window.
107 pad MONITOR_NAME [TOP_PADDING [RIGHT_PADDING [BOTTOM_PADDING [LEFT_PADDING]]]]
108 Set the padding of the given monitor.
110 focus left|right|up|down
111 Focus the neighbor window situated in the given direction.
113 shift left|right|up|down
114 Exchange the current window with the given neighbor.
116 push left|right|up|down
117 Push the fence located in the given direction.
119 pull left|right|up|down
120 Pull the fence located in the given direction.
122 cycle next|prev [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
123 Focus the next or previous window matching the given constraints.
125 nearest older|newer [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
126 Focus the nearest window matching the given constraints.
128 circulate forward|backward
129 Circulate the leaves in the given direction.
132 Toggle the fullscreen state of the current window.
135 Toggle the floating state of the current window.
138 Toggle the locked state of the current window (locked windows will not respond to the 'close' message).
141 Toggle the visibility of all the managed windows.
144 Close the focused window.
147 Kill the focused window.
149 send_to DESKTOP_NAME [--follow]
150 Send the focused window to the given desktop.
152 send_to_monitor MONITOR_NAME [--follow]
153 Send the focused window to the given monitor.
156 Select the given desktop.
158 use_monitor MONITOR_NAME
159 Select the given monitor.
162 Alternate between the current and the last focused window.
165 Alternate between the current and the last focused desktop.
168 Alternate between the current and the last focused monitor.
171 Make new desktops with the given names.
173 add_in MONITOR_NAME DESKTOP_NAME ...
174 Make new desktops with the given names in the given monitor.
176 rename_monitor CURRENT_NAME NEW_NAME
177 Rename the monitor named CURRENT_NAME to NEW_NAME.
179 rename CURRENT_NAME NEW_NAME
180 Rename the desktop named CURRENT_NAME to NEW_NAME.
182 cycle_monitor next|prev
183 Select the next or previous monitor.
185 cycle_desktop next|prev [--skip-free|--skip-occupied]
186 Select the next or previous desktop.
188 layout monocle|tiled [DESKTOP_NAME ...]
189 Set the layout of the given desktops (current if none given).
192 Cycle the layout of the current desktop.
194 rotate clockwise|counter_clockwise|full_cycle
195 Rotate the tree of the current desktop.
197 rule PATTERN [DESKTOP_NAME] [floating]
198 Create a new rule (PATTERN must match the class or instance name).
201 Manage all the unmanaged windows remaining from a previous session.
204 Reload the autostart file.
207 Reload the default settings.
214 Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or *#RRGGBB*, booleans are *true* or *false*.
217 Color of the main border of a focused window of a focused monitor.
220 Color of the main border of a focused window of an unfocused monitor.
223 Color of the main border of an unfocused window.
226 Color of the inner border of a window.
229 Color of the outer border of a window.
232 Color of the *presel* message feedback.
234 focused_locked_border_color
235 Color of the main border of a focused locked window of a focused monitor.
237 active_locked_border_color
238 Color of the main border of a focused locked window of an unfocused monitor.
240 normal_locked_border_color
241 Color of the main border of an unfocused locked window.
244 Color of the border of an urgent window.
249 Width of the inner, main and outer borders.
252 Value of the gap that separates windows.
254 {top,right,bottom,left}_padding
255 Padding space added at the sides of the current monitor.
258 The value that shall be used for the _NET_WM_NAME property of the root window.
261 The modifier mask used for mouse bindings (possible values: 'shift', 'control', 'lock', 'mod1' ... 'mod5').
264 The modifier holding Num_Lock (cf. xmodmap).
267 The modifier holding Lock.
270 Whether to remove borders for tiled windows in monocle mode.
273 Whether to remove gaps for tiled windows in monocle mode.
276 Wether to focus the window under the mouse pointer.
279 Prevent floating windows from being raised when they might cover other floating windows.
283 button_modifier + left mouse button
284 Move the window under the pointer.
286 button_modifier + middle mouse button
287 Focus the window under the pointer.
289 button_modifier + right mouse button
290 Resize the window under the pointer (by moving one of its four corners).
294 - Configured and controlled through messages
295 - Multiple monitors support (via *Xinerama*)
296 - EWMH support (`tint2` works)
297 - Automatic and manual modes
298 - Triple window borders
303 - `dzen2` fed with the output of `ewmhstatus`. Example: [launchpanel](https://github.com/baskerville/bin/blob/master/launchpanel).
304 - A custom panel if the `-s` flag is used (have a look at the files in `examples/`).
305 - Any EWMH compliant panel (e.g. `tint2`, `bmpanel2`, etc.).
307 ## Required Libraries:
320 - [Ivan Kanakarakis](https://github.com/c00kiemon5ter)
324 bspwm *at* librelist *dot* com.