No description
Find a file
2013-03-19 23:17:39 +01:00
examples Encourage the use of pam 2013-03-18 21:02:37 +01:00
logo New logo 2012-12-05 12:45:12 +01:00
.gitignore Still filling map_request 2012-09-03 21:40:30 +02:00
bspc.c Check for bind/listen errors when creating socket 2013-01-06 18:36:27 +01:00
bspwm.1 Clarify and expand the configuration documentation 2013-03-16 12:29:24 +01:00
bspwm.c New setting: 'focus_follows_pointer' 2013-03-04 11:25:12 +01:00
bspwm.h New setting: 'focus_follows_pointer' 2013-03-04 11:25:12 +01:00
common.h Cosmetic renaming 2012-11-11 18:55:58 +01:00
CONTRIBUTING.md Don't need clean or install 2013-03-19 16:48:30 +01:00
events.c Moving tiled windows to empty desktops 2013-03-10 09:55:09 +01:00
events.h New setting: 'focus_follows_pointer' 2013-03-04 11:25:12 +01:00
ewmh.c Check the initialization of EWMH atoms 2013-01-29 17:08:35 +01:00
ewmh.h Orphan adoption: restore desktops organization 2012-10-25 21:49:14 +02:00
helpers.c New messages: '{grab,track,ungrab}_pointer' 2013-01-08 15:52:20 +01:00
helpers.h Add tiled move/resize pointer actions 2013-02-04 14:22:41 +01:00
LICENSE Added License 2012-09-23 17:20:43 +02:00
Makefile Fix incomplete source dependencies 2013-03-19 23:17:39 +01:00
messages.c Remove trailing spaces 2013-03-16 19:20:20 +01:00
messages.h New message: 'flip' 2013-02-26 12:54:01 +01:00
README.md Clarify and expand the configuration documentation 2013-03-16 12:29:24 +01:00
rules.c Remove trailing spaces 2013-03-16 19:20:20 +01:00
rules.h New argument for the rule message: follow 2013-03-12 10:56:45 +01:00
settings.c New setting: 'focus_follows_pointer' 2013-03-04 11:25:12 +01:00
settings.h New setting: 'focus_follows_pointer' 2013-03-04 11:25:12 +01:00
Sourcedeps Fix incomplete source dependencies 2013-03-19 23:17:39 +01:00
TODO.md Update TODO. 2013-03-03 10:39:15 +01:00
tree.c Exhaustively clear input focus before unmapping 2013-03-18 19:44:09 +01:00
tree.h New message: balance 2013-03-10 18:28:30 +01:00
types.c New argument for the rule message: follow 2013-03-12 10:56:45 +01:00
types.h New argument for the rule message: follow 2013-03-12 10:56:45 +01:00
window.c Exhaustively clear input focus before unmapping 2013-03-18 19:44:09 +01:00
window.h Exhaustively clear input focus before unmapping 2013-03-18 19:44:09 +01:00

logo

Synopsis

bspwm [-v|-s STATUS_FIFO]

bspc MESSAGE [ARGUMENTS] [OPTIONS]

Description

bspwm is a tiling window manager where each window is represented as the leaf of a 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.

The recommended way of defining keyboard shortcuts is to use 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:

                 b                                   c
                / \                                 / \
               3   a              -->              4   b
               ^  / \                              ^  / \
                 2   1                               3   a
                                                        / \
                                                       2   1
    +-------------------------+         +-------------------------+
    |            |            |         |            |            |
    |            |     2      |         |            |     3      |
    |            |            |         |            |            |
    |     3      |------------|   -->   |     4      |------------|
    |     ^      |            |         |     ^      |     |      |
    |            |     1      |         |            |  1  |  2   |
    |            |            |         |            |     |      |
    +-------------------------+         +-------------------------+

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

                 b                                   b
                / \                                 / \
               3   a              -->              c   a
               ^  / \                             / \ / \
                 2   1                           4  3 2  1
                                                 ^
    +-------------------------+         +-------------------------+
    |            |            |         |            |            |
    |            |     2      |         |     4      |     2      |
    |            |            |         |     ^      |            |
    |     3      |------------|   -->   |------------|------------|
    |     ^      |            |         |            |            |
    |            |     1      |         |     3      |     1      |
    |            |            |         |            |            |
    +-------------------------+         +-------------------------+

Messages

The syntax for the client is bspc MESSAGE [ARGUMENTS ...].

The following messages are handled:

  • 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_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 — 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.

  • 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.

  • 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.

  • 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 UIDs.

  • adopt_orphans — Manage all the unmanaged windows remaining from a previous session.

  • restore FILE_PATH — Restore the layout of each desktop from the content of FILE_PATH.

  • quit [EXIT_STATUS] — Quit.

Settings

Colors are either X color names or #RRGGBB, booleans are true or false.

  • 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.

  • {top,right,bottom,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 — Whether to remove borders for tiled windows in monocle mode.

  • gapless_monocle — Whether to remove gaps for tiled windows in monocle mode.

  • focus_follows_pointer — Wether to focus the window under the pointer.

  • 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.

Environment Variables

  • BSPWM_SOCKET — The path of the socket used for the communication between bspc and bspwm.

Key Features

  • Configured and controlled through messages.
  • Multiple monitors support (via Xinerama).
  • EWMH support (tint2 works).
  • Automatic and manual modes.

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).
  • dzen2 fed with the output of ewmhstatus. Example: launchpanel.

Required Libraries:

  • libxcb
  • xcb-util
  • xcb-util-wm

Installation

make
make install

Contributors

Mailing List

bspwm at librelist dot com.

License

BSD.