 I3 and BSPWM are two of my favorite tiling window managers. I3 was my first tiling window manager, and BSPWM was something that I used a little bit later on. Over the last couple years, I've used many tiling window managers, and these two still remain two of my favorites. Between the two of them, if I had to choose, I would probably choose BSPWM, and there are a few reasons why. Now before I jump into five of the reasons why I think BSPWM is just a little bit better than I3, I do want to say that if you're a new tiling window manager user, I3 should be your choice. And there's really only one reason why. That reason is documentation. I3 has the best documentation you'll find of any tiling window manager out there, bar none. I've never seen one with the documentation like I3 does, so definitely if you're new to tiling window managers, try I3 first, because that documentation is just so good. But if you're at the point where you're trying to choose between these two window managers, I think BSPWM might be the best choice for you, and I think there are five reasons why. So let's go ahead and jump in. The first one is the configuration file. Now the configuration file of BSPWM is a batch script, and that's one of the reasons why I really like it. Now if you look at I3's configuration file, you'll see some really weird syntax. Now it's fairly user readable. It's not actually like C++ or any of that kind of stuff, so it's not like you have to learn like an actual programming language in order to do this, but it has its own syntax. And the problem here isn't that it has its own syntax, because obviously, you know, Bash has its own syntax as well. The problem here is that you're not going to find this anywhere else. It's just here in I3. There are a couple others that use this very similar kind of layout, but it's not anything that you're going to be familiar with out of the box. It's just I3's syntax. It's not written in Python or anything like that. It's just the way this is. And that's fine, and you can learn it very easily, but it's not as maneuverable as something like Bash. So if you look at the BSPWM configuration file that I have open here on the screen, you'll notice that it's actually just a shell script. Now this is actually a shell script. You could run this as a Bash script as well, but basically all this is doing over and over is calling a certain program BSPC, BSPC, and BSPC is the program that runs BSPWM. It does all the things like moving the windows around, setting the default settings, changing the gaps, changing the split ratio, changing the screen layout, changing the colors. It literally does everything. Now the great thing about that is that it means you can actually go through if you want to and do man BSPC, and it will actually show you everything you can do with BSPC. This man page is almost a thousand lines long, so it could take you a while to go through. And the great thing about it is, like I said, there's just a ton of stuff that you can do. Now i3 does have something similar to this called i3-msg, but it's not quite as functional and quite as useful, at least in my opinion, as BSPC is. So that's one of the great things that I like about BSPWM the best is that it's written in shell scripting and you can do just a ton of stuff with it through this BSPC command. So the second reason why I prefer BSPWM over i3 these days is because I've come to rely on a program called SXHKD. Now you can use SXHKD in any tiling window manager you want, including i3, but SXHKD was actually developed to go with BSPWM. It was developed by the same developer. And it's the only way you can do key bindings within BSPWM without using some other third-party key daemon thing. But it's really meant to be used with SXHKD. And that means that all of your key bindings are actually managed in their own files. So if we go into, if I do an ls here and do cd into SXHKD and vim into SXHKDRC, this is where all of my key bindings are done. And as you can see, SXHKD is very, very maneuverable in terms of what it can do. It can do key cords like I have set here. It can do just regular key bindings. And I have it for several of the applications and stuff that I start all the time. But also, if we scroll down here, we can see that it uses BSPC, which we just talked about to do a ton of stuff with BSPWM. As a matter of fact, it does everything for BSPWM in terms of moving windows around, choosing where your next windows spawns, quitting both the windows and BSPWM itself, basically everything. And all that stuff is done in this one file. Now, why is this better than I3? If we go back to our I3 configuration file here, we'll see the way I3 does their key bindings. It's a bad way of doing key bindings, but this is all done from within the configuration file. And it uses its own syntax, which is fine, but it's not as maneuverable as SXHKD is. As far as I know, you can't do a key cord from within these bindings here. You would have to use something else. And everybody knows I love my key cords. So this is kind of was a no go for me. These key bindings are solely for I3. So if you are just using I3, that's fine. But if you're like me and you switch between I3 and BSPWM, getting those key bindings synchronized could be kind of hard. So the great thing about SXHKD is you can take those key bindings with you by just starting up SXHKD every time your window manager starts up. That means that you can always have your preferred key bindings with you no matter where you are. Now it's not the greatest thing if you are using something like DWM. Now I use SXHKD with DWM, but DWM doesn't have any cool command line tools out of the box at least that will allow you to go through and, you know, move the windows around or anything like that. So any of the extraneous stuff like BSPWM here has the bottom for moving windows around isn't in DWM. But that doesn't mean that SXHKD can't be useful because it still gives you all or it still gives me all these key bindings that I use every single day. So that's why SXHKD is great is it's kind of, you know, transferable, I guess is the way you say it. I also like to have the configuration file separated. It feels more organized to me when instead of having all the stuff in one configuration file, I can go through and change a key binding in my SXHKD file, restart SXHKD and not have to worry about reshifting around the window manager itself. I don't have to go through and restart the window manager or anything like that. And while that's not a huge deal, I just happen to prefer it this way. It feels more organized in my brain. So that's the second reason why I prefer BSPWM over I3 these days. The third one is very subjective. I mean, they're kind of all subjective, but this next one is definitely the most subjective out of all these. By default, BSPWM does not come with a bar. So if you look at the top of my screen here, you'll see that I have a bar. Now I'm a bar guy. I always have a bar. So the fact that I3 comes with the bar is not a big deal. But the pain comes when you have to switch to a different bar. Now it's not really all that painful, but really you still have to get rid of it. It's a process that you have to go through. It's just a matter of commenting a few lines out and it will get rid of it. But it's an extra package that comes with I3, which means it's going to be on your system forever and ever, even if you're not using it. And it's there. Now there's no reason why you can't just use the bar that's built into I3. You could do that. But if you want to use something different or if you wanted to get rid of it altogether, that's a process you have to do. Now with BSPWM, I like it coming with no bar simply because it allows me to choose. I can go through. I could choose poly bar, which is what this is. I could do something like lemon bar. I could do the tint 2 panel if I wanted to. I could probably get XMO bar running if I wanted to, if I wanted to murder myself with Haskell. I could definitely try to get that running. It would probably fail because Haskell hates me, but you know, whatever. The point is with BSPWM, you have choice right out of the box. With I3, there's extra steps you have to go through in order to get those choices. It's not a big deal, I guess, but it is what it is. The fourth reason why I think BSPWM is better than I3 is because it allows you to go through and choose where your window is going to spawn in a way that is better than I3 does it. So both I3 and BSPWM are what we call manual tiling window managers. And by that, basically all that means is that you get to choose where your next window spawns. In I3, you can choose vertical or horizontal spawning. And that's really all the control you get. You can choose whether your next window spawns vertically or if it spawns horizontally below. It's not a ton of control. It's fine, but it's not a ton of control. With BSPWM, you get a ton more control and it's called pre-selection. Now I honestly don't use pre-selection all that much, but it's still really cool. So what do I mean by pre-selection? Like what this does is allows you, as the name implies, to pre-select where the next window is spawned. So if I do super control I, it will pre-select that area for my next window. So if I hit super enter, it'll open up a terminal in that space. Okay, so I can go ahead and quit this. Now if I hit super control U, it pre-selects that part. And if I enter, open up, say, Firefox, I could get Firefox to open up in that portion of the screen there. And then I can just, or I guess that's a cute browser in this case, but we can quit that as well. Same thing with super control and O. That will do the upper portion of the screen. And if I wanted to cancel that, I can do super control space. And there's another one, super control and P, that will do that side of the screen or this side of the stack. And as you can see, that's really powerful. You can literally choose anywhere on the screen you want your next screen to spawn. And that's awesome. And that's pre-selection. Now you don't have that amount of control in I3. In I3, and I will try to show a video of this as I'm talking, in I3 it just goes through and spawns it either to the left or to the bottom. And you can choose back and forth, but that's literally all the control you have. Now, maybe that's all the control you need, but it's really nice to be able to go through and use these key bindings to literally put the window anywhere you want. So the last reason I have for you today is that there are several built-in things into BSPWM that I3 requires forks for. And what I mean by that is that, for example, let's say you want gaps. So in this case, I have gaps here. They're not huge gaps or anything. They're just some gaps. By default, the standard branch of I3 does not have gaps at all. You can't put it in there. Now, I've read that they're changing this and maybe they have already changed. I don't think that they have. But as far as I know, the stock I3 just does not have gaps. You actually have to download a fork of I3 called I3-gaps in order to get this. And I3-gaps isn't actually in a lot of repos. It's actually something you have to build on things like Debian and Ubuntu. So you have to go through an even further step in order to actually get gaps. Now, not everybody needs gaps or wants gaps, but it's still a feature that a lot of people enjoy, including me. BSPWM has this built in from the start. So you can go through and change a ton of stuff like gaps that you can't do in I3. So let's change our gaps here to 20. And we can change also the split ratio to 55. And basically what that will do is allow the one side of the screen to always be 55% of the screen by default. So let's go ahead and write this and do SuperShift R. And as you can see, our gaps got bigger now. And if I spawn another window, it's not as noticeable as you probably would expect. But this side over here is 55% of the spawnable space. And you can change that to whatever you want. Now, by default, I have no clue how you would change the split ratio in I3. It's possible that it's built in and I've just never found it. I've never thought to look. But things like gaps for sure aren't built in. And that just means that that's one extra step you'd have to go through now. Again, that's not a huge deal. But again, it's just something that is here by default in BSPWM that is not in I3. Those are my reasons for preferring BSPWM. Now, I don't think that no matter which one of these you choose, you could choose wrong. I think they're both excellent window managers and everyone has their own preference. I think that no matter what, I will still switch back and forth between I3 and BSPWM for a long time because I like switching between trial and window managers. I just do. It's a habit I've formed. But whatever. Other people who stick on one thing prefer I3. There's no problem with that. There's no problem with BSPWM if that's the one you choose. For me personally, these are just some of the reasons why I happen to prefer BSPWM over I3. So in the comment section below, let me know which one you prefer and why I would really like to hear from you. Before you go, make sure you hit the like and subscribe button if you haven't already. It really does help the channel. We're getting really close to 4600 subscribers, which just continually blows my mind. So if you haven't hit the subscribe button yet, make sure you do so you can find more of this awesome content on the channel. If you'd like to follow me on Twitter, you can do so at TheLinuxCast. You can support me on Patreon at patreon.com slash linuxcast. Before I go, I'd like to take a moment to thank my current patrons, Devon Chris, East Coast Webgent, who is fun too, Marcus, Megalyn, Sven, Jackson, Iphone Tool, Josh, Willie, Mitchell, Art, Center, American Camp, and J-Dog. We have a new patron and he has a name that I can't pronounce, so we're just calling him J-Dog and he gets an emoji because I can't pronounce his name. So don't feel left out all the rest of you because I can actually pronounce the rest of your name. Thanks everybody for your support. I'll see you next time.