]> git.lizzy.rs Git - bspwm.git/blobdiff - README.md
Mention 'shkd'
[bspwm.git] / README.md
index 7c3904629170ded9585d736db88ac446667f5d49..21df5b4ca72ae237eefabe0d1d7d08b289d502c2 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-![logo](https://github.com/baskerville/bspwm/raw/master/resources/bspwm_logo.png)
+![logo](https://github.com/baskerville/bspwm/raw/master/logo/bspwm-logo.png)
 
 ## Description
 
 
 ## Description
 
@@ -10,15 +10,15 @@ The windows are represented as the leaves of a binary tree.
 
 `bspwm` have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
 
 
 `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.
+Those messages are sent via `bspc`.
 
 
-If the `BSPWM_SOCKET` environment variable is defined it will be used as the socket path, otherwise `/tmp/bspwm-socket` is used.
+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`.
+The recommended way of defining keyboard shortcuts is to use `shkd` or `xbindkeys`.
 
 
-Configuration files (`bspwmrc` and `autostart`) must be placed in `$XDG_CONFIG_HOME/bspwm/`.
+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: [bspwmrc](https://github.com/baskerville/dotfiles/blob/master/bspwmrc), [autostart](https://github.com/baskerville/bin/blob/master/bspwm_autostart) and [xbindkeysrc](https://github.com/baskerville/dotfiles/blob/master/xbindkeysrc)
+Example configurations: [autostart](https://github.com/baskerville/bin/blob/master/bspwm_autostart) and [xbindkeysrc](https://github.com/baskerville/dotfiles/blob/master/xbindkeysrc).
 
 ## Splitting Modes
 
 
 ## Splitting Modes
 
@@ -26,8 +26,8 @@ There is only two splitting modes: *automatic* and *manual*.
 
 The default mode is *automatic*. The *manual* mode is entered by sending a *presel* message.
 
 
 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:
+Example: insertion of a new node (number 4) into the given tree in
+*automatic* mode:
 
                      b                                   c
                     / \                                 / \
 
                      b                                   c
                     / \                                 / \
@@ -46,8 +46,8 @@ The default mode is *automatic*. The *manual* mode is entered by sending a *pres
         |            |            |         |            |     |      |
         +-------------------------+         +-------------------------+
 
         |            |            |         |            |     |      |
         +-------------------------+         +-------------------------+
 
-        Same departure, but the mode is *manual*, a `presel up` message
-        was sent beforehand:
+Same departure, but the mode is *manual*, and a `presel up` message
+was sent beforehand:
 
                      b                                   b
                     / \                                 / \
 
                      b                                   b
                     / \                                 / \
@@ -67,132 +67,169 @@ The default mode is *automatic*. The *manual* mode is entered by sending a *pres
 
 ## Messages
 
 
 ## Messages
 
-The syntax for the client is `bspc COMMAND ARGUMENTS...`.
+The syntax for the client is `bspc MESSAGE [ARGUMENTS ...]`.
 
 The following messages are handled:
 
 
 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.
 
     get SETTING
         Return the value of the given setting.
 
     set SETTING VALUE
         Set the value of the given setting.
 
-    dump
+    list [DESKTOP_NAME]
         Output the internal representation of the window tree.
 
         Output the internal representation of the window tree.
 
-    list
-        Perform a dump of each desktop.
+    list_desktops [--quiet]
+        Perform a dump of each desktop for the current monitor.
 
 
-    windows
-        Return the list of managed windows (i.e. their identifiers).
+    list_monitors [--quiet]
+        Perform a dump of each monitor.
 
 
-    close
-        Close the focused window.
+    list_windows
+        Return the list of managed windows (i.e. their identifiers).
 
 
-    presel DIR
+    presel left|right|up|down
         Switch to manual mode and select the splitting direction.
 
         Switch to manual mode and select the splitting direction.
 
+    cancel
+        Switch to automatic mode.
+
     ratio VALUE
         Set the splitting ratio of the focused window.
 
     ratio VALUE
         Set the splitting ratio of the focused window.
 
-    cancel
-        Switch to automatic mode.
+    pad MONITOR_NAME [TOP_PADDING [RIGHT_PADDING [BOTTOM_PADDING [LEFT_PADDING]]]]
+        Set the padding of the given monitor.
 
 
-    focus DIR
-        Focus the neighbor node situated in the given direction. 
+    focus left|right|up|down
+        Focus the neighbor window situated in the given direction.
 
 
-    shift DIR
-        Focus the neighbor node situated in the given direction. 
+    shift left|right|up|down
+        Exchange the current window with the given neighbor.
 
 
-    push DIR
+    push left|right|up|down
         Push the fence located in the given direction.
 
         Push the fence located in the given direction.
 
-    pull DIR
+    pull left|right|up|down
         Pull the fence located in the given direction.
 
         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.
+    cycle next|prev [--skip-floating|--skip-tiled|--skip-class-equal|--skip-class-differ]
+        Focus the next or previous window matching the given constraints.
 
 
-    rotate ROT
-        Rotate the tree of the current desktop.
+    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.
+
+    toggle_fullscreen
+        Toggle the fullscreen state of the current window.
+
+    toggle_floating
+        Toggle the floating state of the current window.
 
 
-    magnetise COR
-        Move all the fences toward the given corner.
+    toggle_locked
+        Toggle the locked state of the current window (locked windows will not respond to the 'close' message).
+
+    close
+        Close the focused window.
+
+    kill
+        Kill the focused window.
 
     send_to DESKTOP_NAME
         Send the focused window to the given desktop.
 
 
     send_to DESKTOP_NAME
         Send the focused window to the given desktop.
 
+    send_to_monitor MONITOR_NAME
+        Send the focused window to the given monitor.
+
     use DESKTOP_NAME
         Select the given desktop.
     use DESKTOP_NAME
         Select the given desktop.
-    
+
+    use_monitor MONITOR_NAME
+        Select the given monitor.
+
     alternate
     alternate
+        Alternate between the current and the last focused window.
+
+    alternate_desktop
         Alternate between the current and the last focused desktop.
 
         Alternate between the current and the last focused desktop.
 
-    add DESKTOP_NAME
-        Make a new desktop with the given name.
+    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.
 
 
     rename CURRENT_NAME NEW_NAME
         Rename the desktop named CURRENT_NAME to NEW_NAME.
 
-    cycle_desktop CYC
+    cycle_monitor next|prev
+        Select the next or previous monitor.
+
+    cycle_desktop next|prev [--skip-free|--skip-occupied]
         Select the next or previous desktop.
         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.
+    layout monocle|tiled [DESKTOP_NAME ...]
+        Set the layout of the given desktops (current if none given).
 
 
-    toggle_floating
-        Toggle the floating state of the current window.
+    cycle_layout
+        Cycle the layout of the current desktop.
 
 
-    toggle_locked
-        Toggle the locked state of the current window (locked windows will not respond to the 'close' command).
+    rotate clockwise|counter_clockwise|full_cycle
+        Rotate the tree of the current desktop.
+
+    rule PATTERN [DESKTOP_NAME] [floating]
+        Create a new rule (PATTERN must match the class or instance name).
 
 
-    rule PATTERN floating 
-        Make a new rule that will floats the windows whose class name or instance name matches PATTERN. 
+    adopt_orphans
+        Manage all the unmanaged windows remaining from a previous session.
 
     reload_autostart
         Reload the autostart file.
 
     reload_settings
 
     reload_autostart
         Reload the autostart file.
 
     reload_settings
-        Reload the settings file.
+        Reload the default settings.
 
     reload
 
     reload
-        Reload the autostart and the settings file.
+        Reload the autostart file and the default settings.
 
 
-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
+    quit
+        Quit.
 
 ## Settings
 
 
 ## Settings
 
-Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names) or '#RRGGBB'.
+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 main border of a focused window of a focused monitor.
 
     active_border_color
 
     active_border_color
-        Color of the main border of a focused window.
+        Color of the main border of a focused window of an unfocused monitor.
 
     normal_border_color
         Color of the main 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.
 
     outer_border_color
         Color of the outer border of a 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.
 
     presel_border_color
         Color of the *presel* message feedback.
 
+    focused_locked_border_color
+        Color of the main border of a focused locked window of a focused monitor.
+
     active_locked_border_color
     active_locked_border_color
-        Color of the main border of a focused locked window.
+        Color of the main border of a focused locked window of an unfocused monitor.
 
     normal_locked_border_color
         Color of the main border of an unfocused locked window.
 
     normal_locked_border_color
         Color of the main border of an unfocused locked window.
@@ -208,34 +245,69 @@ Colors are either [X color names](http://en.wikipedia.org/wiki/X11_color_names)
     window_gap
         Value of the gap that separates windows.
 
     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.
+    {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.
 
 
     wm_name
         The value that shall be used for the _NET_WM_NAME property of the root window.
 
+    button_modifier
+        The modifier mask used for mouse bindings (possible values: 'shift', 'control', 'lock', 'mod1' ... 'mod5').
+
+    numlock_modifier
+        The modifier holding Num_Lock (cf. xmodmap).
+
+    capslock_modifier
+        The modifier holding Lock.
+
+    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_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
 
 ## Mouse Bindings
 
-    M4 + Left Button
+    button_modifier + left mouse button
         Move the window under the pointer.
 
         Move the window under the pointer.
 
-    M4 + Middle Button
+    button_modifier + middle mouse button
         Focus the window under the pointer.
 
         Focus the window under the pointer.
 
-    M4 + Middle Button
+    button_modifier + right mouse button
         Resize the window under the pointer (by moving one of its four corners).
 
         Resize the window under the pointer (by moving one of its four corners).
 
-Where *M4* is the fourth modifier mask (generally bound to *Super*).
+## Key Features
+
+- Configured and controlled through messages
+- Multiple monitors support (via *Xinerama*)
+- EWMH support (`tint2` works)
+- Automatic and manual modes
+- Triple window borders
+
+## Panel
+
+`dzen2` fed with the output of `ewmhstatus`. Example: [launchpanel](https://github.com/baskerville/bin/blob/master/launchpanel).
+
+Or any EWMH compliant panel.
 
 ## Required Libraries:
 
 
 ## Required Libraries:
 
-libxcb, xcb-util-wm, lua.
+- libxcb
+- xcb-util
+- xcb-util-wm
 
 ## Installation
 
     make
     make install
 
 
 ## Installation
 
     make
     make install
 
+## Contributors
+
+- [Ivan Kanakarakis](https://github.com/c00kiemon5ter)