No description
Find a file
2012-09-26 12:11:45 +02:00
resources New logo 2012-08-21 19:10:26 +02:00
.gitignore Still filling map_request 2012-09-03 21:40:30 +02:00
bspc.c Made BSPWM_SOCKET definition optional 2012-09-24 11:00:35 +02:00
bspwm.c Made BSPWM_SOCKET definition optional 2012-09-24 11:00:35 +02:00
bspwm.h Resize floating windows with the mouse 2012-09-22 16:32:35 +02:00
common.h Made BSPWM_SOCKET definition optional 2012-09-24 11:00:35 +02:00
events.c Options to skip same or different class in "cycle" 2012-09-24 19:40:49 +02:00
events.h Move floating windows with the mouse, fix born_as 2012-09-22 15:10:59 +02:00
ewmh.c Numerous fixes 2012-09-18 17:21:04 +02:00
ewmh.h Flush, EWMH, new events, presel border fix 2012-09-16 14:16:58 +02:00
helpers.h Move floating windows with the mouse, fix born_as 2012-09-22 15:10:59 +02:00
LICENSE Added License 2012-09-23 17:20:43 +02:00
luautils.c Fix truncated strings, named default colors 2012-09-12 19:10:37 +02:00
luautils.h Proper strings, drop non POSIX strdup 2012-09-10 13:47:51 +02:00
Makefile Documentation 2012-09-22 23:11:57 +02:00
messages.c New message: "magnetise" 2012-09-26 12:11:45 +02:00
messages.h New message: "magnetise" 2012-09-26 12:11:45 +02:00
README.md New message: "magnetise" 2012-09-26 12:11:45 +02:00
rules.c Fix "alternate" command, min width,height is 1,1 2012-09-20 11:50:25 +02:00
rules.h Fix "alternate" command, min width,height is 1,1 2012-09-20 11:50:25 +02:00
settings.c Locked and urgent client states and colors 2012-09-20 23:32:32 +02:00
settings.h Pseudo manual insertion for floating windows 2012-09-22 12:16:46 +02:00
tree.c New message: "magnetise" 2012-09-26 12:11:45 +02:00
tree.h New message: "magnetise" 2012-09-26 12:11:45 +02:00
types.c Options to skip same or different class in "cycle" 2012-09-24 19:40:49 +02:00
types.h Options to skip same or different class in "cycle" 2012-09-24 19:40:49 +02:00
utils.c Numerous fixes 2012-09-18 17:21:04 +02:00
utils.h Numerous fixes 2012-09-18 17:21:04 +02:00
window.c Remove useless code 2012-09-25 15:04:13 +02:00
window.h Move floating windows with the mouse, fix born_as 2012-09-22 15:10:59 +02:00

logo

Description

bspwm is a tiling window manager based on binary space partitioning.

The windows are represented as the leaves of a binary tree.

Configuration

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

Those messages are sent through the bspc program.

If the BSPWM_SOCKET environment variable is defined it will be used as the socket path, otherwise /tmp/bspwm-socket is used.

The recommended way of defining keyboard shortcuts, is to use xbindkeys.

Configuration files (bspwmrc and autostart) must be placed in $XDG_CONFIG_HOME/bspwm/.

Example configurations: bspwmrc, autostart and xbindkeysrc

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*, 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 COMMAND ARGUMENTS....

The following messages are handled:

quit
    Quit.

get SETTING
    Return the value of the given setting.

set SETTING VALUE
    Set the value of the given setting.

dump
    Output the internal representation of the window tree.

list
    Perform a dump of each desktop.

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

close
    Close the focused window.

presel DIR
    Switch to manual mode and select the splitting direction.

ratio VALUE
    Set the splitting ratio of the focused window.

cancel
    Switch to automatic mode.

focus DIR
    Focus the neighbor node situated in the given direction. 

shift DIR
    Focus the neighbor node situated in the given direction. 

push DIR
    Push the fence located in the given direction.

pull DIR
    Pull the fence located in the given direction.

cycle CYC [--skip-floating|--skip-tiled]
    Focus the next or previous window in the list of leaves.

rotate ROT
    Rotate the tree of the current desktop.

magnetise COR
    Move all the fences toward the given corner.

send_to DESKTOP_NAME
    Send the focused window to the given desktop.

use DESKTOP_NAME
    Select the given desktop.

alternate
    Alternate between the current and the last focused desktop.

add DESKTOP_NAME
    Make a new desktop with the given name.

rename CURRENT_NAME NEW_NAME
    Rename the desktop named CURRENT_NAME to NEW_NAME.

cycle_desktop CYC
    Select the next or previous desktop.
    
layout LYT
    Set the layout of the current desktop to LYT.

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' command).

rule PATTERN floating 
    Make a new rule that will floats the windows whose class name or instance name matches PATTERN. 

reload_autostart
    Reload the autostart file.

reload_settings
    Reload the settings file.

reload
    Reload the autostart and the settings file.

Where

DIR = left|right|up|down
CYC = next|prev
ROT = clockwise|counter_clockwise|full_cycle
COR = top_left|top_right|bottom_left|bottom_right
LYT = monocle|tiled

Settings

Colors are either X color names or '#RRGGBB'.

active_border_color
    Color of the main border of a focused window.

normal_border_color
    Color of the main border of an unfocused window.

inner_border_color
    Color of the inner border of a window.

outer_border_color
    Color of the outer border of a window.

presel_border_color
    Color of the *presel* message feedback.

active_locked_border_color
    Color of the main border of a focused locked window.

normal_locked_border_color
    Color of the main border of an unfocused locked window.

urgent_border_color
    Color of the border of an urgent window.

inner_border_width
main_border_width
outer_border_width
    Width of the inner, main and outer borders.

window_gap
    Value of the gap that separates windows.

top_padding
bottom_padding
left_padding
right_padding
    Padding space added at the sides of the screen.

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

Mouse Bindings

M4 + Left Button
    Move the window under the pointer.

M4 + Middle Button
    Focus the window under the pointer.

M4 + Middle Button
    Resize the window under the pointer (by moving one of its four corners).

Where M4 is the fourth modifier mask (generally bound to Super).

Required Libraries:

libxcb, xcb-util-wm, lua.

Installation

make
make install