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 [sxhkd](https://github.com/baskerville/sxhkd).
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 [sxhkdrc](https://github.com/baskerville/dotfiles/blob/master/sxhkdrc).
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).
99 Return the list of rules.
101 presel left|right|up|down [SPLIT_RATIO]
102 Switch to manual mode and select the splitting direction.
105 Switch to automatic mode.
108 Set the splitting ratio of the focused window.
110 pad MONITOR_NAME [TOP_PADDING [RIGHT_PADDING [BOTTOM_PADDING [LEFT_PADDING]]]]
111 Set the padding of the given monitor.
113 focus left|right|up|down
114 Focus the neighbor window situated in the given direction.
116 shift left|right|up|down
117 Exchange the current window with the given neighbor.
120 Swap the focused window with the last focused window.
122 push left|right|up|down
123 Push the fence located in the given direction.
125 pull left|right|up|down
126 Pull the fence located in the given direction.
128 cycle next|prev [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
129 Focus the next or previous window matching the given constraints.
131 nearest older|newer [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
132 Focus the nearest window matching the given constraints.
134 circulate forward|backward
135 Circulate the leaves in the given direction.
137 grab_pointer move|resize|focus
138 Begin the specified pointer action.
140 track_pointer ROOT_X ROOT_Y
141 Pass the pointer root coordinates for the current pointer action.
144 End the current pointer action.
147 Toggle the fullscreen state of the current window.
150 Toggle the floating state of the current window.
153 Toggle the locked state of the current window (locked windows will not respond to the 'close' message).
156 Toggle the visibility of all the managed windows.
159 Close the focused window.
162 Kill the focused window.
164 send_to DESKTOP_NAME [--follow]
165 Send the focused window to the given desktop.
167 drop_to next|prev [--follow]
168 Send the focused window to the next or previous desktop.
170 send_to_monitor MONITOR_NAME [--follow]
171 Send the focused window to the given monitor.
173 drop_to_monitor next|prev [--follow]
174 Send the focused window to the next or previous monitor.
177 Select the given desktop.
179 use_monitor MONITOR_NAME
180 Select the given monitor.
183 Alternate between the current and the last focused window.
186 Alternate between the current and the last focused desktop.
189 Alternate between the current and the last focused monitor.
192 Make new desktops with the given names.
194 add_in MONITOR_NAME DESKTOP_NAME ...
195 Make new desktops with the given names in the given monitor.
197 rename_monitor CURRENT_NAME NEW_NAME
198 Rename the monitor named CURRENT_NAME to NEW_NAME.
200 rename CURRENT_NAME NEW_NAME
201 Rename the desktop named CURRENT_NAME to NEW_NAME.
203 cycle_monitor next|prev
204 Select the next or previous monitor.
206 cycle_desktop next|prev [--skip-free|--skip-occupied]
207 Select the next or previous desktop.
209 layout monocle|tiled [DESKTOP_NAME ...]
210 Set the layout of the given desktops (current if none given).
213 Cycle the layout of the current desktop.
215 rotate clockwise|counter_clockwise|full_cycle
216 Rotate the tree of the current desktop.
218 rule PATTERN [DESKTOP_NAME] [floating]
219 Create a new rule (PATTERN must match the class or instance name).
222 Remove the rules with the given UIDs.
225 Manage all the unmanaged windows remaining from a previous session.
228 Reload the autostart file.
231 Reload the default settings.
234 Restore the layout of each desktop from the content of FILE_PATH.
241 Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or *#RRGGBB*, booleans are *true* or *false*.
244 Color of the main border of a focused window of a focused monitor.
247 Color of the main border of a focused window of an unfocused monitor.
250 Color of the main border of an unfocused window.
253 Color of the inner border of a window.
256 Color of the outer border of a window.
259 Color of the *presel* message feedback.
261 focused_locked_border_color
262 Color of the main border of a focused locked window of a focused monitor.
264 active_locked_border_color
265 Color of the main border of a focused locked window of an unfocused monitor.
267 normal_locked_border_color
268 Color of the main border of an unfocused locked window.
271 Color of the border of an urgent window.
276 Width of the inner, main and outer borders.
279 Value of the gap that separates windows.
281 {top,right,bottom,left}_padding
282 Padding space added at the sides of the current monitor.
285 The value that shall be used for the _NET_WM_NAME property of the root window.
288 Whether to remove borders for tiled windows in monocle mode.
291 Whether to remove gaps for tiled windows in monocle mode.
293 focus_follows_pointer
294 Wether to focus the window under the pointer.
297 Prevent floating windows from being raised when they might cover other floating windows.
301 - Configured and controlled through messages
302 - Multiple monitors support (via *Xinerama*)
303 - EWMH support (`tint2` works)
304 - Automatic and manual modes
305 - Triple window borders
310 - `dzen2` fed with the output of `ewmhstatus`. Example: [launchpanel](https://github.com/baskerville/bin/blob/master/launchpanel).
311 - A custom panel if the `-s` flag is used (have a look at the files in `examples/`).
312 - Any EWMH compliant panel (e.g. `tint2`, `bmpanel2`, etc.).
314 ## Required Libraries:
327 - [Ivan Kanakarakis](https://github.com/c00kiemon5ter)
331 bspwm *at* librelist *dot* com.