 In the Linux community, I would say one of the things I'm most known for are standalone window managers. I'm the window manager guy, right? And I've covered probably like 20 window managers on camera, but here, especially in the last couple of years, the window manager I've lived in the most is Xmonad, which is a tiling window manager that's written and configured in the Haskell programming language. And I love Xmonad. Xmonad has probably been my favorite window manager for at least a decade or more. Xmonad's kind of my jam, but I do like to window manager hop on occasion. And even though you guys haven't seen it on video because my production workstation here is set up with all my OBS scenes to work in Xmonad, I always log into Xmonad to make my videos, but I actually haven't been living in Xmonad for the last six weeks. I've actually been living in a different window manager, one I've used before, but I wanted to revisit and I've been living in BS PWM for the last six weeks or so. Let me switch over to my desktop. This is BS PWM running here. This is Polybar at the top. I had to configure Polybar a couple of months back to work with Xmonad because Xmobar was having some issues, a recent update to Xmobar kind of broke my Xmobar config. So I decided I was going to configure Xmonad to use Polybar, but Polybar really has kind of designed for manual timers and especially Polybar is designed to work with BS PWM. That's the bar everybody uses for BS PWM. So I was like, well, if I'm going to take the time to configure Polybar, I might as well get back into BS PWM for a while. And for the last six weeks, this is actually what I have been living in day to day on my machine at the house, my computer at the house, as well as sometimes my workstation here except when I have to record, then I'll log into Xmonad. But BS PWM is really just lovely. You got those weird default layout. It's not quite master and stack, right? It's what I want to say, well, I can make things full screen, but let me open and just kind of dwindles toward the corner, right? That's a layout like in the awesome window manager and other dynamic timers that I've used. They call this like a dwindle layout where you just kind of dwindle smaller and smaller into the corner of the screen. That's a layout is not very useful. In my opinion, I like the master and stack layout, which it starts out kind of like a master and stack. You get the main window, then you get to here. It's only when you open that fourth window that things get a little weird. Now the windows are really a little too small. But honestly, I rarely have more than three windows open on a single workspace. So honestly, the default layout for BS PWM has not been an issue for me. Honestly, I've mentioned this on camera before for pretty much every tiling window manager I've ever used. I always say, really, I only need three layouts. I need a master and stack layout. I need a full screen or monocle layout where it's a single window full screen. And I need a floating layout because some programs just have to be floated, right? And you get all that with BS PWM. Here's that default layout. But if I wanted a full screen, a monocle, a full screen mode, I had this set to super space in my config. I can just make the window that has focus full screen. When I want to get back to that tiling layout, I just do super space again, and it gets back to the tiling layout. If I want to float a window, whichever window has focus, I'll do this window here. Super S will pull that window out of the tiling layout. And now it's a floating window. If I want to put it back into the tiling layout, I can do super T and it forces it back into the tiling mode. And I use super shift C to close my windows. So I try to keep my key bindings the same and all my tiling window manager configs just for consistency. Also, as more and more of these things make their way into DTOS, and I've already kind of packaged BS PWM for DTOS, it's already available for installation. I haven't done a video on it, so I'm not sure how well it works just yet. I need to do some testing, but it's there in the repository if you guys want it. But I want to make sure that all of these tiling window managers that I put in DTOS use the same key bindings as much as possible. So super enter will open a terminal and all of them. Super shift C will close the window with focus and all of them. Super shift R reloads the window manager and all of them yada, yada, yada. Now, of course, that's not entirely possible. You can't make all the key bindings the same in every window manager because some of them have different functions than others. Some of them don't have a function that another tiling window manager will have. And BS PWM, I will say, does have less to it than some of the more mature window managers, things like Xmonad and things like the awesome window manager, for example, or QTOL, which are the three window managers that were already packaged for DTOS. They have big communities around. They've been around for a long time. Xmonad and awesome have been around for like 12 years, 15 years. And now BS PWM is a newer project. But also just because of the fervent community around things like Xmonad, for example, which is written in Haskell, the Haskell community is very passionate about things. You've got a lot of third-party modules and libraries for something like Xmonad where BS PWM is very simplistic and minimal. So there are certain things that I can do in Xmonad that I just can't get done with BS PWM, but for the most part, all the basic functionality that you expect to telling window manager to have, it's here. Now what differentiates BS PWM from things like Xmonad, awesome, and QTOL? Well, Xmonad and QTOL, they handle workspaces very differently than something like awesome or something like BS PWM. So Xmonad and QTOL, they have essentially nine workspaces that are shared across all of your monitors, right? You just have one set of workspaces shared across all of your monitors where things like awesome and BS PWM, you have a set of workspaces that is dedicated to each monitor. So I have one through nine right here. We're looking at the second of my three monitors. Workspaces one through nine on the second monitor are not workspaces one through nine on the first monitor. They're not workspaces one through nine on the third monitor. Essentially I have 27 workspaces because I have one through nine on each monitor. Do I need all of those workspaces? Not necessarily. I would prefer actually them just to be shared across all the monitors that makes more sense to me. Although I don't mind this. It's just a personal preference. It doesn't get in the way though. I don't find this weird. I don't find it, I don't find that it inhibits me in any way. Now of course that changes a little bit of the workflow because used to I could have this window here and in Xmonad because the workspaces are shared across all the monitors. If I switch to a workspace that's on monitor one this window just goes to monitor one because the workspaces just swap with each other. They just flip and it's really cool and it makes a lot of sense once you get used to it. Where here this is a on workspace one of nine on this monitor. Well how do I send it to workspace one that's a different workspace one on this monitor? Well I would have to get focus on this window. I have to do something like super shift H to send it lift or I could just drag it with the mouse. So I could hold the super key and drag it and just drag it to each monitor and just keep dragging it around to every monitor. I think I had a key binding super shift comma would take that yeah to a different workspace that actually moved the window to my third monitor but because it moved it to the third monitor it replaced it with PC man FM that I had over on that monitor. That's weird right? It's kind of different kind of functionality that I'm not quite used to right? This is it's a little different. So that's the only thing and you know when you swap between these window managers is really easy actually to swap between Xmonad and Qtile because they're essentially Qtiles that next almost exact clone of Xmonad just written in Python and awesome is very similar to Xmonad as well because they're all dynamic Tyler's BS PWM is a manual Tyler meaning you could actually on the fly decide where the next window will open. I'm going to focus on this first window and if I do super control and I believe is it super control and I got to look up. I never use pre-selection super control Hjkl so if I do super control L for right you can see that that space has been divided into two columns now you can see the next window if I do super enter to open another terminal it's going to open right there in that pre-selected right direction if I did super control J for down you can see now I could put a window there now I never use that I really manual Tyler's they're kind of neat things like I3 things like BS PWM but how often do you really want to force a window in a spot typically on the fly I'm working I just want to open windows and with a dynamic Tyler there's predefined layouts and because you have those predefined layouts you always know where the windows going to open and for some reason it opens in a spot it's not quite where you want it once it opens then super shift J and K to just move it through the stack to the spot that you do want it that makes a lot more sense to me because honestly the pre-selection thing is confusing it really is like I couldn't even remember the key bindings I've been using this thing for six weeks and yeah I haven't touched pre-selection so neat feature I mean it's a cool feature I don't mind that it's it's there it's just how many people would use that I would think not very many now one function that is available in X-mone ad cutal and awesome that I find I use all the time I literally use it on a daily basis is the ability to shrink and expand windows so if I had two windows open side by side the ability to make one a little bigger than the other to adjust that size and the way this is done in X-mone ad and cutal and awesome is I could do super H or super L depending on whether I want to move it left or right whether I want the window to shrink or expand right and how I have that set and it makes sense it's very intuitive it's a little clunky and a little weird in BSPWM because the key bindings I'm using are control alt and then HJKL so you can actually shrink and expand in all directions but it only works for the window with focus so if I want to expand this I focus this window and go control alt H to move it to the left but if I do control alt L to move it to the right that doesn't work I actually have to switch focus to the other window so simply super H to move to the other window then control alt L for right to expand that window and that is really clunky that that could be improved a lot the other thing that's really frustrating because I seriously I use this feature all the time is a lot of times I will have a layout that I predefined by doing this shrink and expand I want two windows side by side but one window only needs to be really small and the other window needs to be big so I'll set it up like this right well watch what happens when I close one of these terminals super shift C closes that terminal now let me open a terminal it doesn't remember that I had that layout you know the shrink and expand thing going on meaning every time I close a window it's going to forget what I had and every time so and this is kind of frustrating because like an X-Monad you know I'll do that shrink and expand thing on work one workspace because I always have the same programs open there and I always want them to be in the same spot and it will remember even if I close them and then open them later X-Monad still remember that that layout is there until I reverse the shrink expand thing to actually make the windows even in size again BSPWM forgets it as soon as something changes as soon as you close the window for example all of that is gone and that's annoying if you're constantly coming back to a workspace and constantly having to set that layout manually yourself one thing I should talk about is actually the config for BSPWM I go back to the desktop let me move up doom emacs here so this is my SXHKDRC so the main config file for BSPWM I would say 99% of the time when you're configuring BSPWM you're actually going to be working in the SXHKDRC which is the config for the simple X hotkey Damon so BSPWM is a little weird because BSPWM does not manage its own key bindings let me in this frame I'm going to open up the actual BSPWM RC but the BSPWM RC there's not much to it right I just scroll through the whole thing there's really not much to it the only thing that's in here I have an auto start section where some programs get auto started and then I set up my three monitors with all of the workspaces that I want on the monitors and then you have some basic window configuration stuff like how big do you want the borders the gaps between the windows things like that some of the coloring as far as the borders around the windows and that's pretty much it right most tiling window manager configs 90% of them are things like key bindings right it's what the keys that you press what they do and all of that goes in a separate config the XXHKDRC and I'm not a fan of that this is really the only window manager that doesn't manage its own hotkeys its own key bindings and I understand the point of them having a separate program SXHKD to manage the key bindings it's kind of the suckless philosophy right you can have your own hotkey daemon and it's not tied to a particular window manager other window managers could use SXHKD as well but literally I've never I've never found a window manager that doesn't manage its own key bindings other than BSPWM so well nice in theory it's it's not great in practice because really BSPWM I've got to maintain two configs where every other window manager I use only have to maintain one config because I can do the key bindings in their own config you know as you would expect and I understand some people well with SXHKD couldn't I just put all of my key bindings for all of my window managers in the SXHKD config no because many window managers they don't have command line programs for some of the functions that they do like the reason this works with BSPWM is because BSPWM has a command line program BSPC you see supershift R runs the BSP command BSP space WM-R that's a command line I could open a terminal and type that and it would restart BSPWM but many window managers don't have such a command line program to operate everything within the window manager so some things you're gonna have to put the key bindings in the actual window manager config anyway even if you were trying to put the things that would work in SXHKD you would end up it would end up being more complicated more complex than what it's worth so again I understand why BSPWM the thought behind maintaining you know the two different programs BSPWM and SXHKD but in practice I think it's rather clunky overall what are my thoughts living in BSPWM for the last six weeks it's been enjoyable like there's some annoying things because some things I've been used to with other window managers because I'm so used to dynamic Tyler's and BSPWM is not quite a dynamic Tyler but honestly of the quote manual tiling window managers BSPWM is definitely my favorite of the bunch Polybar works beautifully in BSPWM which you would expect because it's kind of kind of designed for it right everybody that uses BSPWM uses Polybar so you'd expect Polybar to work because you know so much work goes into making those two work where that's not the case with many tiling window managers that I've tried Polybar is flaky as hill with certain window managers it works really well with i3 it works really well with BSPWM but not a lot of the others work really well with Polybar overall I gotta say I've enjoyed BSPWM enough that I spent some time working on the configs I've already made some arch package builds for a package for DTOS it's gonna be called DTOS-BSPWM if you install that package if you have the DTOS core repository installed you will get the BSPWM configs for my BSPWM and you'll have BSPWM on DTOS if you want it I've also edited the DTOS installation script now when you get to choosing a window manager you have five choices you have Xmode add awesome and Qtile which have always been there now you also have BSPWM and I went ahead and added my build of DWM as an option during the DTOS installation as well and if you want DWM if you've already got DTOS installed it's packaged as DTOS-DWM so this was fun revisiting BSPWM if you guys want to see me revisit some of the older window managers that I've used in the past but I haven't taken a look yet in a while let me know in the comments down below now before I go I need to thank a few special people I need to thank the producers of this episode and of course I'm talking about Gabe James Maxim my homies too bald Matt Mimit wait what my homies too bald what the hell Matt Mimit Mitchell Paul Roy Wes armor dragon bash potato Chuck Commander Henry George Lee met those Nate Erion Paul Peace Archimdor Polytech realities for less rare profit Roland tools Devler Willie and Zenobit these guys they're my master patrons over on patreon without these guys me revisiting BSPWM it probably would have happened anyway but I still appreciate their support these guys I couldn't do what I do without these guys I also couldn't do what I do without each and every one of these fine ladies and gentlemen all these names you're seeing on the screen right now these are all my supporters over on patreon I don't have any corporate sponsors if you guys like my work and want to support me subscribe to this road tube over on patreon all right guys peace my homies too bald what kind of name is it