X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=README.md;h=f2472ae6de33cb23beb44208014fba0f32aad04a;hb=bd6877370cc7f50f33b7a49ccaea8c912f73ad73;hp=8a52942ba1afbcc6f73541fa7b0e707d403a654f;hpb=49dbc770f662fecdbe7b71f8a576b725a5f47dd4;p=bspwm.git diff --git a/README.md b/README.md index 8a52942..f2472ae 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,26 @@ -![logo](https://github.com/baskerville/bspwm/raw/master/resources/bspwm_logo.png) +![logo](https://github.com/baskerville/bspwm/raw/master/logo/bspwm-logo.png) + +## Synopsis + + bspwm [-v|-s STATUS_FIFO] + + bspc MESSAGE [ARGUMENTS] [OPTIONS] ## Description -`bspwm` is a tiling window manager based on binary space partitioning. +`bspwm` is a tiling window manager where each window is represented as the leaf of a binary tree. -The windows are represented as the leaves 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. -Those messages are sent through the `bspc` program. +Its configuration file is `$XDG_CONFIG_HOME/bspwm/autostart`. -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 [sxhkd](https://github.com/baskerville/sxhkd). -The recommended way of defining keyboard shortcuts is to use `xbindkeys`. - -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/`. - -Example configurations: [autostart](https://github.com/baskerville/bin/blob/master/bspwm_autostart) and [xbindkeysrc](https://github.com/baskerville/dotfiles/blob/master/xbindkeysrc). +Example configuration files can be found in the `examples` directory. ## Splitting Modes @@ -46,7 +48,7 @@ Example: insertion of a new node (number 4) into the given tree in | | | | | | | +-------------------------+ +-------------------------+ -Same departure, but the mode is *manual*, a `presel up` message +Same departure, but the mode is *manual*, and a `presel up` message was sent beforehand: b b @@ -67,210 +69,170 @@ was sent beforehand: ## Messages -The syntax for the client is `bspc COMMAND ARGUMENTS ...`. +The syntax for the client is `bspc MESSAGE [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. + +- `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. - get SETTING - Return the value of the given setting. +- `cancel` — Switch to automatic mode. - set SETTING VALUE - Set the value of the given setting. +- `ratio VALUE` — Set the splitting ratio of the focused window. - close - Close the focused window. +- `pad MONITOR_NAME [TOP_PADDING [RIGHT_PADDING [BOTTOM_PADDING [LEFT_PADDING]]]]` — Set the padding of the given monitor. - kill - Kill the focused window. +- `focus left|right|up|down` — Focus the neighbor window situated in the given direction. - list - Output the internal representation of the window tree. +- `shift left|right|up|down` — Exchange the current window with the given neighbor. - list_desktops [--quiet] - Perform a dump of each desktop for the current monitor. +- `swap` — Swap the focused window with the last focused window. - list_monitors [--quiet] - Perform a dump of each monitor. +- `push left|right|up|down` — Push the fence located in the given direction. - list_windows - Return the list of managed windows (i.e. their identifiers). +- `pull left|right|up|down` — Pull the fence located in the given direction. - presel left|right|up|down - Switch to manual mode and select the splitting direction. +- `cycle next|prev [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]` — Focus the next or previous window matching the given constraints. - cancel - Switch to automatic mode. +- `nearest older|newer [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]` — Focus the nearest window matching the given constraints. - ratio VALUE - Set the splitting ratio of the focused window. +- `circulate forward|backward` — Circulate the leaves in the given direction. - focus left|right|up|down - Focus the neighbor node situated in the given direction. +- `grab_pointer focus|move|resize_side|resize_corner` — Begin the specified pointer action. - shift left|right|up|down - Focus the neighbor node situated in the given direction. +- `track_pointer ROOT_X ROOT_Y` — Pass the pointer root coordinates for the current pointer action. - push left|right|up|down - Push the fence located in the given direction. +- `ungrab_pointer` — End the current pointer action. - pull left|right|up|down - Pull the fence located in the given direction. +- `toggle_fullscreen` — Toggle the fullscreen state of the current window. - cycle next|prev [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ] - Focus the next or previous window in the list of leaves. +- `toggle_floating` — Toggle the floating state of the current window. - nearest older|newer [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ] - Focus the nearest leaf matching the given constraints. +- `toggle_locked` — Toggle the locked state of the current window (locked windows will not respond to the `close` message). - rotate clockwise|counter_clockwise|full_cycle - Rotate the tree of the current desktop. +- `toggle_visibility` — Toggle the visibility of all the managed windows. - magnetise top_left|top_right|bottom_left|bottom_right - Move all the fences toward the given corner. +- `close` — Close the focused window. - send_to DESKTOP_NAME - Send the focused window to the given desktop. +- `kill` — Kill the focused window. - send_to_monitor MONITOR_NAME - Send the focused window to the given monitor. +- `send_to DESKTOP_NAME [--follow]` — Send the focused window to the given desktop. - use DESKTOP_NAME - Select the given desktop. +- `drop_to next|prev [--follow]` — Send the focused window to the next or previous desktop. - use_monitor MONITOR_NAME - Select the given monitor. +- `send_to_monitor MONITOR_NAME [--follow]` — Send the focused window to the given monitor. - alternate - Alternate between the current and the last focused window. +- `drop_to_monitor next|prev [--follow]` — Send the focused window to the next or previous monitor. - alternate_desktop - Alternate between the current and the last focused desktop. +- `use DESKTOP_NAME` — Select the given desktop. - alternate_monitor - Alternate between the current and the last focused monitor. +- `use_monitor MONITOR_NAME` — Select the given monitor. - add DESKTOP_NAME ... - Make new desktops with the given names. +- `alternate` — Alternate between the current and the last focused window. - add_in MONITOR_NAME DESKTOP_NAME ... - Make new desktops with the given names in the given monitor. +- `alternate_desktop` — Alternate between the current and the last focused desktop. - rename_monitor CURRENT_NAME NEW_NAME - Rename the monitor named CURRENT_NAME to NEW_NAME. +- `alternate_monitor` — Alternate between the current and the last focused monitor. - rename CURRENT_NAME NEW_NAME - Rename the desktop named CURRENT_NAME to NEW_NAME. +- `add DESKTOP_NAME ...` — Make new desktops with the given names. - cycle_monitor next|prev - Select the next or previous monitor. +- `add_in MONITOR_NAME DESKTOP_NAME ...` — Make new desktops with the given names in the given monitor. - cycle_desktop next|prev [--skip-free|--skip-occupied] - Select the next or previous desktop. - - layout monocle|tiled - Set the layout of the current desktop. +- `rename_monitor CURRENT_NAME NEW_NAME` — Rename the monitor named `CURRENT_NAME` to `NEW_NAME`. - cycle_layout - Cycle the layout of the current desktop. +- `rename CURRENT_NAME NEW_NAME` — Rename the desktop named `CURRENT_NAME` to `NEW_NAME`. - toggle_fullscreen - Toggle the fullscreen state of the current window. +- `cycle_monitor next|prev` — Select the next or previous monitor. - toggle_floating - Toggle the floating state of the current window. +- `cycle_desktop next|prev [--skip-free|--skip-occupied]` — Select the next or previous desktop. - toggle_locked - Toggle the locked state of the current window (locked windows will not respond to the 'close' command). +- `layout monocle|tiled [DESKTOP_NAME ...]` — Set the layout of the given desktops (current if none given). - rule PATTERN floating - Make a new rule that will float the windows whose class name or instance name equals PATTERN. +- `cycle_layout` — Cycle the layout of the current desktop. - reload_autostart - Reload the autostart file. +- `rotate clockwise|counter_clockwise|full_cycle` — Rotate the window tree. - reload_settings - Reload the default settings. +- `flip horizontal|vertical` — Flip the window tree. - reload - Reload the autostart file and the default settings. +- `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](http://en.wikipedia.org/wiki/X11_color_names) or '#RRGGBB', booleans are 'true' or 'false'. +Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or *#RRGGBB*, booleans are *true* or *false*. + +- `focused_border_color` — Color of the border of a focused window of a focused monitor. - focused_border_color - Color of the main border of a focused window of a focused monitor. +- `active_border_color` — Color of the border of a focused window of an unfocused monitor. - active_border_color - Color of the main border of a focused window of an unfocused monitor. +- `normal_border_color` — Color of the border of an unfocused window. - normal_border_color - Color of the main border of an unfocused window. - - inner_border_color - Color of the inner border of a window. +- `presel_border_color` — Color of the `presel` message feedback. - outer_border_color - Color of the outer border of a 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. - focused_locked_border_color - Color of the main 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. - active_locked_border_color - Color of the main border of a focused locked window of an unfocused monitor. +- `normal_locked_border_color` — Color of the border of an unfocused 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. - urgent_border_color - Color of the border of an urgent window. +- `border_width` — Window border width. - 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. - window_gap - Value of the gap that separates windows. +- `{top,right,bottom,left}_padding` — Padding space added at the sides of the current monitor. - 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. - 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. - button_modifier - The modifier mask used for mouse bindings (possible values: 'mod1' ... 'mod5'). +- `gapless_monocle` — Whether to remove gaps for tiled windows in monocle mode. - borderless_monocle - Whether to remove borders for tiled windows in monocle mode. +- `focus_follows_pointer` — Wether to focus the window under the pointer. - focus_follows_mouse - Wether to focus the window under the mouse pointer. +- `adaptative_raise` — Prevent floating windows from being raised when they might cover other floating windows. -## Mouse Bindings +- `apply_shadow_property` — Enable shadows for floating windows via the `_COMPTON_SHADOW` property. - button_modifier + left mouse button - Move the window under the pointer. +## Environment Variables - button_modifier + middle mouse button - Focus the window under the pointer. +- `BSPWM_SOCKET` — The path of the socket used for the communication between `bspc` and `bspwm`. - button_modifier + right mouse button - Resize the window under the pointer (by moving one of its four corners). +## Key Features -## Panel +- Configured and controlled through messages. +- Multiple monitors support (via *Xinerama*). +- EWMH support (`tint2` works). +- Automatic and manual modes. -`dzen2` fed with the output of `ewmhstatus`. Example: [launchpanel](https://github.com/baskerville/bin/blob/master/launchpanel). +## 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](https://github.com/baskerville/bin/blob/master/launchpanel). ## Required Libraries: @@ -286,3 +248,13 @@ Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) ## Contributors - [Ivan Kanakarakis](https://github.com/c00kiemon5ter) + +- [Thomas Adam](https://github.com/ThomasAdam) + +## Mailing List + +bspwm *at* librelist *dot* com. + +## License + +BSD.