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.
169 *toggle_fullscreen*::
170 Toggle the fullscreen state of the current window.
173 Toggle the floating state of the current window.
176 Toggle the locked state of the current window (locked windows will not respond to the *close* message).
178 *toggle_visibility*::
179 Toggle the visibility of all the managed windows.
182 Close the focused window.
185 Kill the focused window.
187 *send_to* _DESKTOP_NAME_ [*--follow*]::
188 Send the focused window to the given desktop.
190 *drop_to* _next_|_prev_ [*--follow*]::
191 Send the focused window to the next or previous desktop.
193 *send_to_monitor* _MONITOR_NAME_ [*--follow*]::
194 Send the focused window to the given monitor.
196 *drop_to_monitor* _next_|_prev_ [*--follow*]::
197 Send the focused window to the next or previous monitor.
199 *use* _DESKTOP_NAME_::
200 Select the given desktop.
202 *use_monitor* _MONITOR_NAME_::
203 Select the given monitor.
205 *focus_monitor* _left_|_right_|_up_|_down_::
206 Focus the nearest monitor in the given direction.
209 Alternate between the current and the last focused window.
211 *alternate_desktop*::
212 Alternate between the current and the last focused desktop.
214 *alternate_monitor*::
215 Alternate between the current and the last focused monitor.
217 *add* _DESKTOP_NAME_ ...::
218 Make new desktops with the given names.
220 *add_in* _MONITOR_NAME_ _DESKTOP_NAME_ ...::
221 Make new desktops with the given names in the given monitor.
223 *rename_monitor* _CURRENT_NAME_ _NEW_NAME_::
224 Rename the monitor named _CURRENT_NAME_ to _NEW_NAME_.
226 *rename* _CURRENT_NAME_ _NEW_NAME_::
227 Rename the desktop named _CURRENT_NAME_ to _NEW_NAME_.
229 *remove_desktop* _DESKTOP_NAME_ ...::
230 Remove the given desktops.
232 *send_desktop_to* _MONITOR_NAME_ [*--follow*]::
233 Send the current desktop to the given monitor.
235 *cycle_monitor* _next_|_prev_::
236 Select the next or previous monitor.
238 *cycle_desktop* _next_|_prev_ [*--skip-free*|*--skip-occupied*]::
239 Select the next or previous desktop.
241 *layout* _monocle_|_tiled_ [_DESKTOP_NAME_ ...]::
242 Set the layout of the given desktops (current if none given).
245 Cycle the layout of the current desktop.
247 *rotate* _clockwise_|_counter_clockwise_|_full_cycle_::
248 Rotate the window tree.
250 *flip* _horizontal_|_vertical_::
251 Flip the window tree.
254 Adjust the split ratios so that all windows occupy the same area.
256 *rule* _PATTERN_ [_DESKTOP_NAME_] [_floating_] [_follow_]::
257 Create a new rule (_PATTERN_ must match the class or instance name).
259 *remove_rule* _UID_ ...::
260 Remove the rules with the given _UIDs_.
263 Output the current state to the panel fifo.
266 Manage all the unmanaged windows remaining from a previous session.
268 *restore_layout* _FILE_PATH_::
269 Restore the layout of each desktop from the content of _FILE_PATH_.
271 *restore_history* _FILE_PATH_::
272 Restore the history of each desktop from the content of _FILE_PATH_.
274 *quit* [_EXIT_STATUS_]::
279 Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or _#RRGGBB_, booleans are _true_ or _false_.
281 All the boolean settings are _false_ by default.
284 _focused_border_color_::
285 Color of the border of a focused window of a focused monitor.
287 _active_border_color_::
288 Color of the border of a focused window of an unfocused monitor.
290 _normal_border_color_::
291 Color of the border of an unfocused window.
293 _presel_border_color_::
294 Color of the *presel* message feedback.
296 _focused_locked_border_color_::
297 Color of the border of a focused locked window of a focused monitor.
299 _active_locked_border_color_::
300 Color of the border of a focused locked window of an unfocused monitor.
302 _normal_locked_border_color_::
303 Color of the border of an unfocused locked window.
305 _urgent_border_color_::
306 Color of the border of an urgent window.
312 Value of the gap that separates windows.
317 _top_padding_, _right_padding_, _bottom_padding_, _left_padding_::
318 Padding space added at the sides of the current monitor.
321 The value that shall be used for the '_NET_WM_NAME' property of the root window.
323 _borderless_monocle_::
324 Remove borders for tiled windows in monocle mode.
327 Remove gaps for tiled windows in monocle mode.
329 _focus_follows_pointer_::
330 Focus the window under the pointer.
332 _pointer_follows_monitor_::
333 When focusing a monitor, put the pointer at its center.
335 _monitor_focus_fallback_::
336 If the focus message fails, try to focus the nearest monitor in the same direction.
339 Prevent floating windows from being raised when they might cover other floating windows.
341 _apply_shadow_property_::
342 Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
345 Interpret two consecutive identical *use* messages as an *alternate* message.
347 _focus_by_distance_::
348 Use window or leaf distance for focus movement.
350 _history_aware_focus_::
351 Give priority to the focus history when focusing nodes.
353 Environment Variables
354 ---------------------
357 The path of the socket used for the communication between *bspc* and *bspwm*.
362 * Any EWMH compliant panel (e.g.: _tint2_, _bmpanel2_, etc.).
363 * A custom panel if the _-s_ flag is used (have a look at the files in _examples/panel_).
368 * Configured and controlled through messages.
369 * Multiple monitors support (via _RandR_).
370 * EWMH support (*tint2* works).
371 * Automatic and manual modes.
376 * Steven Allen <steven at stebalien.com>
377 * Thomas Adam <thomas at xteddy.org>
378 * Ivan Kanakarakis <ivan.kanak at gmail.com>
383 Bastien Dejean <baskerville at lavabit.com>
388 bspwm at librelist.com
391 vim: set ft=asciidoc: