bspwm-notes
Cheatsheet for bspwm
Concepts
A desktop is (a pointer to) a tree. There are 1-10 (Roman Numbers) desktops (trees).
Monitor is just your real monitor, they divide the distribution of ten trees. Such as eDP-1 for first five tree (1-5), HDMI-1 for last five trees (5-10).
One leaf node holds one window (node ≈ window)
Manual mode
Manual Mode: User preselect the insertion point. If you don’t preselect, new node position will be determined by automatic scheme
1 | a a a |
Automatic Mode
Automatic Mode: The insertion position of new node determined by automatic scheme (longest_side, alternate, spiral) and initial polarity (first_child or second_child). bspc config automatic_scheme {longest_side,alternate,spiral}
- Longest side scheme: the split direction was chosen based on dimensions of the tiling rectangle (whether height or width is longer) and the initial polarity.
The following scenario set the initial polarity tosecond_child:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
181 a a
^ / \ / \
---> 1 2 ---> 1 b
^ / \
2 3
^
+-----------------------+ +-----------------------+ +-----------------------+
| | | | | | | |
| | | | | | | 2 |
| | | | | | | |
| 1 | | 1 | 2 | | 1 |-----------|
| ^ | | | ^ | | | |
| | | | | | | 3 |
| | | | | | | ^ |
+-----------------------+ +-----------------------+ +-----------------------+
X Y Z - Alternate scheme: If parent is split horizontally, the child will be split vertically and vise versa.
- Spiral scheme: It is best shows as image.New node take the place of insertion point, whole tree rooted as its parent reattached and swapped at first depth.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21a a a
/ \ / \ / \
1 b ---> 1 c ---> 1 d
/ \ / \ / \
2 3 4 b 5 c
^ ^ / \ ^ / \
3 2 b 4
/ \
3 2
+-----------------------+ +-----------------------+ +-----------------------+
| | | | | | | | |
| | 2 | | | 4 | | | 5 |
| | ^ | | | ^ | | | ^ |
| 1 |-----------| | 1 |-----------| | 1 |-----------|
| | | | | | | | | 3 | |
| | 3 | | | 3 | 2 | | |-----| 4 |
| | | | | | | | | 2 | |
+-----------------------+ +-----------------------+ +-----------------------+
X Y Z
Cheatsheet
<D-Return> |
Open terminal | |
<D-Space> |
Open menu launcher | |
<D-Esc> |
sxhkd reload | |
<D-M>-q,r |
Quit / Restart bspwm | bspc {quit,wm -r} |
<D-[S]>-w |
Close / Kill focused node | bspc node -{c,k} |
<D>-m |
Alter tiled / monocle layout | bspc desktop -l next |
<D>-y |
Send the newest marked node to the newest preselected node (only current desktop) | |
<D>-g |
Swap focused node and the node has biggest window | |
<D>-t,<S>-t,s,f |
Set node state to tiled / pseudo tilted / floating / fullscreen | |
<D-C>-m,x,y,z |
Set node flag to marked / locked / sticky / private | |
<D-[S]>-h,j,k,l |
Traverse / Swap node to west / south / north / east | |
<D>-b |
Traverse brother node | |
<D>-p |
Select parent node | |
<D>-comma,period |
Traverse first / second node while selecting a parent node | |
<D-[S]>-c |
Traverse next / prev node in current desktop | |
<D>-{,} |
Traverse prev / next desktop in current monitor | |
<D>-`,<Tab> |
Traverse last node / desktop | |
<D>-o,i |
Traverse older / newer node in history | |
<D-[S]>-0-9 |
Traverse desktop 0-9 / Send focused node to desktop 0-9 | |
<D-C>-h,j,k,l,1-9 |
Preselect direction / ratio for new node to insert | bspc node {-p {west,souch,north,east},-o 0.{1-9}} |
<D-C-[S]-Space> |
Cancel the preselection for focused node / desktop | |
<D-M-[S]>-h,j,k,l |
(Resize) Expand / Contract node by moving one of its side outward / inward | |
<D-Left,Upwn,UP,Right> |
Move a floating node |
Node flag features
- Marked (MK) node can be send to preselected node.
- Locked (L) node cannot be deleted.
- Sticky (S) node behaves like a sticky note.
- Private ($) node cannot derive new node as its brother.
See Also
bspwm-notes