2 :man version: {revnumber}
3 :man manual: Bspwm Manual
11 bspwm - Tiling window manager based on binary space partitioning
16 *bspwm* [*-h*|*-v*|*-s* _PANEL_FIFO_|*-p* _PANEL_PREFIX_]
18 *bspc* _MESSAGE_ [_ARGUMENTS_] [_OPTIONS_]
23 *bspwm* is a tiling window manager that represents windows as the leaves of a full binary tree.
25 It is controlled and configured via *bspc*.
30 *bspwm* have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
32 Its configuration file is _$XDG_CONFIG_HOME/bspwm/autostart_.
34 Keyboard and pointer bindings are defined with https://github.com/baskerville/sxhkd[sxhkd].
36 Example configuration files can be found in the *examples* directory.
41 There is only two splitting modes: _automatic_ and _manual_.
43 The default mode is _automatic_. The _manual_ mode is entered by sending a *presel* message.
45 Example: insertion of a new node (number 4) into the given tree in _automatic_ mode:
55 +-------------------------+ +-------------------------+
59 | 3 |------------| --> | 4 |------------|
63 +-------------------------+ +-------------------------+
66 Same departure, but the mode is _manual_, and a *presel* _up_ message was sent beforehand:
75 +-------------------------+ +-------------------------+
79 | 3 |------------| --> |------------|------------|
83 +-------------------------+ +-------------------------+
89 Each monitor contains at least one desktop.
91 Each desktop contains at most one tree.
98 Return the value of the given setting.
100 *set* _SETTING_ _VALUE_::
101 Set the value of the given setting.
103 *list* [_DESKTOP_NAME_]::
104 Output the internal representation of the window tree.
106 *list_desktops* [*--quiet*]::
107 Perform a dump of each desktop for the current monitor.
109 *list_monitors* [*--quiet*]::
110 Perform a dump of each monitor.
113 Return the node focus history of each desktop.
116 Return the list of managed windows (i.e. their identifiers).
119 Return the list of rules.
121 *presel* _left_|_right_|_up_|_down_ [_SPLIT_RATIO_]::
122 Switch to manual mode and select the splitting direction.
125 Switch to automatic mode.
128 Set the splitting ratio of the focused window.
130 *pad* _MONITOR_NAME_ [_TOP_PADDING_ [_RIGHT_PADDING_ [_BOTTOM_PADDING_ [_LEFT_PADDING_]]]]::
131 Set the padding of the given monitor.
133 *focus* _left_|_right_|_up_|_down_::
134 Focus the neighbor window situated in the given direction.
136 *shift* _left_|_right_|_up_|_down_::
137 Exchange the current window with the given neighbor.
139 *swap* [*--keep-focus*]::
140 Swap the focused window with the last focused window.
142 *push* _left_|_right_|_up_|_down_::
143 Push the fence located in the given direction.
145 *pull* _left_|_right_|_up_|_down_::
146 Pull the fence located in the given direction.
148 *fence_ratio* _left_|_right_|_up_|_down_ _RATIO_::
149 Set the splitting ratio of the fence located in the given direction.
151 *cycle* _next_|_prev_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
152 Focus the next or previous window matching the given constraints.
154 *nearest* _older_|_newer_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
155 Focus the nearest window matching the given constraints.
158 Return the ID of the biggest tiled window.
160 *circulate* _forward_|_backward_::
161 Circulate the leaves in the given direction.
163 *grab_pointer* _focus_|_move_|_resize_side_|_resize_corner_::
164 Begin the specified pointer action.
166 *track_pointer* _ROOT_X_ _ROOT_Y_::
167 Pass the pointer root coordinates for the current pointer action.
170 End the current pointer action.
172 *toggle_fullscreen*::
173 Toggle the fullscreen state of the current window.
176 Toggle the floating state of the current window.
179 Toggle the locked state of the current window (locked windows will not respond to the *close* message).
181 *toggle_visibility*::
182 Toggle the visibility of all the managed windows.
185 Close the focused window.
188 Kill the focused window.
190 *send_to* _DESKTOP_NAME_ [*--follow*]::
191 Send the focused window to the given desktop.
193 *drop_to* _next_|_prev_ [*--follow*]::
194 Send the focused window to the next or previous desktop.
196 *send_to_monitor* _MONITOR_NAME_ [*--follow*]::
197 Send the focused window to the given monitor.
199 *drop_to_monitor* _next_|_prev_ [*--follow*]::
200 Send the focused window to the next or previous monitor.
202 *use* _DESKTOP_NAME_::
203 Select the given desktop.
205 *use_monitor* _MONITOR_NAME_::
206 Select the given monitor.
208 *focus_monitor* _left_|_right_|_up_|_down_::
209 Focus the nearest monitor in the given direction.
212 Alternate between the current and the last focused window.
214 *alternate_desktop*::
215 Alternate between the current and the last focused desktop.
217 *alternate_monitor*::
218 Alternate between the current and the last focused monitor.
220 *add* _DESKTOP_NAME_ ...::
221 Make new desktops with the given names.
223 *add_in* _MONITOR_NAME_ _DESKTOP_NAME_ ...::
224 Make new desktops with the given names in the given monitor.
226 *rename_monitor* _CURRENT_NAME_ _NEW_NAME_::
227 Rename the monitor named _CURRENT_NAME_ to _NEW_NAME_.
229 *rename* _CURRENT_NAME_ _NEW_NAME_::
230 Rename the desktop named _CURRENT_NAME_ to _NEW_NAME_.
232 *remove_desktop* _DESKTOP_NAME_ ...::
233 Remove the given desktops.
235 *send_desktop_to* _MONITOR_NAME_ [*--follow*]::
236 Send the current desktop to the given monitor.
238 *cycle_monitor* _next_|_prev_::
239 Select the next or previous monitor.
241 *cycle_desktop* _next_|_prev_ [*--skip-free*|*--skip-occupied*]::
242 Select the next or previous desktop.
244 *layout* _monocle_|_tiled_ [_DESKTOP_NAME_ ...]::
245 Set the layout of the given desktops (current if none given).
248 Cycle the layout of the current desktop.
250 *rotate* _clockwise_|_counter_clockwise_|_full_cycle_::
251 Rotate the window tree.
253 *flip* _horizontal_|_vertical_::
254 Flip the window tree.
257 Adjust the split ratios so that all windows occupy the same area.
259 *rule* _PATTERN_ [_DESKTOP_NAME_] [_floating_] [_follow_]::
260 Create a new rule (_PATTERN_ must match the class or instance name).
262 *remove_rule* _UID_ ...::
263 Remove the rules with the given _UIDs_.
266 Output the current state to the panel fifo.
269 Manage all the unmanaged windows remaining from a previous session.
271 *restore_layout* _FILE_PATH_::
272 Restore the layout of each desktop from the content of _FILE_PATH_.
274 *restore_history* _FILE_PATH_::
275 Restore the history of each desktop from the content of _FILE_PATH_.
277 *quit* [_EXIT_STATUS_]::
282 Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or _#RRGGBB_, booleans are _true_ or _false_.
284 All the boolean settings are _false_ by default.
287 _focused_border_color_::
288 Color of the border of a focused window of a focused monitor.
290 _active_border_color_::
291 Color of the border of a focused window of an unfocused monitor.
293 _normal_border_color_::
294 Color of the border of an unfocused window.
296 _presel_border_color_::
297 Color of the *presel* message feedback.
299 _focused_locked_border_color_::
300 Color of the border of a focused locked window of a focused monitor.
302 _active_locked_border_color_::
303 Color of the border of a focused locked window of an unfocused monitor.
305 _normal_locked_border_color_::
306 Color of the border of an unfocused locked window.
308 _urgent_border_color_::
309 Color of the border of an urgent window.
315 Value of the gap that separates windows.
320 _top_padding_, _right_padding_, _bottom_padding_, _left_padding_::
321 Padding space added at the sides of the current monitor.
324 The value that shall be used for the '_NET_WM_NAME' property of the root window.
326 _borderless_monocle_::
327 Remove borders for tiled windows in monocle mode.
330 Remove gaps for tiled windows in monocle mode.
332 _focus_follows_pointer_::
333 Focus the window under the pointer.
335 _pointer_follows_monitor_::
336 When focusing a monitor, put the pointer at its center.
338 _monitor_focus_fallback_::
339 If the focus message fails, try to focus the nearest monitor in the same direction.
342 Prevent floating windows from being raised when they might cover other floating windows.
344 _apply_shadow_property_::
345 Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
348 Interpret two consecutive identical *use* messages as an *alternate* message.
350 _focus_by_distance_::
351 Use window or leaf distance for focus movement.
353 _history_aware_focus_::
354 Give priority to the focus history when focusing nodes.
356 Environment Variables
357 ---------------------
360 The path of the socket used for the communication between *bspc* and *bspwm*.
365 * Any EWMH compliant panel (e.g.: _tint2_, _bmpanel2_, etc.).
366 * A custom panel if the _-s_ flag is used (have a look at the files in _examples/panel_).
371 * Configured and controlled through messages.
372 * Multiple monitors support (via _RandR_).
373 * EWMH support (*tint2* works).
374 * Automatic and manual modes.
379 * Steven Allen <steven at stebalien.com>
380 * Thomas Adam <thomas at xteddy.org>
381 * Ivan Kanakarakis <ivan.kanak at gmail.com>
386 Bastien Dejean <baskerville at lavabit.com>
391 bspwm at librelist.com
394 vim: set ft=asciidoc: