2013-06-25

Created page with "= Synopsis = '''bspwm''' ['''-h'''|'''-v'''|'''-s''' ''PANEL_FIFO''|'''-p''' ''PANEL_PREFIX''] '''bspc''' ''MESSAGE'' [''ARGUMENTS''][*OPTIONS*] = Description = '''bspwm''..."

New page

= Synopsis =

'''bspwm''' ['''-h'''|'''-v'''|'''-s''' ''PANEL_FIFO''|'''-p''' ''PANEL_PREFIX'']

'''bspc''' ''MESSAGE'' [''ARGUMENTS''][*OPTIONS*]

= Description =

'''bspwm''' is a tiling window manager that represents windows as the leaves of a full binary tree.

It is controlled and configured via '''bspc'''.

= Configuration =

'''bspwm''' have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.

Its configuration file is ''$XDG_CONFIG_HOME/bspwm/autostart''.

Keyboard and pointer bindings are defined with [https://github.com/baskerville/sxhkd sxhkd].

Example configuration files can be found in the '''examples''' directory.

= Splitting Modes =

There is only two splitting modes: ''automatic'' and ''manual''.

The default mode is ''automatic''. The ''manual'' mode is entered by sending a '''presel''' message.

Example: insertion of a new node (number 4) into the given tree in ''automatic'' mode:

<pre> b c

/ \ / \

3 a --&gt; 4 b

^ / \ ^ / \

2 1 3 a

/ \

2 1

+-------------------------+ +-------------------------+

| | | | | |

| | 2 | | | 3 |

| | | | | |

| 3 |------------| --&gt; | 4 |------------|

| ^ | | | ^ | | |

| | 1 | | | 1 | 2 |

| | | | | | |

+-------------------------+ +-------------------------+</pre>

Same departure, but the mode is ''manual'', and a '''presel''' ''up'' message was sent beforehand:

<pre> b b

/ \ / \

3 a --&gt; c a

^ / \ / \ / \

2 1 4 3 2 1

^

+-------------------------+ +-------------------------+

| | | | | |

| | 2 | | 4 | 2 |

| | | | ^ | |

| 3 |------------| --&gt; |------------|------------|

| ^ | | | | |

| | 1 | | 3 | 1 |

| | | | | |

+-------------------------+ +-------------------------+</pre>

= Containers =

Each monitor contains at least one desktop.

Each desktop contains at most one tree.

= Messages =

; '''get''' ''SETTING''

: Return the value of the given setting.

; '''set''' ''SETTING'' ''VALUE''

: Set the value of the given setting.

; '''list''' [''DESKTOP_NAME'']

: Output the internal representation of the window tree.

; '''list_desktops''' ['''--quiet''']

: Perform a dump of each desktop for the current monitor.

; '''list_monitors''' ['''--quiet''']

: Perform a dump of each monitor.

; '''list_history'''

: Return the node focus history of each desktop.

; '''list_windows'''

: Return the list of managed windows (i.e. their identifiers).

; '''list_rules'''

: Return the list of rules.

; '''presel''' ''left''|''right''|''up''|''down'' [''SPLIT_RATIO'']

: Switch to manual mode and select the splitting direction.

; '''cancel'''

: Switch to automatic mode.

; '''ratio''' ''VALUE''

: Set the splitting ratio of the focused window.

; '''pad''' ''MONITOR_NAME'' [''TOP_PADDING'' [''RIGHT_PADDING'' [''BOTTOM_PADDING'' [''LEFT_PADDING'']]]]

: Set the padding of the given monitor.

; '''focus''' ''left''|''right''|''up''|''down''

: Focus the neighbor window situated in the given direction.

; '''shift''' ''left''|''right''|''up''|''down''

: Exchange the current window with the given neighbor.

; '''swap''' ['''--keep-focus''']

: Swap the focused window with the last focused window.

; '''push''' ''left''|''right''|''up''|''down''

: Push the fence located in the given direction.

; '''pull''' ''left''|''right''|''up''|''down''

: Pull the fence located in the given direction.

; '''fence_ratio''' ''left''|''right''|''up''|''down''

: Set the splitting ratio of the fence located in the given direction.

; '''cycle''' ''next''|''prev'' ['''--skip-floating'''|'''--skip-tiled'''|'''--skip-class-equal'''|'''--skip-class-differ''']

: Focus the next or previous window matching the given constraints.

; '''nearest''' ''older''|''newer'' ['''--skip-floating'''|'''--skip-tiled'''|'''--skip-class-equal'''|'''--skip-class-differ''']

: Focus the nearest window matching the given constraints.

; '''biggest'''

: Return the ID of the biggest tiled window.

; '''circulate''' ''forward''|''backward''

: Circulate the leaves in the given direction.

; '''grab_pointer''' ''focus''|''move''|''resize_side''|''resize_corner''

: Begin the specified pointer action.

; '''track_pointer''' ''ROOT_X'' ''ROOT_Y''

: Pass the pointer root coordinates for the current pointer action.

; '''ungrab_pointer'''

: End the current pointer action.

; '''toggle_fullscreen'''

: Toggle the fullscreen state of the current window.

; '''toggle_floating'''

: Toggle the floating state of the current window.

; '''toggle_locked'''

: Toggle the locked state of the current window (locked windows will not respond to the '''close''' message).

; '''toggle_visibility'''

: Toggle the visibility of all the managed windows.

; '''close'''

: Close the focused window.

; '''kill'''

: Kill the focused window.

; '''send_to''' ''DESKTOP_NAME'' ['''--follow''']

: Send the focused window to the given desktop.

; '''drop_to''' ''next''|''prev'' ['''--follow''']

: Send the focused window to the next or previous desktop.

; '''send_to_monitor''' ''MONITOR_NAME'' ['''--follow''']

: Send the focused window to the given monitor.

; '''drop_to_monitor''' ''next''|''prev'' ['''--follow''']

: Send the focused window to the next or previous monitor.

; '''use''' ''DESKTOP_NAME''

: Select the given desktop.

; '''use_monitor''' ''MONITOR_NAME''

: Select the given monitor.

; '''alternate'''

: Alternate between the current and the last focused window.

; '''alternate_desktop'''

: Alternate between the current and the last focused desktop.

; '''alternate_monitor'''

: Alternate between the current and the last focused monitor.

; '''add''' ''DESKTOP_NAME'' ...

: Make new desktops with the given names.

; '''add_in''' ''MONITOR_NAME'' ''DESKTOP_NAME'' ...

: Make new desktops with the given names in the given monitor.

; '''rename_monitor''' ''CURRENT_NAME'' ''NEW_NAME''

: Rename the monitor named ''CURRENT_NAME'' to ''NEW_NAME''.

; '''rename''' ''CURRENT_NAME'' ''NEW_NAME''

: Rename the desktop named ''CURRENT_NAME'' to ''NEW_NAME''.

; '''remove_desktop''' ''DESKTOP_NAME'' ...

: Remove the given desktops.

; '''send_desktop_to''' ''MONITOR_NAME'' ['''--follow''']

: Send the current desktop to the given monitor.

; '''cycle_monitor''' ''next''|''prev''

: Select the next or previous monitor.

; '''cycle_desktop''' ''next''|''prev'' ['''--skip-free'''|'''--skip-occupied''']

: Select the next or previous desktop.

; '''layout''' ''monocle''|''tiled'' [''DESKTOP_NAME'' ...]

: Set the layout of the given desktops (current if none given).

; '''cycle_layout'''

: Cycle the layout of the current desktop.

; '''rotate''' ''clockwise''|''counter_clockwise''|''full_cycle''

: Rotate the window tree.

; '''flip''' ''horizontal''|''vertical''

: Flip the window tree.

; '''balance'''

: Adjust the split ratios so that all windows occupy the same area.

; '''rule''' ''PATTERN'' [''DESKTOP_NAME''][*floating*] [''follow'']

: Create a new rule (''PATTERN'' must match the class or instance name).

; '''remove_rule''' ''UID'' ...

: Remove the rules with the given ''UID''s.

; '''put_status'''

: Output the current state to the panel fifo.

; '''adopt_orphans'''

: Manage all the unmanaged windows remaining from a previous session.

; '''restore_layout''' ''FILE_PATH''

: Restore the layout of each desktop from the content of ''FILE_PATH''.

; '''restore_history''' ''FILE_PATH''

: Restore the history of each desktop from the content of ''FILE_PATH''.

; '''quit''' [''EXIT_STATUS'']

: Quit.

= Settings =

Colors are either [http://en.wikipedia.org/wiki/X11_color_names X color names] or ''#RRGGBB'', booleans are ''true'' or ''false''.

All the boolean settings are ''false'' by default.

; ''focused_border_color''

: Color of the border of a focused window of a focused monitor.

; ''active_border_color''

: Color of the border of a focused window of an unfocused monitor.

; ''normal_border_color''

: Color of the border of an unfocused window.

; ''presel_border_color''

: Color of the '''presel''' message feedback.

; ''focused_locked_border_color''

: Color of the border of a focused locked window of a focused monitor.

; ''active_locked_border_color''

: Color of the border of a focused locked window of an unfocused monitor.

; ''normal_locked_border_color''

: Color of the border of an unfocused locked window.

; ''urgent_border_color''

: Color of the border of an urgent window.

; ''border_width''

: Window border width.

; ''window_gap''

: Value of the gap that separates windows.

; ''split_ratio''

: Default split ratio.

; ''top_padding'', ''right_padding'', ''bottom_padding'', ''left_padding''

: Padding space added at the sides of the current monitor.

; ''wm_name''

: The value that shall be used for the ''_NET_WM_NAME'' property of the root window.

; ''borderless_monocle''

: Remove borders for tiled windows in monocle mode.

; ''gapless_monocle''

: Remove gaps for tiled windows in monocle mode.

; ''focus_follows_pointer''

: Focus the window under the pointer.

; ''pointer_follows_monitor''

: When focusing a monitor, put the pointer at its center.

; ''adaptative_raise''

: Prevent floating windows from being raised when they might cover other floating windows.

; ''apply_shadow_property''

: Enable shadows for floating windows via the ''_COMPTON_SHADOW'' property.

; ''auto_alternate''

: Interpret two consecutive identical '''use''' messages as an '''alternate''' message.

; ''focus_by_distance''

: Use window or leaf distance for focus movement.

; ''history_aware_focus''

: Give priority to the focus history when focusing nodes.

= Environment Variables =

; ''BSPWM_SOCKET''

: The path of the socket used for the communication between '''bspc''' and '''bspwm'''.

= Panels =

* Any EWMH compliant panel (e.g.: ''tint2'', ''bmpanel2'', etc.).

* A custom panel if the ''-s'' flag is used (have a look at the files in ''examples/panel'').

= Key Features =

* Configured and controlled through messages.

* Multiple monitors support (via ''RandR'').

* EWMH support ('''tint2''' works).

* Automatic and manual modes.

= Required Libraries: =

* libxcb

* xcb-util

* xcb-util-wm

= Mailing List =

bspwm ''at'' librelist ''dot'' com.

= Contributors =

* [https://github.com/c00kiemon5ter Ivan Kanakarakis]

* [https://github.com/ThomasAdam Thomas Adam]

Show more