 Qtile and BSPWM are two of the most popular window managers out there. And when you're trying to make a choice between the two of them, it can be kind of confusing because they're quite different from one another. So what I thought I'd do today is actually do a head to head comparison of BSPWM and Qtile and kind of show you what the differences are and try to make a distinction between the two of them. So if you are trying to make a choice between them, you can be more informed with that decision. So we're gonna try to do this one right after another. So we'll start with Qtile, we'll then we'll do BSPWM. If you are looking for the timestamps, those will be in the description below. So if you want to kind of jump around at your leisure, you can do so. So before we jump in, if you would be so kind to leave a like on this video, I'd really appreciate it really to self the channel. So let's go ahead and start with Qtile. I think that's what I said I was gonna start with. So Qtile is a dynamic tiling window manager. Basically, what that means is that the layouts are set for you. You don't have to control where the windows spawn when you spawn them, there are they spawn set to a layout that is predefined in the code. So by default, Qtile uses the master stack layout, and you can add extra layouts to your configuration file so that you can get a more like monocle style out, which is all full screen, you can add one so that there's more like a grid style layout. And there are several other layouts that are available to you. So you can change between those layouts, even with a key binding. So if you want to do you to switch between layouts on different workspaces, you could do that you can set that up in the in the configuration file, which I'll show you later. You can do a whole bunch of stuff when it comes to the layouts, but by default, it uses the master stack layout. Now, unlike something like DWM or awesome window manager, Qtile does have workspaces, they don't call them tags, there are workspaces. Actually, what they actually do call them is groups, but they're really basically workspaces. And the idea behind them is something similar to how they work in X Monad, if you've ever used X Monad, so not to be too confusing about it. Basically, what happens is that you have a set of workspaces that are shared between all of your monitors. And where those workspaces are depends on where your focus is with your mouse. So for example, if I'm sitting at my computer like this, I have two monitors, I'm sitting straight ahead, the monitor that is in focus can have any workspace of my selection of workspaces on this monitor, I just have to navigate it to it. And that would then have the focus now in the B role that I'm showing you, it's kind of hard to explain how the workspaces actually work, simply because I'm only showing one screen, right? If you just have one monitor, it's very easy to understand all your workspaces are on that one monitor. But basically, the way workspaces work in Qtile is that if I have works, nine workspaces, I can have workspaces one through nine on any monitor that I want, I just have to focus that monitor. So they're monitor specific, instead of being tied to a specific monitor. Now when you set up Qtile for the first time, you'll notice that it does have its own bar built in. Now it is very similar honestly to the i3 bar, at least out of the box. Now I say similar in that it kind of looks similar it's very, very minimal, it doesn't have much in terms of widgets or anything like that out of the box, it just exists there along the bottom. Now that's really where the similarity between i3 and Qtile and in terms of the bar, once you get into actually configuring the bar, you'll find that Qtile has one of the most configurable bars anywhere out there. And that's because it has a whole bunch of built in widgets, which we'll talk a little bit about later. And you can do quite a bit with that bar inside of the configuration file, which is the next part that we're actually going to be talking about because the big part of what makes Qtile Qtile is the configuration file or the configuration of the way that it works right now unlike BSPWM, Qtile is configured in the same language that it's written in and that is Python. Now, I know that this can be very frightening for people who have no idea what Python is, or have never looked at Python before, or have no interest in learning Python. But it's really not that bad. When I started out, I had no clue what Python was. I mean, I knew what Python was, excuse me, I had no clue how to do anything in Python is what I should say. And it's just it's actually fairly easy. And the documentation is really, really good. And we'll talk more about the documentation here in a minute. So Qtile's configuration file is done in a configuration file that is written in Python, just like the rest of the window manager, like I said, and the layout of it is, or can be confusing if you've never actually looked at a Python file before. At the top you have things where it imports libraries and other files. Usually, you don't have to mess with those if you're using a just standard stock configuration file, you can just kind of leave those alone, until you've garnered some confidence in actually working with the configuration file, once you've done that, and have some experience, you can import other Python libraries that will do interesting things, or you can learn how to bifurcate your configuration file so that you're kind of importing and sourcing other files from different places, kind of organize it the way you want to. But you don't have to worry about any of that from the beginning, but it is possible down the road. After you get past the part where you're importing all the libraries and such, you're going to get into the keybindings. Now the keybinding section is going to look different in what I'm showing you than probably what it will look like in the default configuration file, because I've done a little bit of work in terms of actually just making things on one line. In the default configuration file, a lot of that stuff is split into multiple lines. It's exactly the same, it's just they've added some comma so that you can actually put things on a separate lines. It functions exactly the same. The keybindings are fairly easy to understand, even if you've never messed around with Python in the past, you can kind of see what the syntax is trying to do, right? It just calls a key, it tells you what the keybinding is, and then it calls some kind of function or task or action that it's going to do. So for example, if you look there at the top, you're going to see something like key and then some brackets and parentheses, then mod, which is the mod key, then shift and then the letter R and then laser restart, right? That's going to restart Qtile. And that will restart the configuration files that it takes in and changes that you've made. Same thing with one right below it, that's going to shut down Qtile and actually take you back to your display manager or out to the TTYD if you're using start X. So the syntax there for the keybinding is actually fairly simple once you kind of get the hang of it. The biggest question that I can give you is pay attention to the commas. Python is very, very particular about the commas most of the time. If you come across a situation where your configuration file won't reload after you hit the keybinding to reload your configuration file, if it just won't reload, if it doesn't tell you it has an error, it just kind of looks like it just stayed the same or maybe even fell back to the default configuration file. A lot of times, and this was my experience right from the beginning, is that I probably forgot a comma someplace. Like if I made a change to a keybinding or added a keybinding, if I don't have the commas in the right place, you're going to get errors and things won't load. So just pay attention to the commas. Now you'll notice in some situations in Python, it doesn't need a comma. A lot of times this has to do with it being the end of a function or the end of the keybinding or whatever. And sometimes the comma is not needed. Usually, though, you can put the comma there and it will still load. It's when it's expecting a comma and it doesn't have one that it starts to freak out. So just know that if you're having problems with the configuration file, whether it's in the keybinding section or elsewhere, and it just doesn't reload once you've saved it and tried to reload, you probably missed a comma somewhere. So pay attention to the commas. Now in terms of group management or what we call workspaces, Qtile does have the ability to basically have as many workspaces as you want. Now, I say basically because it's not exactly true. And the reason why it's not true is because there are a limited number of keys on your keyboard. So theoretically, you're limited by that. And the reason why that's the case is because the group names which you're seeing on screen now are also corresponding to the keybindings that you're going to be using. So for example, I have one, two, three, four, five, six, seven, eight, nine, zero. In order to get to those workspaces, I have to be able to press those with the mod key. So I have mod one, my two, my three, my four, and so on and so forth. Right. And as you can see on the b-roll here, I also have minus equal F1, F2, F3, F4, F5, right. And all of those correspond not only to the group name, but also to the keybinding that I have to press in order to go to those workspaces. So you can, if you want, have as many workspaces as you want. But of course, you're going to be very constrained when it comes to to conflicting keybinding. So obviously, you can't have mod and like enter or whatever, because you're probably using that for the terminal or other or something else. Same thing, like if you're using mod D to get to Rofi or D menu, you can't use that to go to a workspace that's already taken up. So Qtile does have the ability to have as many workspaces as you want. But you do always want to make sure that you're paying attention to what keybindings you have to have at open. And you can't assign those to a workspace, which is basically what I'm trying to say here. So the best way I found to do it is just to assign group names and base, which correspond to those keybindings, two keys that are either always specifically for workspaces. So, you know, one through zero or two keys that I know I'm never going to use with another keybinding. So I've been using the F keys. Now, I have found that I don't need as many workspaces in Qtile as I did when I used I3. So I had 19 workspaces in I3. I have actually I think I have like 17. So I guess I didn't really cut down on that much, right? But the point is that I use workspaces a lot differently in Qtile than I did in I3. So you may find that that's the case, because if you're coming from like I3, because a lot of people start with I3, because it's very much a beginner's window manager. And if you're coming to Qtile, you may find that you're using workspaces a little bit differently because it does treat workspaces differently than I3 does. It also treats them differently than BSPWM does, which is what we're actually comparing this to. So we'll talk more about BSPWM here in a minute. But the point is that the workspace, the way it treats workspaces is different than most other window managers. Really the only other one that treats it like this is Xmonad, although I think Hyperland also does, but that's still such a niche window manager for the most part. We really don't need to talk about that. So that is group management. Now remember, groups are just basically workspaces. That's really all there is to it. You don't have to they're just calling it something different. They still function as as workspaces. Now the next one is near and dear to my heart. And that is scratch pads. Qtile has built in scratch pads. And I think that you will agree once you've used them that Qtile actually has the best scratch pad implementation of any window manager out there. I think it is just absolutely fantastic. One of my favorite things about it is that by default, you can open up a scratch pad, kill that scratch pad and then just do the key binding again, and it'll actually relaunch the scratch pad. Now maybe I find this so fascinating and so good simply because I came from I3 and I3 does not do that. You have to do some finagling in order to get to actually work like that. Maybe the reason why I find it so fascinating and interesting is because I came from an inferior version of scratch pads. But I do find the scratch pad section or implementation, I should say of Qtile much better than any other window manager. And it's very easy to actually use. You just have to import scratch pad up at the top where the imports were. And then you have two sections, you have the part where it is actually defining what scratch pads you have, which you're seeing on screen now. And then right below that, you just create a section where it defines a bunch of key bindings to call those scratch pads that you defined. And you can have as many as you want. And it just works really, really, really well. So I like the scratch pad functionality and it is built in. Now, if you compare this to BSPWM, which we will hear in a minute, the scratch pad functionality of BSPWM, which is non existent isn't really comparable. So the fact that you can have scratch pads in Qtile is actually really nice. So that is the scratch pad functionality. I've shown in the b-roll some of the things that I've had that I haven't scratched pad, but really the limit is only your imagination. You can have as many things as scratch spads as you want. And I know a lot of people like Matt, why do you obsess with scratch pads, but they're really, really good. And it allows you to basically have running programs that are hidden until you need them and then you can just bring them forward. So if you want to always have your mail application hidden, not taking up a workspace, you can have that on a scratch pad, bring it forward when you need to check your mail and then put it back into the hidden workspace. So that's really nice. Now, the last section of the configuration file that we need to talk about is the bar. Now, as I said at the beginning, when I mentioned the bar just a little bit is that the bar is very, very configurable. Now this is true in two different facets. So first, the bar, because it's written in Python, gives you the option to basically do whatever you want in terms of widgets, you can create your own, you can go through and actually use all the ones that are created for you. And then you can rearrange them, use spacers, add icons, choose different fonts for each one. You can manipulate the padding and the margin for every single widget that's there. Each widget that they've created by themselves also have several different options and stuff like that that you can use. And it's all very well documented, as well. So you can basically do whatever you want with the bar. And it is a very, very good bar. I would say it's probably my favorite bar of any window manager out there and it is built in. That's one of the great things about Qtel is that it is built in. All you have to do then is learn the configuration of it. You don't have to worry about setting it up, getting it to auto start. You don't have to worry about having to figure out how to get the workspaces and stuff to correspond with key bindings and stuff like that, which you do sometimes with Polybar, when it's not built in, you know, so it's a very, very good bar. Now, like I said, there are dozens of built in widgets that you can use. And by default, none of them are there. You have to kind of go search them out on the website, search for their built in widgets, which I'm actually showing you a list of them right now. And as you can see, there are just a ton of different widgets. You know, there's things for music players and weather and volume and CPU and memory and, you know, a task, a task list and there's the group box and there's, you know, you just name it, it's probably there. Now, I will say that the one area where Qtile kind of falls down in terms of other bars is the ability to use user scripts. So if you have a script that you want to use to display stuff inside of the bar, it can be done. It's just not as easy as having a module or something like that that just kind of spits out the output of the script. That doesn't exist at least not yet. So that's the one place that the bar kind of does fall down compared to other bars. So that is the Qtile bar. The last part of the configuration file is all having to do with rules and the way that certain windows behave. So if you need to make a window floating by default, you can add those rules there at the bottom. And it's really actually quite good. You can also change some ways of how the window manager behaves in terms of focus. So you can change how if you want to have the focus follow your mouse, you can turn that on here. You can change how things interact with clicks, how the cursor warps in terms of actually moving between different monitors. All that stuff is usually in the bottom section of the configuration file. The last thing that's also here is the auto start hook. This is where you're going to want to put your auto start stuff, things like pi com and, you know, clip menu D if you wanted to restart start that up or SSH add things like that. But that stuff would go here at the bottom of the configuration file. I've created an auto search script. So it just kind of links to that script where I can put stuff in without having to worry about syntax. It's much easier that way. So that's the end of the QTel configuration file. And the last part that I want to talk about is documentation. Now, one little proviso is that at time of recording, they're having some really weird issues with their website. So just kind of keep that in mind as we go through and talk about this. So the documentation on their website such as it is is really, really good. And if you're hearing a little bit of doubt when I say that it's because it is also very, very technical. So if you are there, it's not that it's so far above most people that they can't understand it, it just takes more effort than something like I three. So if you've ever used I three before, you'll know that the documentation is very, very user friendly, very new user friendly. QTels is not. And in comparing it to BSPWM and their documentation, which will do will talk more about when I talk BSPWM, the syntax of BSPWM is better, but the QTEL documentation is easier to find and more extensive. So the documentation for QTEL is split into several different parts. The main section is just going to be telling you how the configuration and the bar and stuff like that all work and how you can configure it in different ways. You can drill down into each section and actually see how the code works. If you want to do so, if you understand more Python, you can kind of delve into each widget if you want to and see how it works. And you can see where everything is stored. So if you wanted to go alter a widget, you could do so as again, as long as you know some Python. So the documentation there is very extensive. If you need it to be, it also has some limitations in terms of pros simply because it does focus a lot on how Python actually works, you know, now I will say that the part that you'll probably use the most is going to be the part about the built-in widgets. That's the part that I use the most. And that's not that bad. Once you kind of understand how it works, it just basically shows you some examples under each widget. And then it gives you the option that each widget can have. That's very easy to understand. And that's the section where I spend most of my time. So if that's that's probably going to be the case with most other people as well, because the bar is kind of where you're going to do most of your customization. And that section there's actually very easy to understand. Now, like I said at the beginning of this little section, the documentation website is kind of in a weird transition period. So they've had to move it to a different URL and stuff like that. So it's all kind of wonky, but it's still up there on their website. If you need to find it, I will link to it in the video description. So you can kind of go peruse it at your own leisure. So that is Qtile. There are obviously many more things that I could have talked about in this section. If you have questions on Qtile, I'll leave them in the comment section below. Now, let's go ahead then and move on to BSPWM. I'm 20 minutes in. So we're expecting we're only about halfway through. So BSPWM is a very weird window manager when it comes to trying to define what it is, right? Because it's not exactly a dynamic tiling window manager like Qtile, but it's also not a manual tiling window manager. It's kind of a hybrid. It does both. So what I should have done at the beginning was actually just explain what a dynamic and manual Tyler was. So we'll do that now and just pretend that I did it at the beginning. So a dynamic Tyler, well, I guess I kind of did explain what a dynamic was at the beginning, but we'll do it a bit. We'll do a better job here. We'll aim to be better, right? So a dynamic Tyler, like I said at the beginning is a Tyler where the layout is set by the code, right? So you spawn windows and they spawn in a very predictable pattern. And while you can change that layout, nothing about the layout is manual. Okay. When it comes to a manual Tyler, which is the alternative to a dynamic Tyler, you are in charge of where the windows spawn all the time. So I three is a 100 percent manual tiling window manager. By default, everything spawns out horizontally, but you can then change it with a key binding for everything to spawn vertically and you can switch between them to create your own layout, right? That's manual. You decide where the next window spawns BSPWM does both dynamic and manual tiling. So it can be a little bit confusing. So they call their manual tiling aspect preselection. And this is by far the feature of BSPWM that I've used the least and is the part that I'm the least familiar with. But I'm showing you a little bit of it on b-roll right now. Basically, the idea is that you can use a key binding to tell the window to section off the upper of the screen. And then once you've done that, you can then spawn a client or a window in that section. It's called preselection. So you preselect the place where you want the window to spawn. It's super confusing at the beginning. Once you've got a hang of it, it kind of makes sense. But it does require some kind of effort to get into, right? A lot of people enjoy preselection. And it is very, very powerful once you kind of get into the idea of actually being 100% control of where the window is going to spawn. You can choose the size of the window before it spawns. You can choose the position of the window before it spawns. You can do a whole bunch of different things with just with key bindings to launch the next window. That's the manual aspect of BSPWM. But by default, it actually does do dynamic tiling out of the box. You don't have to mess around with preselection at all because all that stuff is brought up with key bindings. By default, it has a Fibonacci style layout, meaning that as you as you spawn new windows, the ones that were previously swarmed get smaller and smaller and smaller and kind of a circular layout. So it does have dynamic tiling by default, but it also has that manual tiling aspect that you can use if you want to. Now when it comes to workspaces, it's much more actually flexible kind of than Qtile is. Now I say that kind of because it also has its limitations because it can't do the things with workspaces that Qtile can, at least not easily. So when we talked about workspaces in Qtile, what I mentioned was that the workspaces can float between different monitors. And, you know, if if workspace three is on this monitor here, all I have to do is focus this monitor here with the mouse, move to workspace three, and it kind of moves to this worksp- works- moves to this monitor with BSPWM, you can't really do that. But what you can do is define how the workspaces are loaded onto each monitor. So if you want to have 10 workspaces, you can have workspaces one through five on the first monitor, workspaces six through 10 on the second monitor, and you can pin those workspaces to those monitors. Now, what I meant when I said that BSPWM is actually more flexible in terms of workspaces, what I mean is that the workspaces can you can choose where the workspaces are in terms of your monitor system. So if you want to have them pinned in certain places, you can do so. You can also have much easier access to more workspaces. So while theoretically Qtile can have as many workspaces as you want with BSPWM, you don't have to worry about the names of the workspaces also being the key bindings. So you can have 20 workspaces and then bind those keys to whatever key combination that you want. So if you wanted to have a workspace 20 that you got to with control alt and D, you could do that, right? It's not as easy and Qtile because the names and the buttons are tied together. Now, actually, let's go ahead and talk then about key bindings. Theoretically, I should actually do this when we talk about the configuration, but I think it's important now because BSPWM does not control its own key bindings. It has no mechanism whatsoever to do key bindings at all. If you were to just install BSPWM, you wouldn't have no way of accessing a terminal, you wouldn't be able to launch a browser or app launcher, none of that stuff. It just does not have the capability to do so. Instead, you have to have a companion program called a key demon in order to do so. And the one that most people use is called SXHKD. Now, please don't make me say that word again, because it's a horrible name and I will stumble over it many, many times. So the idea behind that daemon, so it's the simple X hotkey daemon. Basically, what that does is it ties in with BSPWM and allows you to do all of your key bindings there. As you'll see in the B roll that I'm showing right now, the syntax is actually fairly easy to get a hold of it just actually says the key binding that you want to use and then the action right below it, right? That's all it does. Now, it's actually much more powerful than that because it allows you to do things like key cords, which I didn't actually mention in Qtel. Qtel does allow you to key cords as well. I don't use them. That's the reason why I forgot to mention them. But in SXHKD, you can do key cords, you can tie two different key bindings together with certain syntax. I'll show I'll kind of point that out in the video basically allows you to kind of function things together. So if you say, for example, when we're talking about the workspaces, you want to do super plus the numbers to move to those workspaces, right? So if you want to do super plus and then one through 10, you don't have to list out one through zero. In order to do that, you just do one dash zero or one through nine comma zero, I think is actually the way that it's mentioned. So as you can see, there's a lot of stuff that you can do with SXHKD that SXHKD that you can't very easily with other key binding mechanisms inside of other window managers. And I've actually found that I've created my own SXHKD that I transfer over between different window managers and just I use that a lot of the times in every window manager simply because I do like the syntax quite a lot. So BSPWM does not have its own functionality for key bindings that uses the hotkey daemon in order to do so. And you'll have to have both of them installed if you want to use them. Now, let's talk about the bar situation because out of the box, BSPWM does not have a bar at all. So really there's not much here to talk about. If you don't want a bar, you're probably very happy with BSPWM. If you do want a bar, you have to find your own. And the one that is most popular, of course, is Polybar. I have an entire ultimate guide on Polybar, which I'll link in the video description and maybe in a card if I remember to do so. The idea behind Polybar is very simple. You can do all the things that you normally do with a bar with Polybar. But if you want a bar with BSPWM, you have to choose your own. There are other alternatives to Polybar. If you don't want to use them, you can use like tint two. If you wanted to, you could use XMObar. If you wanted to use Haskell and Xmonad, Xmonad's bar, you could do that. If you want to, I wouldn't know why you'd want to do such a thing, but you could if you wanted to. So if you want your own bar, you have to find your own bar. It does not have one by default. And then the next thing that we need to talk about then is the configuration file and that the configuration files actually very interesting because the configuration file is not a configuration file in the truest sense. Basically what it is is a script. And by default, it is a shell script. You can actually use other languages. If you want to use bash, you could do that. If you wanted to use Python, theoretically, you could do that. It wouldn't be that much of hardship. You can do whatever you want with that script because all it's doing is calling variations on a program. So BSPWM comes with a program called BSPC. BSPC is something that you can actually run from the terminal if you want to manipulate BSPWM. Everything that BSPWM does is using BSPBC in order to do it. So if you're moving between workspaces, it uses BSPC and then the node operator to move between different workspaces, right? It does all of the things that you would do to interact with their workspaces. BSPSC is the thing that does it. So in the configuration file, which again, I'm showing you right now, you'll notice after the auto launch stuff, which I'll talk about here in a minute, everything starts out with BSPC. So at the middle, you have BSPC monitor. Basically, what that's doing, that section doing is telling BSPWM where my workspaces are supposed to be. So I have one through five on one monitor, I have six through zero on the or six through 10 on the other monitor. And that's what that does. And BSPC and then monitor is what's what actually allows BSPWM to know where those workspaces are supposed to spawn. BSPC config does a whole bunch of configuration for how the window manager actually functions. So it defines the border with window gaps, split ratio, whether the focus follows your mouse and then it will also define the colors. So BSPC config and then the name of the thing that you want to define the color for will also be something that you'd use that for also for rules. So BSPC rule will allow you to set rules for specific classes of windows. So for example, that you'll see in mine, I have a whole bunch of rules for my scratch pads, which uses a script that someone else created. So basically, the idea here is that you can use BSPC to do anything that you want. Now, the best part about this, it's the absolute best part is that because it's using a program that exists on your system in your path somewhere, if you want to, you can create as many scripts as you want. So you can use BSPC to do really crazy things like create your own scratch pad system because BSPBSPWM does not have scratch pads. You can use BSPC to do that. You can use BSPC to set up a script so that all of your windows launch upon startup on the proper workspaces, if that's what you want to do. The limits there are purely your own imagination because BSPC does everything of the window manager and you can just use that to do the things. So we should then transition into the documentation. Now, the documentation is a little weird simply because you can't find it anywhere online. If you go to their their github page, it's not there. At least it wasn't the last time that I checked in. So it's it's if you're looking for it online, like you can with i3 or Xmone ad or Qtile, you won't be successful. It's not online as far as I can tell anywhere, at least not officially, then that's and that's because there's actually a man page for BSPWM. If you go into your terminal type in man BSPWM, you'll find a man page for BSPWM and it tells you all the stuff that you need to know about the the window manager. Now it's not as as extensive as Qtile is. So if you're looking for something that is super extensive in terms of documentation and help, you're not going to find that with BSPWM. Unfortunately, the man page is about a hundred and sixty lines long or so. I actually thought that there was a separate man page for BSPC. But from what I can tell on my system, at least they link to the exact same man page. So the man page for BSPWM is just the man page for BSPWM. It has most of the stuff that you're going to need in order to actually figure the stuff out. So it at least it exists, but it's not the best documentation in the world is a little bit disappointed. It's probably the most disappointed part of BSPWM is that particular aspect of it. Because if you're truly comparing these two of the two BSPWM is actually the one that's better for new users simply because the configuration file is so much easier to kind of parse, right? Because it uses BSPC and it's just kind of like easy to read and it's a shell script. It's easy to get into and it's just much simpler than actually having to dive into something that is written in Python. Python is not a language that everybody knows whether the Python folks know it or not. Like, you know, not everybody knows Python. So getting into Qtiles actually much harder, but the documentation for Qtiles much better. So if you are someone who learns a lot by documentation, Qtile may be better for you. Whereas if you're still a new user and you're not interested in getting into Qtile, BSPWM is probably better for you, but the documentation isn't going to be there to help you. Now, there's a solution to that problem. And that solution is to go hunt out other people's configuration files. That's the way that I learned. It's the way that a lot of people learn. And it's actually easier than trying to parse through a man page, which is very technically and dryly written. So going to like Unix porn or usability porn or whatever on Reddit or in Discord or whatever, find other people who have used BSPWM, find their dot files, go into their configuration file and learn that way because especially with BSPWM, being able to just see how other people have used BSPC makes it just so much easier for you to do the same because it's just a simple, you know, if you read it, you know what that line is going to do, right? You don't have to learn any Python, you don't have to worry about syntax in terms of commas and quotation marks and parentheses and brackets and all the stuff. None of that stuff actually matters. It's just BSPC and then the operator that is doing then the thing that is doing it on. That's literally all it does. And it just does it does a very good job. If you're going to learn it that way, you're going to have much more luck than actually diving into the man page. Now, the man page does exist. You can go there. If you're familiar with man pages, you'll be able to parse things fairly easily. But it's like said, not as extensive as it needs to be. And it's just a little bit disappointing. So let's go ahead and talk then about the comparison actually between these two we've gotten the facts out of the way. Who should use which and is there something that makes one better than the other? Those are the two questions that I want to ask. So who should use which one? So as I said, BSPWM is probably better for new users out of the box simply because the configuration file is much easier to read and much easier to put together. You don't have to worry about any knowledge of Python whatsoever. And I would say that that's kind of just the bottom line. If you're a new user BSPWM is the one that you want to try. But if you're adventurous, there's no reason why you can't hop into Qtile because it does have better documentation. And Python is a fairly easy language to kind of get a hold of you. You don't have to be an expert to read the Qtile configuration file. And you have to know everything about Python or do I don't know anything about Python still I'm still learning Python. And I know very, very little, but I can still tell you what each line of the Python configuration file actually does. And it doesn't take that long in order to kind of figure out plus you can rely on the documentation to kind of get you, you know, past the any hurdles that you can counter. So in terms of, you know, new users, I still say BSPWM kind of has the advantage there. But if you are a long time manager user, there's no, there's no real benefit choosing one or the other in terms of, you know, ease of use, right? They're both fairly easy to use if you've been using managed for a long time. If you're in that position or really any position, the things that you want to kind of keep in mind are which way of using a window manager, do you like the best? Do you like a pure dynamic experience? And if that's the case, Qtile has a better way of handling that thing that then BSPWM does because it is a pure dynamic tiling window manager, it has set layouts, so if you can chase between layouts if you want to, but you never ever have to worry about anything manual when it comes to Qtile. So if you want a dynamic tiling window manager, and that's all you want, then you're going to go with Qtile. If you want a dynamic tiling window manager, but you want to have the option of doing manual tiling, then BSPWM is a better option because there's no manual tiling in Qtile. That's really the biggest decisive factor of what you're going to be considering when you're trying to choose between these two. Do you want dynamic tiling? If so, the best dynamic tiler between the two of them is going to be Qtile because it has set layouts that are better than BSPWM, you don't have to deal with any of the manual stuff. If you want that manual aspect of it, like you would get with I3, like if you're coming from I3 and you're used to manual tiling, BSPWM is probably going to be better for you. Now personally, I think that the Qtile configuration is better than BSPWM. That's simply because you can do more with it. So for me personally, I like the Qtile better in terms of configuration. But if you are someone who doesn't have any interest in learning any Python, then BSPWM is going to be better for you. So choosing between these two window managers is really going to depend on what you want out of out of a window manager. So if you want the dynamic, if you want the manual, that's how you're going to make your decision. Now, is there anything that makes one better than the other? This is where my subjective ass is going to get in on this because for me personally, Qtile blows BSPWM out of the water in terms of actually having a bar built in the bars better than any bar that you can actually get with BSPWM if you want to. I think that the Qtile bars better than Polybars, better than Tint 2. So the built-in bar of Qtile is fantastic and has a whole bunch of widgets that you can add to it. There's a whole bunch of customization there. So I think that Qtile is just so much better than BSPWM and it's not even really all that close. Now, that being said, I mentioned in the BSPWM section that I have never gotten into the pre-selection nonsense. So maybe if I were reliant on pre-selection in order to actually spawn my windows and stuff like that, if I actually wanted that manual tiling aspect, I'd be more favorable towards BSPWM but I'm not. I prefer a dynamic Tyler. So that's the reason why I've made the choice of Qtile and whether or not that's going to be the same for you is really going to depend on which way you kind of want to go. So that is BSPWM versus Qtile. Now, I probably could have covered way more in this video and could have went on for another hour. The fact that I'm at 47 minutes before editing is kind of shocking, but you know, it is what it is. So if you have thoughts, comments, or questions, you can leave those in the comment section below. I'd love to hear from you if you haven't already. Leave a thumbs up on this video. It really helped the channel. You can follow me on Mastodon or Odyssey. Those links will be in the video description. You can support me on Patreon at patreon.com slash linuscast. Links for PayPal and YouTube will be in the video description as well. If you'd rather support me there. Thanks to everybody who does support me on Patreon and YouTube. You guys are all absolutely amazing. Thank you so much for your support. I truly do appreciate you guys are just seriously so good. Thank you for your support. Thanks everybody for watching. I hope you stay safe. Hope you have a really wonderful day and I'll see you next time.