A great aspect of bspwm is that it is relatively unopinionated about how it is configured and controlled. You can easily invoke bspc from any language of your choosing. No need to be limited by an inexpressive configuration file. No need to write the configuration in one specific language that the developer favoured. Another feature I appreciate is that it does not bind any keys. It is left up to the user to implemen…
Absolutely this. I'll highlight two sub-commands of bspc that are particularly helpful for "building your own window manager" as you mention: You can dump the entire state of bspwm to JSON using `bspc wm -d`, and you can subscribe to window manager events using `bspc subscribe`. An example I've implemented for myself: When opening a single app in an empty workspace, by default bspwm stretches the window to fit the wh…
bspwm: tiling window manager that represents windows as leaves of a binary tree
21–30 of 33 posts
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#22I recommend https://herbstluftwm.org/ It's similar to bspwm. - Both are controlled over a socket by a client program. Anything you can do to windows with a mouse or keyboard you can do with a script, and vice versa. - The configuration for both is an rc file that's executed. - Both are dynamic tiling managers, with a binary tree of containers. - Both compare well to i3 by limiting the container tree to a binary tree,…
The Dynamic Window Manager can also be controlled by a client program (which you can call from a file, which you can make execute from your ~/.xinitrc) with this patch (which I don’t use, but it looks like it can do most keyboard things but no mouse actions): http://dwm.suckless.org/patches/dwmc/
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#23Earlier quoted context omitted.
The Dynamic Window Manager can also be controlled by a client program (which you can call from a file, which you can make execute from your ~/.xinitrc) with this patch (which I don’t use, but it looks like it can do most keyboard things but no mouse actions): http://dwm.suckless.org/patches/dwmc/
dwm and i3 are too capable and too complex. I get lost in the nested containers
I don’t think dwm has them, they seem like a manual tiling thing.
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#24Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#25This and i3 on the front page right now, is there some reason hn is exited about tiling wms today?
(Let’s do this.)
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#26I never understood why its a big deal that windows are leaves of a binary tree? Its that good? Not trying to be snarky, just curious.
Same here. What's problem does this solve? Or, is this just a neat proof-of-concept project? This isn't a loaded question, I'm genuinely curious.
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#27It's very comfy. The client is close to the shell, and you can have both automatic and manual tiling modes. When there is some feature you like that the author did not account for, you can query the state of the world in json and make decisions based on that.
A comment here mentions herbstluftwm, which came before BSPWM and I would even call a sister WM -- Baskerville even announced BSPWM on the Herbstluftwm mailing list when it was initially released[2]. I would say BSPWM has less to think about than in the other window manager (everything is a node vs climbing frames with nested layouts). It can be thought of as a kit for building what you want, even. For instance, I use a tag-based workflow[3], where I toggle the hidden flag of nodes, and keep only one desktop.
WRT the windows being kept as nodes in a binary tree, this is useful because you can then climb the tree and perform balances and rotations within a subselection of the whole thing. You can also use the tree datastructure to enforce layout, like here[1], a DWM-like stacking layout.
With monocle mode, you can add fake padding for fullscreen windows, allowing you to have comfy fullscreen stuff that still accounts for a panel presence. With an external rules script, you can make decisions about what to do with windows as they appear, allowing dynamic layouts and decision making.
I'm sure at the end of the day, you can get what you need with any window manager if you drill far enough (year of the linux desktop is here, if you are willing to read the source). BSPWM has been a nice base for flexible workflow types for me. I will also share screenshots I've taken over the years here: https://notes.neeasade.net/rice.html (all bspwm past mid 2014).
[1] https://old.reddit.com/r/bspwm/comments/euq5r7/a_dwmlike_sta...
[2] https://herbstluftwm.org/archive/msg00052.html
[3] https://github.com/neeasade/dotfiles/blob/master/bin/bin/bta...
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#28It's very lightweight and highly customizable. The configuration file is just a shell script of bspc (client) commands. It doesn't handle keybindings on its own, but leverages another awesome tool by the same author: https://github.com/baskerville/sxhkd Which also simply calls bspc, but can be used for generic hotkeys as well.
It's just an awesomely simple pair of tools that work great, stay out of my way, are rock solid and well maintained. Pure gems of the open source world. Please consider donating to support the author: https://github.com/baskerville/bspwm/blob/master/doc/CONTRIB... (I have no affiliation, just a very happy user.)
This WM is the only thing besides habit keeping me from switching to Wayland. Though I guess I could get used to Sway.
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#29I'm not the author of the video. I just remember watching this about a year ago and thinking it was the best resource I found to see what bspwm can do and how to use it. Highly recommend it (and watching it at 2x speed).
Re: bspwm: tiling window manager that represents windows as leaves of a binary tree
#30I’m curious: after about four things the windows seem to start getting really small. Does anyone really find much use in a window manager that can subdivide infinitely?