 I've had a few viewers of the channel recently ask me why the last few videos that I've made why am I running the X-Modenad Tiling Window Manager when a couple of weeks ago all my videos you guys saw me I was running Qtile as my Tiling Window Manager and these people want to know what made me go back to X-Modenad. Well, I always go back to X-Modenad, I always hop to something and then come back to X-Modenad. I've been doing this for about 10 years with X-Modenad. I keep coming back to it. Why? It's because X-Modenad is simply the best. You know, it's like that 80s song from Tina Turner. You're simply the best better than all the rest. That's X-Modenad, right? It's simply the best. That's why I keep coming back to it. It's just comfy. You know, I'll go away for a few weeks or a few months and play with another Tiling Window Manager, but always when I come back it's like coming back home. And since coming back to X-Modenad here in the last couple of weeks, I've really been overhauling my config file for X-Modenad. I've really, I've added some stuff, but I've also removed a lot of stuff. My old X-Modenad config was well over a thousand lines long at one point and it really got kind of unwieldy, unmanageable, mainly because it contained a ton of extra modules that really nobody would ever use. I didn't use half the stuff in the config. I mainly had that gigantic config, mainly just for documentation purposes because I know a lot of you guys go and grab my configs and you kind of treat it as almost like the X-Modenad documentation. So I tried to put as much stuff in that config as possible, but now I'm starting to trim some of the fat. And let me show you a little bit of what I've got going on with X-Modenad these days. So this is my current X-Modenad desktop. I do have a cocky on the desktop. People have asked about the cocky here in the last couple of weeks. I keep that cocky. I've got some of the key bindings for X-Modenad in the cocky is because eventually I want to create that deployment script for my X-Modenad desktop. And for new users, they're going to need to know what some of the default key bindings are. So that's why I have that stuff there. Let me open up my X-Modenad config. So let me launch do me max here and let me go and get into my X-Modenad literate config here. This is a org document and the first major change that you guys would notice with my config, if you've been using it for a while, is in the auto star hook, I've changed a few things around. For one thing, I had been using nitrogen to set my wallpaper. I still love nitrogen as a program, but I have since commented that line out that uses nitrogen because eventually if I do a deployment script, I want to have as few dependencies as possible for that thing. And I don't want you guys to have to install nitrogen to set a wallpaper when everyone already has FEH, FEH installed to set a wallpaper. So we're just going to set a wallpaper with FEH. So now in my auto start hook here, I have spawn once and then we're going to run dot FEH BG, which is the last background you saved using the FEH command. And how I'm going to do this is I know people still want a wallpaper browser, which nitrogen was a wallpaper browser because you could actually open nitrogen and get a nice grid layout of all your wallpapers. And that was really nice, but I don't really need nitrogen for that. We can just use our image viewer. And what I've done is I've set up SXIV, which is a really minimal image viewer. I've set that up to where I have a hot key for that. I set that to mod F1 and mod F1 now launches SXIV. Our image viewer, and it actually lists out in this thumbnail view all the wallpapers in my wallpaper directory. And I could navigate to a wallpaper that I want to set, maybe this one right here. This looks like a nice wallpaper. And within SXIV, if I did the following key chord, control X, followed by W, it'll actually set that wallpaper that we had selected. Let me switch to a different workspace. And you can see it actually selected that wallpaper. We get a little notification here, letting us know that we set that new wallpaper. So let me go back into SXIV. And if I navigated back to, I don't know, another wallpaper. Let me find another nice wallpaper. Here's the one I was using before. Let me do control X, W. And it sets that wallpaper back to what we were using previously. Pretty cool, right? So that is Faye, and that is SXIV, our image viewer. Remember, if those of you that grabbed my config, Mod F1 gets you the wallpapers listed here in SXIV. I also set a key binding for Mod Key plus F2. What that does, let me get to an empty workspace. Mod F2 will pick a random wallpaper from my wallpaper directory and set it. So Mod F2, Mod F2, Mod F2. Really cool, right? Really neat little feature. So I'm adding that and I'm taking away nitrogen from my config. I'm going to leave the nitrogen auto start command in my config. It'll just be commented out for those that need it. They can go grab it for those of you that don't need it. Just leave it commented out or you can just delete it completely from the config. And of course, right now I've got Faye. Always when we log into X-Modad, it'll set the wallpaper we last saved. But if you wanted to always get a random wallpaper every time you log into X-Modad, I've got this line commented out. You could just uncomment that line and then, of course, comment out that line and you get a random wallpaper every time you log in. Now, one thing I did is I got rid of more than half of the config. Was a module called Tree Select. There was a Tree Select menu that was part of my old config. Let me go into my GitLab and show you the old config a little bit. But it was this massive config. And here's the Tree Select portion of the config. It starts here and it goes all the way. There's Tree Select key bindings, Tree Select configuration and themes. Yeah, it was about, I don't know, three, four hundred, five hundred lines of just the Tree Select module. So I got rid of the Tree Select stuff because it was a neat little menu. But to be honest, would anybody use it? No, it was kind of complicated to add and remove items from the Tree Select menu and also it wasn't searchable. It wasn't like a deep menu where you could just start typing something and search through the menu. You actually had to navigate through a menu. It's like navigating through bookmarks in a browser, which for people that are using tiling window managers, everything is keyboard driven. It really didn't make sense to have so much of that config dedicated to that Tree Select menu that I don't think anybody would have ever used. So I deleted all of the Tree Select stuff. I did leave the Grid Select menus here because they don't take up much of the config. And I guess some people will find a use for the Grid Select. Let me show you Grid Select here. So if I did Control G, followed by G, that is a Grid Select menu where I could pick a program here. I don't know, PCManFM and I could launch it. So that is the Grid Select. I left that there because, again, it's not really taking up much room in my config. I don't ever use it, but I could see people maybe finding a use for that. Another large chunk that I removed from my config had to do with the Exmonad prompts. So before I had these really cool prompts, they were like D-Menu prompts, but they didn't use D-Menu. These were actually built in Exmonad prompts. And if I go back to my old config, DTXPConfig here, that is the Exmonad prompt config. So this was the theme for my Exmonad configs or the prompt configs. And these were the prompts themselves, some custom prompts that I kind of found on the internet and kind of hacked in such a way to use them, the search prompt. Anyway, it was a lot of lines of my config dedicated to those Exmonad prompts. And while they were really neat, they really did not do anything that D-Menu couldn't do. And quite frankly, D-Menu does it better. D-Menu is much more versatile because the Exmonad prompts are actually built in to Exmonad. They're not a standalone program. So it's not like where D-Menu, you can write a simple shell script and just pipe it into D-Menu. Boom, you're done. No, that's not the way the Exmonad prompts work. These things are part of Exmonad. You have to write them in Haskell. They have to be in your Exmonad config. And while it's really neat, especially for those that want to learn Haskell and hack on Haskell for just most desktop Linux users, you're going to be much, much better served just using D-Menu for all your prompts. I got rid of the Exmonad prompts. We're just going to use D-Menu. And in my configs, I have my DM scripts installed. So if I do Super P Mod P followed by E, that is my edit config D-Menu script. If I do Super P followed by I, this is my Scrot D-Menu script where I can take a screenshot of each monitor or the full screen or whatever it is I want to do. I've got Super P K for my kill script. So this is showing me all the processes that are running. And I could pick one and kill it. Super P M for man page. This is a man page D-Menu. I could search for a specific man page or I could get a random man page. So I could get that random man page there. And of course, it'll open it in the terminal. If I wanted to read it, I don't care to read that man page. I also had Super P O for open my Kube browser bookmarks because you typically you do O and Kube browser to pull up your bookmarks. So I did Super P O for the Kube browser bookmark history and recent file menu here. And I also have Super P S for the D-Menu search script. Another thing I spent some time working on in the last couple of days are the scratch pads. So the scratch pad feature in my old X-Modad config was broken a little bit because I had changed terminal emulators somewhere along the way. And Alacrity has different flags than X-Term and URX VT. And you really need to make sure that whatever terminal emulator you're using with the named scratch pads inside X-Modad, you have to be able to set a title for them. And in Alacrity, you set a title with the T flag. So I've set a terminal scratch pad with the command my terminal, which is Alacrity dash T scratch pad. So I'm naming it as a scratch pad and I have this key-binded. My terminal scratch pad will be key-binded to control S T. And that is the scratch pad terminal. And I could do something like I could run H top right now. So there is H top. I could do control S T to toggle the scratch pad to go away. Scratch pad is still there, though. H top is still running on that scratch pad. It's just hidden. If I wanted to bring it back, control S T again would bring that back. Let me quit out of that. If I wanted to actually kill the scratch pad, I'd just close it like I'd close any other window. I also have a scratch pad for MOC, which is a terminal music player. So if I did control S M, that is MOC. Let me close that. I also created a scratch pad for my calculator, which is calculate dash GTK. So I set that, I believe, to control SC for calculator. And it's a little smaller because I didn't want the calculator buttons to be all big and look all wonky. So I set that to an appropriate width. But again, if I did control SC, the calculator hides control SC, the calculator comes back and then, of course, super shift C will actually just close that the way the name scratch pad feature works is it creates a workspace. There's actually I have nine workspaces, but there's actually a 10th one called NSP for named scratch pads. It is hidden. It's hidden from the XMO bar output, but it's there. You don't have a key binding. You can't go visit the NSP scratch pad workspace. But that is where all of your scratch pad windows, when you toggle them to be hidden, they actually go to that hidden workspace. When you toggle them to show, it actually brings those windows to your current workspace. So that's the way the name scratch pad feature works. And I say you can't go visit that name scratch pad workspace. I mean, if I really wanted to, I could go down to where I've set my workspace names and here it is workspaces. What I could do if I really wanted to see that name scratch pad workspace, I think I could just do. I could just add it on to everything here. And again, it's NSP. I believe it's NSP all caps is what it is. But I don't know why you would ever want to see that workspace. So by the by default, it doesn't show and I would just leave it that way. Another thing I've been doing is I've been playing with my layouts a little bit. I've got a lot of layouts in my Xmonad config just for examples. And I've been trying to clean them up a little bit and working on them. I've also added a couple of new layouts. I found this really neat layout in the Xmonad dash contrib libraries. It was called accordion. And what the accordion layout is, let me go to a different workspace. I'm going to open up, we'll open up four terminals. And then if I do super tab, I'll cycle through some of my layouts. Let me get to accordion. There is accordion, this one I'm calling tall accordion. But this is the standard accordion layout. So I'm on the first window there, but I can go down the stack and, you know, then the middle one pops out and then that one pops out. And then the bottom one pops out kind of neat. Like I could see that being a useful layout for a lot of people. So that's why I did that one. And if I do super tab to go to the next layout, I do have instead of tall accordion, we have wide accordion, which is accordion, but, you know, in a horizontal kind of layout rather than a vertical layout, but it still works basically the same way. And adding the accordion layout was pretty simple. You see, for tall accordion, I just set that to be the standard accordion layout for wide accordion. You need to run the mirror command. So mirror accordion and you can do that with any layout mirror. And then name of layout, all it does, it kind of turns it on its side. That's what it does. I've also spent some time with the window rules. So your manage hook here and Xmonad has pretty good defaults. Even if you don't specify these things in Xmonad's default config, it knows every confirmed box should be floated. Every error window should be floated. Every download window should be floated. But I wanted to specify them just in case. I also wanted to add some other stuff like I always like GIMP to be floated. So I set a rule here for class name, GIMP, do float. GIMP with a capital G is the class name. If you're ever unsure about a class name or anything like that, the X-Prop tool is what you need to do. So let me launch GIMP. I have two rules for GIMP. I have GIMP needs to be floated and also down here, I have GIMP also needs to be shifted to my workspace eight. My workspace eight is really nine because you start counting at zero in programming, right? The numbering starts at zero. So we're going to send GIMP to the ninth workspace, which I called graphics. So let me launch GIMP with the menu and GIMP launched. But it is on workspace nine. It automatically takes us to workspace nine, too, along with GIMP. So that's really cool. You can tell it's floated because it's not taking up 100 percent of the screen. And again, if you were ever unsure about the class name, a title name of a program, you could do X-Prop in the terminal. And then with this little X cursor, click on the window that you want to get the name from. And you can see window class is GIMP, capital G, or I could have also used a name here as good new image manipulation program. That's a little longer. So the window manager class in X, Monads, rules, class name is actually with the window manager class is in the X-Prop and what they're calling title would be what X-Prop was calling window manager name here. So if you were going to use that, you would need to use the new image manipulation program. So let me close that out and get back to the config. And most of the other stuff that I've worked on in the config is adding some key bindings, cleaning up some of the key bindings. I've got a lot of key bindings now I got key bindings for everything. And it could be a little confusing for people that grab my configs. But again, that's kind of why I added the cocky for some of the basic stuff. But obviously, if you want to know all the key bindings, you just need to pull up the config file and read it. I added a lot of key bindings for Emacs because I really want to replace a lot of my default programs with Emacs. So for me, control E followed by another key launches various Emacs programs. So control E followed by E just launches Emacs. There's the Emacs dashboard there. Now, if I wanted to launch some other programs, I could, for example, I have hotkeyed control E followed by V launches the V term in Emacs. So if I wanted my terminal emulator to be a Emacs buffer, I could just use V term. It works just like any other standard terminal emulator. If I wanted to play with the E shell, I have that bounded to control E followed by S for shell. There's the E shell and you see the E shell and V term both actually run my random color scripts command. So I've added a color script space random to the Bash RC, the Fish RC and the ZSH RC, which V term uses standard shills. The E shell has its own profile. It's on RC file, if you will. And I've added color script random to run in the E shell as well. A couple of other things I have binded. I have DeerEd for my file manager, if I want to DeerEd open. And of course, I want sometimes I want to use the Emacs WebWouser EWW. So I have that bounded as well so I can launch distrotube.com, for example, inside EWW. So that's a little bit of what I've done with my X-Monec configure. I still got all those terminals open over on this workspace here in that accordion layout. Let me change that to master and stack in the master and stack and most of the other layouts except floating and except accordion because it doesn't make sense in floating or accordion layouts to be able to do this. But in all the other layouts like master and stack and grid, you can do sub layouts with tabs. So if I wanted to force some of these windows to be grouped into tabs, I can actually merge them all with this particular key binding. I just merged all four of those windows into a tabbed layout. And now I can navigate between the tabbed layouts. If I wanted to unmerge them all, I could get them back in the standard master and stack layout. So that's a little bit of this sub layout tabbed feature that I've got in most of the layouts. Anyway, that's enough of me playing with X-Monec for one day. I could talk all day about X-Monec. It's really one of the things I'm really passionate about. I'm passionate about a lot of things as far as free and open source software. But every time I dive into my X-Monec config, it just makes me small because I go read the Haskell documentation. I'm always discovering new stuff with it. Every time I decide to sit down and hack on my X-Monec config, I discover something that I didn't know about before. And that's what makes it really, really cool. Now, before I go, I need to think a few special people. I need to think the producers of this episode. I'm talking about Absi, Dallas, Gabe, Lou, Mitchell, Ellen, Akami, R-Trait, 30, Joe, David, the other. David, Dylan, Gregory, Lewis, Paul, Polytech, Scott, Steven, Westman, Wes, and Willie. These guys, they're the producers of this episode. They're my last tiered patrons over on Patreon without these guys. This quick look at my latest X-Monec would not have been possible. The show is also brought to you by each and every one of these ladies and gentlemen as well. All these names you're seeing on the screen. These are all my supporters over on Patreon because the DistroTube channel is sponsored by you guys, the community. I don't have corporate sponsors. I just have you guys. So if you want to help me out, look for DistroTube over on Patreon. All right, guys, peace. You're simply the best, better than all the rest, better than anyone.