 So I have recently changed to a different window manager now for the last year or so Qtile has been my home And I still think that Qtile out of all the window managers that I've tried has been my favorite now That is saying something considering that I was a huge i3 fan for a couple years at least And I still think i3 is really good But Qtile once you get used to the workflow of Qtile and you learn some Python And you're able to configure it really well Qtile is just one of those window managers that just kind of you stick to for quite a while as long as it works now That while it works thing is an important little proviso because it does update or at least the dependencies of Qtile Update quite often Qtile itself doesn't update quite as often So if you're on a rolling release sometimes things tend to break and that happened for me now Some of that was because of version conflicts and stuff like that it ended up getting fixed and it is fixed In fact, I don't open suzer right now But it took a while so while it was not working for me because of those version conflicts I decided I was going to hunt for a different window manager now. I have tried I'm pretty sure all the major window managers at this point BSPWM i3 herpes left WM hyperland sway you name it I've tried it and some of those I like some of them I don't like I'm obviously not a big Wayland fan So the Wayland compositors were kind of out for me But every Xorg window manager has its pros and cons and I've liked and disliked some of those things You know over the course of the last few years I've tried them all and been variously happy or unhappy in those window managers But I was trying to find something that would either tide me over until Qtile was absolutely fixed or that I could Actually make my new window manager and kind of make it my new home something that I you know was stable it used Xorg because again not a Wayland fan and was something that I could configure and Learn on my own or at least with some help and you know understand what was going on now All of that goes to say is that one of the window managers that I've tried Repeatedly like over and over and over and over again is X monad now I've I'm kind of like a very stubborn person Yeah, I don't know if you guys know this about me, but I don't like being a failure when it comes to technology now I don't consider myself a tech wizard at all. In fact, I would say that in many cases I'm the eternal noob that I claim to be I'm a noob and I'm probably will always be a noob, but when I find something that I want to try and the other people like I want to at least understand why they like it and Usually that means using the thing that those other people like because obviously, you know, they found something You know positive about it. I would like to at least understand their position when it comes to that thing X monad is one example of this Nick's OS is obviously another one of those things a lot of people are very Pro on Nick's OS and I'm trying you know in my long-term review I'm trying to understand why people are so positive about it So X monad just to get away from the Nick's OS stuff is one of those things there I've tried it over and over again. Just haven't been able to find the thing that makes it, you know So popular amongst some certain segments of the window manager population. So I Decided this time I was going to try again Just because again, I'm very stubborn and when I fail at something I want to try again So here I am In X monad right now and if you watch my stream on Wednesday, you'll know that I'm actually doing fairly good And I've you know, I've done some theming here. I've you know, I have some different things to switch between although I haven't really I'm basically on the last one that I created and that's because I'm still learning how to get the Keybinding steal from one of the other but that's beside the point But the here is is that I'm on X monad. I'm using I've been using it full-time for over a week and what I thought I'd do today is Talk about some of my thoughts on X monad because they have transformed since the last time I tried this because my last Video on X monad was basically saying X monad sucks Haskell's the effing devil and you should definitely never use X monad I think those were the I'm pretty sure those were the only 10 words that I said in the entire video The X monad and Haskell were literally the worst things ever and I never wanted to see them ever again I think that's probably what I was talking about but since that time and since I've been using X monad for a little while I Have some thoughts that have evolved over the course of that time So before we jump in leave a thumbs up on this video. I know we're well into this now But if you would leave a thumbs up on the video, I'd really appreciate it It really does help the channel so X monad is first off a really good window manager Okay, it really is a really good window manager. It is also Simultaneously the hardest window manager. I've ever tried in my life now I have tried rat poison which is supposedly way harder. I didn't think it was harder to be honest with you I thought rat poison was actually a little bit easier than X monad and That's just my opinion obviously a lot of people consider it the other way around But for me personally X monad is the hardest Window manager I've ever tried and it all comes down to How it's configured. So this right here my friends is my X monad config now in traditional matte fashion I have taken someone else's configuration file and made it my own now in different news I did not take district tubes configuration file because his is gigantic and He does that for a reason. There's nothing wrong with it. He does it because he's trying to teach people Haskell and X monad and stuff like that. It's just the way he does it and that's perfectly fine. He even says on his Dot files do not use this and as you know going in that it literally has every feature Conceivably there and it's all commented very nicely. You know, he does a good job, right? I wanted something a little bit more minimal than that Mostly because it was going to allow me to use it and understand it a little bit better So like let's just take this section here. I understand the section here These are variables being defined here at the top. These define the colors. I understand that right same thing with this You know, there's this defines the terminal all this stuff is a very similar Syntax to what you'd find in C and in Python is honestly exactly the same in some cases So I understand all of that very well and it was easy to get around I can understand the import You know section obviously the next section here deals with the workspaces Then and then it comes with the rules and then I put in the startup hook because this particular Configuration file didn't have the startup hook at the beginning. They obviously used, you know Xnet RC So I had to put this in I was able to do that Then I put the scratch pad pads in it didn't have scratch pad So I was able to put that in so I wanted to go more minimal because I was you know I wanted to be able to do some of these things myself now Obviously, I've had help so Darth Vader specifically. Thank you so very much for your your help on Actually getting this thing up and running every time I've come up with an error that I couldn't figure out on my own I was off messaging Darth and he helped me out quite a bit So I wasn't completely on my own But I've been actually very proud of myself when it comes to being able to do this in this particular configuration file Adding the different features, you know and things just you know are working a lot better than before so the reason why in previous attempts that my Happiness with X-Monad was non-existent is because of Haskell the Haskell syntax is not something that I particularly Understand all that well now even a week later There are still parts of this that don't make any sense to me or whatever So specifically this end part right here never makes any sense to me whatsoever Some of them are just whatever but then you have like there's a dollar sign here and there's these arrows not exactly sure what those do and then there's the The plus mark in brackets and you know, whatever and they all mean different things and sometimes there's a period in between there So if you look it down here, there's actually a period here for some reason Like I only vaguely now know why those things are there and I'm sure the people who are Haskell pros could be in the comment section below Though this would this is what this means this would I understand all that stuff, right? Some of these are replacements for parentheses. Some of them have you know tie things together in certain ways I understand the very vague general reasons why but that syntax has always been a pain in my ass and mostly because the documentation is one way of doing things and Then you look at other people's configuration files and they've done things in a different way So my biggest problem with X-mone ad is the way that it's configured And it's not that you can't do things in X-mone ad. It's that everyone does things in a different way So my primary way and since time in memorial will actually since 2017 But since 2017 my way of learning things when it comes to window managers is to steal someone else's configuration file Then make it my own. Okay. It's how I learned I3. It's how I learned BSPWM. It's how I learned DWM It's how I learned Q tile you name it. That's how I learned it I went and found someone who knew what they were doing and had a good documentation or comment a good commented Configuration file I stole it from them got it up and running and then made my changes over the course of using that Window manager and configuring it to my liking. I would therefore be able to learn by emulation How to configure the window manager? It worked really really well for a long time because for the most part when you're doing something in a window manager There's usually just one way of doing it or it's there's a best practice way of doing it, right? Most people do rules for example in BSPWM the exact same way So if you want to set a rule in BSPWM, there's a set way of doing that same thing with You know Q tile and the same thing with I3 if you want to set a rule there's a way to do that There's not 12 different ways of doing it even in DWM which is like Q tile and like exponent configured in a programming language in this case C There's one way of doing a rule. Okay, now I'm sure that there are some more prolific C Programmers out there who could say that there's different ways of doing a rule But when it comes to doing a rule in the DWM configuration file Usually there's one way of doing it. So that's just that but in Xmonad when it uses Haskell There's different ways of doing it. So my way of pulling someone else's configuration file didn't really work So if I actually go to a different workspace here and right now I'm actually in desperate need of more workspaces Yeah, because I now have a window on every single workspace and man Do I need some more? That's that's my next thing to figure out is how to add a couple more more workspaces But if I go to district tubes dot files, which I have downloaded. So if I go into CD dot files DT dots Dot files that config Xmonad it makes one ad Hs So this is district tubes dot files for Xmonad and while some of it is very similar to what I've done There are differences. So you can see like just we just looked at my Configuration file and these are where I define the variables, right? This is just me emulating what was already here and I've added a few of my own if we go to DT's They're done in a little bit different way, right because they're called in a different way And that's just one way of doing it. My way is another way of doing it There's a third way of doing it So when I want to learn something from someone else's configuration file It's going to depend on whether or not they did things the same way that I did them previously or the person Who used my configuration or created my configuration did them. So learning from other people's configuration files is almost and I would say this damn You're impossible because they all are different and the thing about Haskell is is that this stuff is not interchangeable So I can't go and say let's just say I wanted for whatever reason to steal all of DT's Variables here. I can't just go here and you know scroll up here to the top and get into visual mode and just Yank those things paste them into mine and say Randy dandy I'm going to actually use all of those in mine and have it compile. It would not work Okay, if I wanted to take some of those things I'd have to either change the way that I did it or Figure out how these particular variables are called later on in the configuration file and change that or add those to the Do with the loop at the end of X monad you'd have to change that I don't know if that's a loop or I think it's a loop But whatever, you know, you'd have to put these things in in a certain order And if you don't put them in a certain order you can't mix and match the orders So you do things in one way and you have to continue to do things in that way for the entire configuration file You can't mix and match so all that comes down to The fact that the way that I have traditionally learned how to do window management and window managers How to configure window managers has been to learn from other people doing the configuration file in this case I haven't been able to really do that and That has been why I have almost repeatedly failed at X monad over and over again because that's how I've attempted to try To do this now. Here's the rub when it comes to the X monad documentation Which is actually the Haskell documentation. They seem to be one in the same They're not even consistent within the documentation over how to do things So there are two different tutorials from the X monad developers or from the main X monad community on how to get started with X monad One does thing one way one does things the other another way and they're like I said, they're not interchangeable They don't both explain everything that you need to know to configure So like one of them doesn't tell you how to add scratch pads one of them does So if I wanted to if I started following one way that didn't have everything I needed in it And I went and found the other one that did have but I couldn't combine them at the end, you know So even the documentation on their github page and on their Haskell Digimitation isn't always consistent on how you can do things and like I said You can't mix and match this stuff because it's not it's not compatible You have to import all of the right X monad libraries or modules or whatever You have to put all of them in the proper places here at the bottom So if you you're calling things here, you know in in the in the main You have to put them all, you know in the same syntax you defined them in earlier in the configuration file If you don't do that, it's not going to compile and it's not going to run So you can't mix and match like I said, and it just makes it enormously hard to learn if you learn the way that I have over the course of the last three years in That you use other people's configuration files to do the learning So this particular time is different a little bit mainly because while I yes I did use someone else's configuration file the jumpstart my both my XMO bar and my X monad I have stopped there and move to just using the documentation and Recognizing how my particular config file does things so I will know when I'm searching for a problem So like later on for example, I'm going to learn how to add more workspaces to X monad I'm going to learn how to do that and I'm going to know as I search for that problem or the solution to that problem I'm going to be able to figure out if the solution that I find is going to be compatible with my particular Configuration file. I've learned to kind of suss out how those differences, you know work and how incompatible one way of doing Something is compared to the other so I may I'll be able to find a way to do it That will work with my configuration file That's the difference this time is that I'm actually putting time and effort into learning a little bit more of Haskell but also I'm Learning to Recognize when something will work when something won't work and that has been all of the difference So I can tell when I go find a solution to something if that particular, you know Copypasta is going to mess up my configuration file and I've been able to avoid the pitfalls I had in the past Also, I've been more successful at Doing things on my own. Oh, like I said, I'd have had help The like the scratch pads I did all on my own the start-up hook I did all on my own and and you can tell I'm very very proud of that because in previous times Whenever I got to one of those roadblocks where I'd have to do it on my own I would inevitably fail because it was just too confusing and you know, obviously finding You know, I can go to someone else's configuration file and say hey that's how they did the start-up hook because Taking their version of the start-up hook and putting it in mine doesn't necessarily mean it's going to work because they could have done a Syntax in a slightly different way that isn't compatible with the syntax that I used, right? So this time has been much more successful So my overall thoughts on Xmonad is that is very very good It has all the features that I want the workspaces worked the way that I want So it has a shared amount of workspaces on both monitors that can move move around dynamically It's very very good has scratch pads. It has all the stuff that I want. So it's a very good window manager It is also really really hard now. I know the Haskell and Xmonad Veterans out there will say well, it's not that hard It's not hard for you because you understand going in or you understand now after you've put the work and effort in to learn And it's easy for you because of that case, right? You are now a well-learned Haskell person For the rest of us noobs going into Xmonad It's difficult. It's said it's the most difficult window manager. I've ever tried and Like I said, I've tried them all so Someone wants to ask me or I get actually get asked this question quite often is what window manager Do you recommend for new users and a lot of people ask me Matt? I've watched DT's Xmonad Tutorials I should try Xmonad and my argument would be no you should not use Xmonad if you're a brand new window manager user Just absolutely not the only exception to that is if you already know Haskell if you're a Haskell developer But you've never used a window manager before then Xmonad is probably perfect for you But for everybody else no Xmonad is not for brand new users And I don't even know that it's for me at this point yet. I'm still using it. It's still good and I'm happy here but We'll see I'm still using it right now and that's really it's as far as I've ever gotten with Xmonad And I'm happy and it's running really well. So we'll see if that stays true So that's it for this video if you have thoughts on it, you can leave those in the comment section below Also, I'm not sure why I'm doing this when I'm talking about comments But whatever if you want to leave a like on this video, I'd really appreciate it really does help the channel Matt The ending is always the worst Anyways, you can follow me on you can follow me on massive on an odyssey those links being the video description I'm also on pure I also have my videos on a pure tube instance That's TL vids those that link will be in the video description as well You can support me on patreon at patreon.com slash the Linux cast you can support me on kofi at kofi.com Slash linus cast and if you want to head on over to the merch shop where you can find hats and t-shirts and hoodies and Desk mats and all sorts of good stuff You can find that at shop that the linus cat org all that and all the processes go directly to helping the channel Which means more Linux content for you Thanks everybody who does support me on patreon YouTube because we're all absolutely amazing without you The challenges would not be anywhere near where it is right now. So I think you so very very much for your support I truly do appreciate it guys are awesome without you just seriously. Thank you so much. Thanks everybody for watching I'll see you next time