bspwm/doc/bspwm.1.txt

483 lines
11 KiB
Text
Raw Normal View History

2013-06-26 21:50:01 +02:00
:man source: Bspwm
:man version: {revnumber}
:man manual: Bspwm Manual
bspwm(1)
========
Name
----
bspwm - Tiling window manager based on binary space partitioning
Synopsis
--------
*bspwm* [*-h*|*-v*|*-s* 'PANEL_FIFO'|*-p* 'PANEL_PREFIX']
2013-06-26 21:50:01 +02:00
*bspc* 'COMMAND' ['ARGUMENTS']
2013-06-26 21:50:01 +02:00
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*.
Options
-------
*-h*::
Print the synopsis and exit.
*-v*::
Print the version and exit.
*-s* 'PANEL_FIFO'::
Write the internal state to the given FIFO.
*-p* 'PANEL_PREFIX'::
Start every line written to the 'PANEL_FIFO' with the given prefix.
2013-06-26 21:50:01 +02:00
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'.
2013-06-26 21:50:01 +02:00
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
---------------
New windows are inserted in the tree as close as possible to the focused window.
There is only two splitting modes: 'automatic' and 'manual'.
2013-06-26 21:50:01 +02:00
The default mode is 'automatic'. The 'manual' mode is entered by sending a *preselection* message.
2013-06-26 21:50:01 +02:00
Example: insertion of a new node (number 4) into the given tree in 'automatic' mode:
2013-06-26 21:50:01 +02:00
2013-06-27 12:21:24 +02:00
----
2013-06-26 21:50:01 +02:00
b c
/ \ / \
3 a --> 4 b
^ / \ ^ / \
2 1 3 a
/ \
2 1
+-------------------------+ +-------------------------+
| | | | | |
| | 2 | | | 3 |
| | | | | |
| 3 |------------| --> | 4 |------------|
| ^ | | | ^ | | |
| | 1 | | | 1 | 2 |
| | | | | | |
+-------------------------+ +-------------------------+
2013-06-27 12:21:24 +02:00
----
2013-06-26 21:50:01 +02:00
Same departure, but the mode is 'manual', and a *window --presel up* message was sent beforehand:
2013-06-26 21:50:01 +02:00
2013-06-27 12:21:24 +02:00
----
2013-06-26 21:50:01 +02:00
b b
/ \ / \
3 a --> c a
^ / \ / \ / \
2 1 4 3 2 1
^
+-------------------------+ +-------------------------+
| | | | | |
| | 2 | | 4 | 2 |
| | | | ^ | |
| 3 |------------| --> |------------|------------|
| ^ | | | | |
| | 1 | | 3 | 1 |
| | | | | |
+-------------------------+ +-------------------------+
2013-06-27 12:21:24 +02:00
----
2013-06-26 21:50:01 +02:00
Containers
----------
Each monitor contains at least one desktop.
Each desktop contains at most one tree.
Definitions
-----------
----
WINDOW_SEL := (CYCLE|DIR|biggest|focused|last)[.WINDOW_CLASS] | <window_id>
DESKTOP_SEL := (CYCLE|focused|last)[.DESKTOP_CLASS] | <desktop_name>
MONITOR_SEL := (CYCLE|DIR|focused|last)[.DESKTOP_CLASS] | <monitor_name>
DESKTOP_CLASS := [occupied|free]
WINDOW_CLASS := [floating|tiled][.][like|unlike]
DIR := left|right|up|down
CYCLE := next|prev
ROTATE := 90|270|180
FLIP := horizontal|vertical
----
Commands
2013-06-26 21:50:01 +02:00
--------
Window
~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
window ['WINDOW_SEL'] 'OPTIONS'
2013-06-26 21:50:01 +02:00
Options
^^^^^^^
*-f*, *--focus* ['WINDOW_SEL']::
Focus the selected or given window.
2013-06-26 21:50:01 +02:00
*-d*, *--to-desktop* 'DESKTOP_SEL'::
Send the selected window to the given desktop.
2013-06-26 21:50:01 +02:00
*-m*, *--to-monitor* 'MONITOR_SEL'::
Send the selected window to the given monitor.
2013-06-26 21:50:01 +02:00
*-w*, *--to-window* 'WINDOW_SEL'::
Transplant the selected window to the given window.
2013-06-26 21:50:01 +02:00
*-s*, *--swap* 'WINDOW_SEL'::
Swap the selected window with the given window.
2013-06-26 21:50:01 +02:00
*-p*, *--presel* 'DIR'|cancel::
Preselect the splitting area of the selected window (or cancel the preselection).
2013-06-26 21:50:01 +02:00
*-r*, *--ratio* 'RATIO'::
Set the splitting ratio of the selected window.
2013-06-26 21:50:01 +02:00
*-e*, *--edge* 'DIR' 'RATIO'|pull|push::
Set the splitting ratio (or pull, or push) the edge located in the given direction in relation to the selected window.
2013-06-26 21:50:01 +02:00
*-t*, *--toggle* floating|fullscreen|locked[=on|off]::
Set or toggle the given state for the selected window.
2013-06-26 21:50:01 +02:00
*-c*, *--close*::
Close the selected window.
2013-06-26 21:50:01 +02:00
*-k*, *--kill*::
Kill the selected window.
2013-06-26 21:50:01 +02:00
Desktop
~~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
desktop ['DESKTOP_SEL'] 'OPTIONS'
2013-06-26 21:50:01 +02:00
Options
^^^^^^^
*-f*, *--focus* ['DESKTOP_SEL']::
Focus the selected or given desktop.
2013-06-26 21:50:01 +02:00
*-m*, *--to-monitor* 'MONITOR_SEL'::
Send the selected desktop to the given monitor.
2013-06-26 21:50:01 +02:00
*-l*, *--layout* 'CYCLE'|monocle|tiled::
Set or cycle the layout of the selected desktop.
2013-06-26 21:50:01 +02:00
*-n*, *--rename* <new_name>::
Rename the selected desktop.
2013-06-26 21:50:01 +02:00
*-r*, *--remove*::
Remove the selected desktop.
2013-06-26 21:50:01 +02:00
*-c*, *--cancel-presel*::
Cancel the preselection of all the windows of the selected desktop.
2013-06-26 21:50:01 +02:00
*-F*, *--flip* 'FLIP'::
Flip the tree of the selected desktop.
2013-06-26 21:50:01 +02:00
*-R*, *--rotate* 'ROTATE'::
Rotate the tree of the selected desktop.
2013-06-26 21:50:01 +02:00
*-B*, *--balance*::
Adjust the split ratios of the tree of the selected desktop so that all windows occupy the same area.
2013-06-26 21:50:01 +02:00
*-C*, *--circulate* forward|backward::
Circulate the leaves of the tree of the selected desktop.
2013-06-26 21:50:01 +02:00
Monitor
~~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
monitor ['MONITOR_SEL'] 'OPTIONS'
2013-06-26 21:50:01 +02:00
Options
^^^^^^^
*-f*, *--focus* ['MONITOR_SEL']::
Focus the selected or given monitor.
2013-06-26 21:50:01 +02:00
*-a*, *--add-desktops* <name>...::
Create desktops with the given names in the selected monitor.
2013-06-26 21:50:01 +02:00
*-r*, *--remove-desktops* <name>...::
Remove desktops with the given names.
2013-06-26 21:50:01 +02:00
*-p*, *--pad* <top> <right> <bottom> <left>::
Set the padding of the selected monitor.
2013-06-26 21:50:01 +02:00
*-n*, *--rename* <new_name>::
Rename the selected monitor.
2013-06-26 21:50:01 +02:00
Query
~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
query 'OPTIONS'
2013-06-28 15:16:56 +02:00
Options
^^^^^^^
*-W*, *--windows*::
List matching windows.
2013-06-26 21:50:01 +02:00
*-D*, *--desktops*::
List matching desktops.
2013-06-26 21:50:01 +02:00
*-M*, *--monitors*::
List matching monitors.
2013-06-26 21:50:01 +02:00
*-T*, *--tree*::
Print tree rooted at query.
2013-06-26 21:50:01 +02:00
*-H*, *--history*::
Print the history as it relates to the query.
2013-06-26 21:50:01 +02:00
[*-m*,*--monitor* ['MONITOR_SEL']] | [*-d*,*--desktop* ['DESKTOP_SEL']] | [*-w*, *--window* ['WINDOW_SEL']]::
Constrain matches to the selected monitor, desktop or window.
2013-06-26 21:50:01 +02:00
Restore
~~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
restore 'OPTIONS'
Options
^^^^^^^
*-T*, *--tree* <file_path>::
Load the desktop trees from the given file.
*-H*, *--history* <file_path>::
Load the focus history from the given file.
Control
~~~~~~~
General Syntax
^^^^^^^^^^^^^^
control 'OPTIONS'
Options
^^^^^^^
*--adopt-orphans* <file_path>::
Manage all the unmanaged windows remaining from a previous session.
*--put-status* <file_path>::
Write the current internal state to the panel FIFO.
*--toggle-visibility*::
Toggle the visibility of all the managed windows.
Pointer
~~~~~~~
General Syntax
^^^^^^^^^^^^^^
pointer 'OPTIONS'
Options
^^^^^^^
*-t*, *--track* <x> <y>::
Pass the pointer root coordinates for the current pointer action.
2013-06-26 21:50:01 +02:00
*-g*, *--grab* focus|move|resize_side|resize_corner::
Perform the given pointer action.
2013-06-26 21:50:01 +02:00
Rule
~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
rule 'OPTIONS'
2013-06-26 21:50:01 +02:00
Options
^^^^^^^
2013-06-26 21:50:01 +02:00
*-a*, *--add* <pattern> [-d 'DESKTOP_SEL'] [--floating] [--follow]::
Create a new rule (<pattern> must match the class or instance name).
2013-06-26 21:50:01 +02:00
*-r*, *--rm* <rule_uid>...::
Remove the rules with the given UIDs.
2013-06-26 21:50:01 +02:00
*-l*, *--list* [<pattern>]::
List the rules.
2013-06-26 21:50:01 +02:00
Config
~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
config <key> [<value>]::
Get or set the value of <key>.
2013-06-26 21:50:01 +02:00
Quit
~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
quit [<status>]::
Quit with an optional exit status.
2013-06-26 21:50:01 +02:00
Settings
--------
Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or '#RRGGBB', booleans are 'true' or 'false'.
2013-06-26 21:50:01 +02:00
All the boolean settings are 'false' by default.
2013-06-26 21:50:01 +02:00
'focused_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of a focused window of a focused monitor.
'active_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of a focused window of an unfocused monitor.
'normal_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of an unfocused window.
'presel_border_color'::
2013-06-26 21:50:01 +02:00
Color of the *presel* message feedback.
'focused_locked_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of a focused locked window of a focused monitor.
'active_locked_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of a focused locked window of an unfocused monitor.
'normal_locked_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of an unfocused locked window.
'urgent_border_color'::
2013-06-26 21:50:01 +02:00
Color of the border of an urgent window.
'border_width'::
2013-06-26 21:50:01 +02:00
Window border width.
'window_gap'::
2013-06-26 21:50:01 +02:00
Value of the gap that separates windows.
'split_ratio'::
2013-06-26 21:50:01 +02:00
Default split ratio.
'top_padding'::
'right_padding'::
'bottom_padding'::
'left_padding'::
2013-06-26 21:50:01 +02:00
Padding space added at the sides of the current monitor.
'wm_name'::
2013-06-26 21:50:01 +02:00
The value that shall be used for the '_NET_WM_NAME' property of the root window.
'borderless_monocle'::
2013-06-26 21:50:01 +02:00
Remove borders for tiled windows in monocle mode.
'gapless_monocle'::
2013-06-26 21:50:01 +02:00
Remove gaps for tiled windows in monocle mode.
'focus_follows_pointer'::
2013-06-26 21:50:01 +02:00
Focus the window under the pointer.
'pointer_follows_monitor'::
2013-06-26 21:50:01 +02:00
When focusing a monitor, put the pointer at its center.
'monitor_focus_fallback'::
2013-06-28 15:44:34 +02:00
If the focus message fails, try to focus the nearest monitor in the same direction.
'adaptative_raise'::
2013-06-26 21:50:01 +02:00
Prevent floating windows from being raised when they might cover other floating windows.
'apply_shadow_property'::
2013-06-26 21:50:01 +02:00
Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
'auto_alternate'::
2013-06-26 21:50:01 +02:00
Interpret two consecutive identical *use* messages as an *alternate* message.
'auto_cancel'::
2013-07-04 12:14:47 +02:00
Interpret two consecutive identical *presel* messages as a *cancel* message.
'focus_by_distance'::
2013-06-26 21:50:01 +02:00
Use window or leaf distance for focus movement.
'history_aware_focus'::
2013-06-26 21:50:01 +02:00
Give priority to the focus history when focusing nodes.
Environment Variables
---------------------
'BSPWM_SOCKET'::
2013-06-26 21:50:01 +02:00
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').
2013-06-26 21:50:01 +02:00
Key Features
------------
* Configured and controlled through messages.
* Multiple monitors support (via 'RandR').
2013-06-26 21:50:01 +02:00
* EWMH support (*tint2* works).
* Hybrid tiling.
2013-06-26 21:50:01 +02:00
Contributors
------------
2013-07-03 09:25:27 +02:00
* Steven Allen <steven at stebalien.com>
2013-06-26 21:50:01 +02:00
* Thomas Adam <thomas at xteddy.org>
2013-07-03 09:25:27 +02:00
* Ivan Kanakarakis <ivan.kanak at gmail.com>
2013-06-26 21:50:01 +02:00
Author
------
Bastien Dejean <baskerville at lavabit.com>
Mailing List
------------
bspwm at librelist.com
////
vim: set ft=asciidoc:
////