 Today, what I'm going to be doing is I'm going to be installing DTOS on Manjaro Linux. And the reason I'm doing this is because I need to test out DTOS a little bit. I do need to occasionally install this thing and make sure it's working. And if you're not familiar with what DTOS is, DTOS, it's a post-installation script for arch-based Linux distributions, meaning you install any arch Linux-based distribution, such as mainline arch, or in today's case, we're going to do a test on Manjaro. And afterwards, you run the DTOS script. You should have my desktop with the Xmonad window manager. So if I open some windows, you can see where you'll have my Alacrity terminal with my random shell color scripts program that comes up in the terminal. You'll have XMO bar exactly themed, how I have it here. And you'll have my DOOM Emacs configs, and all of that. You'll basically get my desktop environment on your system. And because there's so many arch Linux-based distributions out there, testing this thing can be a pain, overwhelming. I can't really keep up with it that often. But today, it's been about three weeks since the last time I ran through an installation. And I wanted to make sure it was still working, at least on the most popular arch-based distribution, which, of course, is Manjaro, which is really one of the most popular Linux distributions, period, as far as desktop Linux distributions. So what I'm going to do is I'm going to just briefly show you guys what I do to maintain DTOS, because there is a lot involved. It's more than just me having a bash script that installs stuff. I actually maintain my own repository of software, and I have to rebuild these packages every now and then, you know, keep the software up to date. And I want to cover some of what I do to maintain this, because a lot of you guys, you're going to have, you know, occasional issues trying to run DTOS. And if you kind of know how things are built from the ground up, you might be able to fix the problems yourself. So if I go over to my GitLab at gitlab.com slash dwt1, and if you go into all of my projects, I have 23 repositories currently on GitLab, and you will see four of them are DTOS related. They have a DTOS avatar here. And the one that's just DTOS is the actual DTOS script. So the script is really this org document here, readme.org. It actually gets converted to a proper bash script called DTOS. But the readme.org is actually the file that I put all the code in. And GitLab can render org documents. So this is the actual readme.org. And I'm not going to cover exactly what the script does. I've done this on previous videos. But what it's going to do, it's going to enable my own custom repository that I maintain called DTOS core repository. DTOS dash core dash repo is the name of the repository. Then once it enables that repository, it's going to install all the various packages that I maintain in that repository. Most of them are custom configs of my software. And of course it's going to install a lot of stuff from the standard arch repositories as well. You know, it's going to install xmode add, xmobar, emax. It's going to install the fish shell. It's going to install ZSH as well. With DTOS, you get three shells. You get bash, fish, and ZSH. That way, you can switch between the three of them when you need to. I often do that for those that don't want all those shells installed. Of course, you can remove them afterwards. Or actually, you can actually remove them before the installation process because you could actually go into package list.txt. This file here, this lists all of the packages that DTOS will try to install. And you could go in here and remove packages prior to running the installation script. I would be careful of removing some things though. Like obviously, xmode add is fundamental to this thing. Emax is also fundamental to this thing. I wouldn't try to remove those. And at some point, the DTOS installation script will ask which user shell you want to use bash, ZSH, or fish. So it's going to assume that those are installed. So it would be rather unfortunate if you, for example, removed fish from this file. And then later, in the installation script, told it to make fish the default user shell. That would be a bad time for you. So be careful editing this file. But you can play around with it prior to the installation. And just briefly, I do want to mention the other DTOS-related repositories. They're not typically anything you guys will have to worry about. They're mainly for me maintaining the repository. So I have DTOS-configs. All this is is all the config files for the various programs that are installed on DTOS are maintained in that repository. Those are used in the DTOS package builds. So I've got another repository. These are Arch Linux package builds. So if I go into DTOS-bash, a package build, what it does, it's just a script that builds a binary package for me. And if you see this variable here, URL equals DTOS-configs.get. You know, that DTOS configs repository we looked at earlier. It's going to use that repository to grab the bash Rc from that repository and then create a package called DTOS-bash. And then I have one more repository of DTOS-related software called DTOS-core-repo. This is the actual repo used for DTOS. I mean, it uses standard ArchRepos too. But this is where I maintain all the packages that I built specifically for DTOS. So for example, there is that DTOS-bash binary file. And it also has a corresponding sig file as well because these are signed packages. But again, these repositories, the package build repository, the core repo repository, and the config repository are not something the users of DTOS will ever need to interact with. All you guys need to do is the main repository, the DTOS, write the script. All you guys need to do is grab the script and then run it. So let me switch over to an empty workspace here. Before trying to install DTOS, I actually need to update some of the software. I'm going to open up a terminal here and I'm going to zoom in. And I'm going to CD into my repository of my package builds here. So I'm going to CD into DTOS-packageBuild by doing LS. I have a couple of different shell scripts. I have cleanup and I have build packages. I'm going to run the cleanup file, which all it does, if I showed you the script, it just removes anything that's not a package build. So it removes, like if there's any binaries that were built that are left around, it deletes those. Now what I'm going to do is I'm going to run my build packages script. So it's going to take all of those package builds and make binary packages and make the signature files for them as well. So I'm going to run this. It's going to ask for sudo privileges at some point. And it's also going to ask for my GPG password. And the reason it needs the GPG password is because it's obviously signing the packages. Now this is going to run for five minutes maybe. All right. And everything in DTOS-packageBuild finish actually building. So what that did just to make sure everyone understands the script, because I didn't show you the script, what it does, if I go into my graphical file manager here, this is DTOS-packageBuild. And basically all this is are all these folders. And in these folders, these are names of programs like DTOS-bash. And the only thing in these folders should be a package build and arch package build and maybe a .install file. So these two files running the script creates this file here, which is a binary that can actually be installed with Pacman and it creates the signature file as well. So that is what running that build packages script did. So now what I want to do is let me open up a new terminal. I'm going to zoom in again. This time I'm going to CD into DTOS-core-repo. So this particular repository, if I do it LS, it has one shell script in it, build-db for build database. And if I run that, what that does, it goes into the DTOS-packageBuild repo. And anything that's not a package build file or a .install file, it pulls it in. So all the binaries, all the signature files, right? Because they need to be moved into the actual core repo, right? So now that that is done, I'm going to clear the screen here because my head isn't the way here to get a cursor at the top. So the package build directory, remember I had a cleanup script. I'm going to go ahead and run that now that I've moved the binaries and the signature files to the core repo. I'm going to run the cleanup script because there may be some stuff laying around that doesn't belong there. And it's, it already found a file that doesn't belong there. There is a source directory here. So what I'm going to do is copy and paste that. It looks like that directory is owned by root. So I'm going to do a sudo rm-rf on that directory. And now let me run the cleanup script one more time. Okay, so there should be nothing in DTOS package build itself. Package build files and .install files. So I'm going to do a get status and move my head out of the way. So it modified all the package builds because it updated them to a new version number. So I'm going to go ahead and let's push this to get lab. So I'm going to do a get add-u for get add all updated files. And then let's do a get commit. And what I'm going to do, I typically just do this very simple commit for this repo, which is updating package builds. Because that's really all I ever do, right? There's, there's nothing else really to leave in a comment frame. Usually you want your comments to be more descriptive, but in this case, I really don't do anything other than update the package builds, you know, about once a week. And then I'm going to do a get push to push that to get lab. So now the package builds are done. I won't need this again. And then the core repo, I'm going to do a get status on that. And we have a lot of untracked files, a lot of modified files. So what I'm going to do in this one, I'm going to do get add asterisks, meaning add everything in the core repository here. This is going to take a minute because some of these binary files are big. And then get commit. And I'll do updating database for the DTOS core repository. And then finally a get push. The get push will take a minute or two. Because again, some of these packages are big. All right. And the push has finished. So what I did with the package builds and the core repo, again, that's just for me. That's what I do about once a week. Sometimes I go a week and a half, two weeks without doing that. But that's just me maintaining the repository of software, making sure the packages are up to date if anything has changed. So now what I'm going to do is let's see if we can go ahead and install this latest edition of DTOS. So I've got this virtual machine of Manjaro and I'm going to open a terminal. Now, most of the time when you're doing something like this, you may think, well, I should probably update my system before running the script. You can. It won't hurt anything. But know that DTOS actually updates your system before it ever does anything else. Like the very first thing it's going to do is a Pac-Man SYYU. So don't worry if your system is up to date. I'm getting a warning message here in the Z-Shield. I'm missing the history file. It's not important. I'm just going to clear the screen just to get rid of that message. All right. So to install DTOS, all you need to do is get clone the DTOS repository, which is at HTTPS colon slash slash getlab.com slash DWT1. That's my getlab slash name of repo. The repo you want is DTOS. It's cloning that repo, which means now wherever you were, in my case, I'm in the home directory, I now should see a DTOS directory CD into the DTOS directory. If you do an LS, you will see a script called DTOS. It should already be executable for you. So no need to change permissions or anything. So you should be able to run it with dot slash name of script DTOS. And then give it your root password because to install and remove software, you need root privileges and assuming everything works correctly. First of all, it's going to update the system. It's running the SYU before it does anything else. And now that it updated the system, the proper DTOS script is starting. And we're going to get a little bit of a welcome screen here. This is basically telling you what DTOS is and whether you want to install it or not. It's basically going to tell you, hey, maybe you don't want to install this because it's kind of beta software. I'm not responsible for any damage that this thing causes. Shouldn't cause any damage. But again, you know, it's just a warning message. Then what it does, it adds the DTOS core repo to your pacman.comp file and then begins installing packages from both the mainline arch repos or the Manjaro repos in this case, as well as my packages from the DTOS core repo. It's going to install, it looks like 300 and something packages here on Manjaro's KDE edition at least. Now these 352 packages are installing very quickly. Do know though, in my VM of Manjaro, I went into the pacman.comp file and I turned on parallel downloading, which makes pacman a lot faster. By default, Manjaro doesn't turn on parallel downloads. So make sure you have that enabled before you run DTOS. All right, so it looks like it downloaded all the packages. Now it should start installing them. And honestly, if we get through this portion of the installer, we're probably good. 99 times out of 100, if the DTOS installation script fills, it actually fills because it can't install a package. So getting past that point is great. The next big thing we do is installing DOOM Emacs. It's asking, do you want to generate an in var file? You can choose yes or no. It really doesn't matter on Linux. There will be two other questions later that you want to answer. Yes to both of those. It's going to ask about whether you want to install all the icons, fonts. You do want those. Those will give you some better fonts inside DOOM Emacs. Now the DOOM Emacs installation is the longest part of the DTOS script. This will take probably about 10 minutes to build. So just don't be alarmed. DOOM Emacs, it's installing, you know, a couple of hundred packages probably from the Melpa repose, which is the repose of Emacs software, right? So just go make yourself a cup of coffee. When you come back, it'll probably be finished. All right. And toward the end of the DOOM Emacs installation, again, you get a yes or no question about installing all the icon fonts. You want to choose yes to that. Once it gets past this point of the installation, we're pretty much at the end. Yeah, it's going to ask for a sudo password one more time. It's going to recompile xmonad. And then the last thing it does, what do you want your default user shell to be? So I like fish, which is the first option. So I'm going to type one, but you could use bash or zsh. Any of those would be fine. And finally, it's going to ask that do you want to go ahead and reboot the system because you need to reboot after installing all of those programs. So let's go ahead and reboot. And the reboot is successful. And we have SDDM installed for our login manager with my multicolor SDDM themes package installed. So let's see if we have an entry for xmonad here in the menu. So let me go ahead and choose xmonad. Let's login. xmonad launches fine. xmobar launches fine. We still have some of the default manjaro programs on auto start. I don't have that drop down terminal as part of the DTOS programs, but manjaro I guess has Yaquac installed and it's set to auto start. So let me change the screen resolution and then we'll take a look around. Now the very first time you launch a terminal with alacrity and shell color scripts, you get this error if you're using the fish shell. That only happens the very first time you launch the terminal. If I close the terminal and launch a new terminal, say the error goes away that I don't know why it does it on the very first launch, but after that you'll never see it again. So just ignore that error message. I'm going to do it xrander. If I can type xrander correctly xrander-s4set in 1920 by 1080 for the screen resolution. Now let's check and make sure everything is working correctly. The first thing we want to do is make sure our run launcher is working correctly. So if I do super shift enter, we have D menu. So I've got this particular D menu here. So let me escape. Let me go to an empty workspace. I've got some issues because I did the resizing. We've got some issues with the cocky here. Let me reset the background. So in the cocky it gives you some clues to some of the key bindings, especially the various DM scripts, which are the D menu scripts. You see super pb sets the background. So super p followed by b. And then you want to set a background, meaning choose one, or do you want a random one? Let's choose a random one. Why not? There's a random background. Is that okay? Yes. All right. So that takes care of that. Cocky is still out of place. Why don't we just kill cocky? So I'm going to open D menu. I'm just going to type kill all one word space cocky. But all of the D menu scripts look like they're working just fine. So there is the screenshot D menu script. There is the web search DM script. And of course there is the main DM run script for DM script. So all of that looks like it works just fine. Let's see if doom emacs works. So super e followed by e super e emacs launches. But that's not doom. Emacs is asking about downloading the icons again. Just choose y on that if you can. Down there. All right. Oddly enough when I chose y hit enter, then all of a sudden things started changing. It looks like now we are in doom emacs because the standard doom emacs key bindings. If I do space fw for find recent file. Yeah. Space period to open the file manager or the find file command. Dear Ed, so if I wanted to. And we're in the home directory. I'm going to move to the DTOS directory. You remember DTOS zoom in and there is the script that we ran to actually get all of this installed. If you want a better version of the script as far as if you actually want to know what the script does, open the readme.org because that really is the script. But it has a bunch of comments that the proper script doesn't have. So you can actually read a little bit about DTOS and get an idea of what DTOS does. Now let's talk about troubleshooting DTOS because if the script fails, I told you this earlier. If the script fails 99 times out of 100, it fails with this part of the script. sudo pacman dash dash no confirm dash dash needed. Actually that's not actually it. Let me do a search for I know dash dash needed is part of what I was looking for, but I'm looking for this command here. Dash dash needed dash dash ask. So sudo pacman dash dash needed dash dash ask for dash capital S lowercase y and then dash left pointing chevron the less than sign package list dot txt. So what this is doing, it's installing every package that is listed in this file, the package list dot txt file. And typically, again, when the script craps out, if you have an error 99 times out of 100, this command failed. Even though it's going to spit out, it's going to spit out an error message that says Xmonad failed to recompile. That's not actually what happened, right? This command failed. If you want to verify that, just go into the script, rip out this line. So just copy it, open a terminal and then CD into DTOS and then run that command yourself. And then it will actually give you a proper error because it's going to hit one package that it couldn't install for some reason. There's a conflict. And the reason there's conflicts is because sometimes these arch-based distributions like Manjaro, Arco, Endeavor, they package versions of their software that conflict with versions of my software, if that makes sense. Like we're trying to package the same custom configs for, I don't know, Alacrity, the terminal or whatever. And they have their own Alacrity package I have mine or whatever. That's just an example. But this will give you a clue as to the package that's causing the problem. And then what you could do with the package that's causing the problem, you could uninstall their version of that package and then rerun the script. Or if you want to keep their version and not install my version, you just go into the package list.txt file that lists all these packages. Find the one that I'm trying to install that for whatever reason can't install and just delete it from the list. And then write and quit out of that and then rerun the DTOS script. So that is, again, the most common failure if you have the script filled. It's going to be when it installs everything with pacman with this command here from the package list.txt file. But everything looks like it's working. Doom Emacs obviously is working. I'll go back to the first workspace. The terminal is working. This is the fish shell, isn't it? By echo shell. Yeah, our default shell is slash bin slash fish. And of course we have bash zsh and fish available. So if I switch over to bash, there is the bash shell. If I switch over to zsh, there is the zshell. And all of them have the random color scripts. Also, inside doom Emacs, you know what the problem with doom Emacs launching here is the daemon is not launching. So let's go ahead and kill all Emacs just to make sure it's not running. It was running. And then what I'm going to do is I'm going to do a slash user slash bin slash Emacs because I do have some aliases for Emacs as part of DTOS. So I'm going to type the full path to the binary. User bin Emacs space dash dash daemon space and then the ampersign because we want this to run in the background. This will take a minute to launch. Okay, so now doom Emacs, now the Emacs server is running because the way I have Emacs set up with the key binding, it wants to launch Emacs as a client. So the Emacs server is always running in the background. Super E followed by E launches a client window. And now doom Emacs is working as expected. I launched the E shell in doom Emacs. The random color scripts also works in the E shell. So it should work in all the terminals and all the shills in Emacs. It should also work in bash zsh and fish. So let's see if we can change the color scheme. I like the default doom one color scheme. That's why it's the default. But if I do one of the DM scripts is super P followed by C. And this is for choose a color scheme by default. We're on doom one, but if I wanted to, let's move over to grove box dark. And it should relaunch relaunches XMO bar and the trailer with the proper grove box dark colors. It also relaunches conky with grove box dark colors. I think the only thing that won't be grove box dark will be doom Emacs. But in doom Emacs, I think you can do space HT for theme. Yeah, choose theme and just search for grove box. Yeah, so let's do grove box here. And now we have grove box dark. I tried to resize the window, but I can't do that because it's going to resize the virtual machine window. That's my fault. But that is a doom Emacs. And let's make sure alacrity also. Yeah, alacrity also has the grove box colors. So a very quick and easy way to switch between, I think I've got nine or 10 different color schemes you could choose. So solarized dark if we wanted a little easier on the eyes color scheme. I've never been a fan of grove box. But here is solarized dark. Yeah, so everything seems to be working correctly. Again, this was some maintenance work on DTOS that I needed to take a couple of hours to do today anyway. And I wanted to make a video. So I figured, hey, while I'm updating the repos, and then I'm running through this installation on Manjaro, why not capture it on camera just for, because I know a lot of people probably want to try out DTOS. And Manjaro has such an easy installation process, right? Manjaro, you can have up and running in a VM, for example, if you want to test DTOS out. Install Manjaro in a VM. It'll take you about 10 minutes. After that, run the DTOS script. That'll take you probably about 15 to 20 minutes. So in 30 minutes, you can have DTOS up and running, and you can try out my desktop. Now, before I go, I need to thank a few special people. I need to thank the producers of this episode. Devin Gabe, James Mett, Michael Mitchell, Paul Scott West, Alan Armoredragon, Chuck Commander, Rengar Edyokai, Don George Lee, Lennox Ninja Maxim, Mike Erion, Alexander Peace, Sergeant Vador, Polytech Red Prophet, Steven and Willie, these guys. They're my highest-tiered patrons. Over on Patreon without these guys. This episode you just watched would not have been possible. The show is also brought to you by each and every one of these fine ladies and gentlemen. All these names you're seeing on the screen right now. These are all my supporters over on Patreon. Without each and every one of these ladies and gentlemen, I couldn't do what I do. I don't have any corporate sponsors. I depend on you guys to help me out. If you want to see more videos about Lennox and Fred open source software, guys, check out DistroTube over on Patreon. All right, peace.