Bspwm update after a bit more time spent with it

screenshot of bspwm

So it seems for now my windowmanager hopping is put onto ice, I'm sure I'll probably resume it some time, but after having spent time setting up my bspwm so that it has all the functions that I want and need most of the time when I log into another one I get frustrated that they don't work like I want them to.

Which leads me to the first thing that I've found that I really find valueable, and that is the unrigid setup, at first communicating with bspwm through the bspc client program felt like a very strange descision that just made writing configurations more cumbersome, but the nice thing about it is that you have more freedom as to how you can configure the thing to work, I was wanting to set up window-navigation to work like in dwm, since I really liked how it worked, and with some work and reading the manpage I saw this is possible, and I now have this little thing in my sxhkd:

super + {n,e} bspc node -f {next.local.window, prev.local.window}

super + shift + {n,e} bspc node -s {next.local.window, prev.local.window}

Where bspc is the client program that tells bspwm what we want it to do, node tells it that we want it to deal with nodes on it's tree representation of windows, -f, and -s respectiviely is focus and swap respectively, and the prev.local.window, for example moves focus or swaps with a window on the current desktop, window means a node that contains a window/ eg program. This is in addition to having shortcuts for moving directly in a direction, which is the standard for bspwm, those I mapped to the arrow-keys since I don't use them as often, and I wanted something that is easy to remember.

Possibility for automatic tiling

Bspwm in itself can't do automatic/dynamic tiling, but there is this quite cool script that someone made: bsp-tile that basically can turn one single desktop/workspace into an automatically tiled deal, I thought I'd be using it a lot, but I've come to the realisation that I mostly only use about 3 windows on every page anyway, and the way that bspwm works out it just doesn't really turn out to be something that I need very often, I guess it would come in handy for a bigger screen setup though.

Terminal-swallowing

I watched some youtube videos and came across this cool thing about terminal swallowing, basically if you open a program from a terminal and it becomes inactive, the window you open will replace the terminal, and it will pop back into existence when you close this program again, it's a really nice feature and someone made a small script that supports this in bspwm as well bspswallow and I kind of forget that it's there, but it kind of makes me happy every time it triggers, since it helps keeping the desktop tidy

Scriptability

I haven't really used this that much, but something that has come in handy quite often is this little snippet that I made that exchanges the focused window with the biggest one on the current desktop

super + space bspc node -s $(bspc query -N -n biggest.local)

It's very nice for when I'm programming or something and I want to give the window that I mostly have small on the side to gain some more space, and it's basically just a combination of two small commands to the window manager bspc query -N -n biggest.local which gives me the id of the largest window on the current desktop and bspc node -s $id which switches the current window with a window given it's id. You could do a lot more interesting things with this, but mostly I don't need stuff like that but it's nice to know they are there in case I need it some time :)

Not coupled configuration file.

I thought I wouldn't like the fact that bspwm doesn't handle keyboard shortcuts for you at all, but using shxkd has come in handy, and it made it really easy to do things like binding media keys on my keyboard and show a notification as well, some times having a notification is nice in case you hit the button without really meaning to

XF86AudioMute sh -c “pactl set-sink-mute 0 toggle”;notify-send “Toggled mute”

Small thoughts on just the things I need.

Also since the configuration files are small, and contains only the few things that I actually use in a windowmanager, it's very easy to keep in my head what is, and I feel that configuring bspwm it's just uncluttered, as I've only added things as I need them, so things that I never use just aren't bound.

All in all, a window manager that let's me do what I want to, and skip what I don't, and it has spoiled me, I'm just more in love with this thing the more I use it. So until this infatuation dies at least it's what I'm using.