1 image:https://github.com/baskerville/bspwm/raw/master/logo/bspwm-logo.png[logo]
4 :man version: {revnumber}
5 :man manual: Bspwm Manual
13 bspwm - Tiling window manager based on binary space partitioning
18 *bspwm* [*-h*|*-v*|*-s* _PANEL_FIFO_|*-p* _PANEL_PREFIX_]
20 *bspc* _MESSAGE_ [_ARGUMENTS_] [_OPTIONS_]
25 *bspwm* is a tiling window manager that represents windows as the leaves of a full binary tree.
27 It is controlled and configured via *bspc*.
32 *bspwm* have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
34 Its configuration file is _$XDG_CONFIG_HOME/bspwm/autostart_.
36 Keyboard and pointer bindings are defined with https://github.com/baskerville/sxhkd[sxhkd].
38 Example configuration files can be found in the *examples* directory.
43 There is only two splitting modes: _automatic_ and _manual_.
45 The default mode is _automatic_. The _manual_ mode is entered by sending a *presel* message.
47 Example: insertion of a new node (number 4) into the given tree in _automatic_ mode:
57 +-------------------------+ +-------------------------+
61 | 3 |------------| --> | 4 |------------|
65 +-------------------------+ +-------------------------+
68 Same departure, but the mode is _manual_, and a *presel* _up_ message was sent beforehand:
77 +-------------------------+ +-------------------------+
81 | 3 |------------| --> |------------|------------|
85 +-------------------------+ +-------------------------+
91 Each monitor contains at least one desktop.
93 Each desktop contains at most one tree.
100 Return the value of the given setting.
102 *set* _SETTING_ _VALUE_::
103 Set the value of the given setting.
105 *list* [_DESKTOP_NAME_]::
106 Output the internal representation of the window tree.
108 *list_desktops* [*--quiet*]::
109 Perform a dump of each desktop for the current monitor.
111 *list_monitors* [*--quiet*]::
112 Perform a dump of each monitor.
115 Return the node focus history of each desktop.
118 Return the list of managed windows (i.e. their identifiers).
121 Return the list of rules.
123 *presel* _left_|_right_|_up_|_down_ [_SPLIT_RATIO_]::
124 Switch to manual mode and select the splitting direction.
127 Switch to automatic mode.
130 Set the splitting ratio of the focused window.
132 *pad* _MONITOR_NAME_ [_TOP_PADDING_ [_RIGHT_PADDING_ [_BOTTOM_PADDING_ [_LEFT_PADDING_]]]]::
133 Set the padding of the given monitor.
135 *focus* _left_|_right_|_up_|_down_::
136 Focus the neighbor window situated in the given direction.
138 *shift* _left_|_right_|_up_|_down_::
139 Exchange the current window with the given neighbor.
141 *swap* [*--keep-focus*]::
142 Swap the focused window with the last focused window.
144 *push* _left_|_right_|_up_|_down_::
145 Push the fence located in the given direction.
147 *pull* _left_|_right_|_up_|_down_::
148 Pull the fence located in the given direction.
150 *fence_ratio* _left_|_right_|_up_|_down_ _RATIO_::
151 Set the splitting ratio of the fence located in the given direction.
153 *cycle* _next_|_prev_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
154 Focus the next or previous window matching the given constraints.
156 *nearest* _older_|_newer_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
157 Focus the nearest window matching the given constraints.
160 Return the ID of the biggest tiled window.
162 *circulate* _forward_|_backward_::
163 Circulate the leaves in the given direction.
165 *grab_pointer* _focus_|_move_|_resize_side_|_resize_corner_::
166 Begin the specified pointer action.
168 *track_pointer* _ROOT_X_ _ROOT_Y_::
169 Pass the pointer root coordinates for the current pointer action.
172 End the current pointer action.
174 *toggle_fullscreen*::
175 Toggle the fullscreen state of the current window.
178 Toggle the floating state of the current window.
181 Toggle the locked state of the current window (locked windows will not respond to the *close* message).
183 *toggle_visibility*::
184 Toggle the visibility of all the managed windows.
187 Close the focused window.
190 Kill the focused window.
192 *send_to* _DESKTOP_NAME_ [*--follow*]::
193 Send the focused window to the given desktop.
195 *drop_to* _next_|_prev_ [*--follow*]::
196 Send the focused window to the next or previous desktop.
198 *send_to_monitor* _MONITOR_NAME_ [*--follow*]::
199 Send the focused window to the given monitor.
201 *drop_to_monitor* _next_|_prev_ [*--follow*]::
202 Send the focused window to the next or previous monitor.
204 *use* _DESKTOP_NAME_::
205 Select the given desktop.
207 *use_monitor* _MONITOR_NAME_::
208 Select the given monitor.
210 *focus_monitor* _left_|_right_|_up_|_down_::
211 Focus the nearest monitor in the given direction.
214 Alternate between the current and the last focused window.
216 *alternate_desktop*::
217 Alternate between the current and the last focused desktop.
219 *alternate_monitor*::
220 Alternate between the current and the last focused monitor.
222 *add* _DESKTOP_NAME_ ...::
223 Make new desktops with the given names.
225 *add_in* _MONITOR_NAME_ _DESKTOP_NAME_ ...::
226 Make new desktops with the given names in the given monitor.
228 *rename_monitor* _CURRENT_NAME_ _NEW_NAME_::
229 Rename the monitor named _CURRENT_NAME_ to _NEW_NAME_.
231 *rename* _CURRENT_NAME_ _NEW_NAME_::
232 Rename the desktop named _CURRENT_NAME_ to _NEW_NAME_.
234 *remove_desktop* _DESKTOP_NAME_ ...::
235 Remove the given desktops.
237 *send_desktop_to* _MONITOR_NAME_ [*--follow*]::
238 Send the current desktop to the given monitor.
240 *cycle_monitor* _next_|_prev_::
241 Select the next or previous monitor.
243 *cycle_desktop* _next_|_prev_ [*--skip-free*|*--skip-occupied*]::
244 Select the next or previous desktop.
246 *layout* _monocle_|_tiled_ [_DESKTOP_NAME_ ...]::
247 Set the layout of the given desktops (current if none given).
250 Cycle the layout of the current desktop.
252 *rotate* _clockwise_|_counter_clockwise_|_full_cycle_::
253 Rotate the window tree.
255 *flip* _horizontal_|_vertical_::
256 Flip the window tree.
259 Adjust the split ratios so that all windows occupy the same area.
261 *rule* _PATTERN_ [_DESKTOP_NAME_] [_floating_] [_follow_]::
262 Create a new rule (_PATTERN_ must match the class or instance name).
264 *remove_rule* _UID_ ...::
265 Remove the rules with the given _UIDs_.
268 Output the current state to the panel fifo.
271 Manage all the unmanaged windows remaining from a previous session.
273 *restore_layout* _FILE_PATH_::
274 Restore the layout of each desktop from the content of _FILE_PATH_.
276 *restore_history* _FILE_PATH_::
277 Restore the history of each desktop from the content of _FILE_PATH_.
279 *quit* [_EXIT_STATUS_]::
284 Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or _#RRGGBB_, booleans are _true_ or _false_.
286 All the boolean settings are _false_ by default.
289 _focused_border_color_::
290 Color of the border of a focused window of a focused monitor.
292 _active_border_color_::
293 Color of the border of a focused window of an unfocused monitor.
295 _normal_border_color_::
296 Color of the border of an unfocused window.
298 _presel_border_color_::
299 Color of the *presel* message feedback.
301 _focused_locked_border_color_::
302 Color of the border of a focused locked window of a focused monitor.
304 _active_locked_border_color_::
305 Color of the border of a focused locked window of an unfocused monitor.
307 _normal_locked_border_color_::
308 Color of the border of an unfocused locked window.
310 _urgent_border_color_::
311 Color of the border of an urgent window.
317 Value of the gap that separates windows.
322 _top_padding_, _right_padding_, _bottom_padding_, _left_padding_::
323 Padding space added at the sides of the current monitor.
326 The value that shall be used for the '_NET_WM_NAME' property of the root window.
328 _borderless_monocle_::
329 Remove borders for tiled windows in monocle mode.
332 Remove gaps for tiled windows in monocle mode.
334 _focus_follows_pointer_::
335 Focus the window under the pointer.
337 _pointer_follows_monitor_::
338 When focusing a monitor, put the pointer at its center.
340 _monitor_focus_fallback_::
341 If the focus message fails, try to focus the nearest monitor in the same direction.
344 Prevent floating windows from being raised when they might cover other floating windows.
346 _apply_shadow_property_::
347 Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
350 Interpret two consecutive identical *use* messages as an *alternate* message.
352 _focus_by_distance_::
353 Use window or leaf distance for focus movement.
355 _history_aware_focus_::
356 Give priority to the focus history when focusing nodes.
358 Environment Variables
359 ---------------------
362 The path of the socket used for the communication between *bspc* and *bspwm*.
367 * Any EWMH compliant panel (e.g.: _tint2_, _bmpanel2_, etc.).
368 * A custom panel if the _-s_ flag is used (have a look at the files in _examples/panel_).
373 * Configured and controlled through messages.
374 * Multiple monitors support (via _RandR_).
375 * EWMH support (*tint2* works).
376 * Automatic and manual modes.
381 * Ivan Kanakarakis <ivan.kanak at gmail.com>
382 * Thomas Adam <thomas at xteddy.org>
387 Bastien Dejean <baskerville at lavabit.com>
392 bspwm at librelist.com
395 vim: set ft=asciidoc: