Skip to content
bspwm desktop management
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


bspwm desktop management that supports dymanic appending, removing, and renaming


Often times a workflow for a given day can't be defined by a set number of desktops with constant names. Btops enables you to define your workspaces based on what you're doing so you don't have worry about things like putting your applications in their respective desktops, running out of desktops, or leaving desktops unused and empty.


Dynamic with classified renamers

btops dynamic


btops minmax


btops supports config files in toml, json, and yaml format. It'll look in the following places for config files:


Below are the different configuration options available. Please look at examples for example usage

Configuration Options

Option Type Description Default
min Int Minimum number of desktops per monitor 1
max Int Maximum number of desktops per monitor infinity
remove-empty Bool Removes empty desktops true
append-when-occupied Bool Appends a new desktop when all other desktops are occupied true
watch-config Bool Reload btops on next event when configuration changes true
renamers []String Order of renamers to use for renaming desktops. If a given renamer is unable to rename a desktop, it cascades to the next renmaer ["numeric"]
names Names Names configuration object {}


Name Description
numeric Names desktops numerically in increasing order. e.g. 1, 2, 3, 4...
constant Names desktops using the "constant" option in the Names object
static Names desktops according to the static names array
client Names desktops as a space separated string of opened clients
classified Names desktops using the matched classification of opened clients in the names object


names configuration object

Option Type Description
constant String A single string that the constant renamer uses to rename desktops
static []String A list of desktop names that the static renamer uses to rename desktops
classified []{ classification: []String (clients) } An array of objects that match client names with a given classification. If multiple classifications are matched, the first will be used as the desktop name


  • Ensure go is installed and your $GOPATH is set
  • go get
  • run $GOPATH/bin/btops

Arch Linux

btops-git is available in the aur

You can’t perform that action at this time.