Bspwm
bspwm is a tiling window manager that represents windows as the leaves of a full binary tree. It has support for EWMH and multiple monitors, and is configured and controlled through messages.
Installation
Install bspwmAUR or bspwm-gitAUR from the AUR. You will also want to install sxhkdAUR or sxhkd-gitAUR, a simple X hotkey daemon used to communicate with bspwm through bspc
as well as launch your applications of choice. With commit 948b804
, xwinfo-gitAUR is also required by the example configuration files.
To start bspwm on login, add the following to your .xinitrc
:
sxhkd & exec bspwm
Configuration
Example configuration is found on GitHub.
Copy bspwmrc to ~/.config/bspwm/bspwmrc
, sxhkdrc to ~/.config/sxhkd/sxhkdrc
and make bspwmrc executable with chmod +x ~/.config/bspwm/bspwmrc
.
Documentation for bspwm is found by running man bspwm
.
There is also documentation for sxhkd found by running man sxhkd
.
These two files are where you will be setting wm settings and keybindings, respectively.
Rules
As of 948b804
window-specific rules were externalized. Be sure to take a look in the rules directory for example scripts to set rules. These scripts are required to run the example configuration file.
Rules can be created in a few different ways. Two such methods are below:
- Place
rulc
andruld
in a folder that is in your $PATH and make them executable. This will enable an out-of-the-box method to use the rules in the example scripts. - Create a script that is called in your bspwmrc file that forms the rules. See Stebalien's post for example of how to accomplish this.
If a particular window does not seem to be behaving according to your rules, check the class name of the program. This can be accomplished by:
- Running
xwininfo
and clicking the problematic window - Find the line where
Window id
is given and copy the value given (should be something like0xc00007
). - Run
xwinfo -c <Window id>
to get the class name.
Troubleshooting
The following environmental variables may need to be defined:
echo $BSPWM_SOCKET echo $XDG_CONFIG_HOME
If either of these do not respond with a value, then go to your /etc/profile and add the following lines:
export XDG_CONFIG_HOME="~/.config" export BSPWM_SOCKET="/tmp/bspwm-socket"
See also
- Mailing List: bspwm at librelist.com.
-
#bspwm
- IRC channel at the irc.freenode.net - https://bbs.archlinux.org/viewtopic.php?id=149444 - Arch BBS thread
- https://github.com/baskerville/bspwm - GitHub project
- https://github.com/windelicato/dotfiles/wiki/bspwm-for-dummies - earsplit's "bspwm for dummies"