 One of the reasons that I use Arch Linux based distributions on most of my machines is because I like the rolling release model of always having access to any piece of software and it always being on the latest and greatest version of that software. And this is one of the reasons why I prefer things like Arch Linux, for example, over really stable distributions like Debian stable or LTS distributions, long term support distributions like Ubuntu LTS, because those distributions are designed for stability, their packages are typically a little older, their repositories contain older software. In some cases, their repositories don't have programs at all that are already available on Arch Linux. For example, on Arch Linux, I can install Qtile, which is one of my favorite tiling window managers. Qtile is not in the Debian repository, it's not in the Ubuntu repositories. If you're using Debian stable or Ubuntu LTS, another popular piece of software that I love, you guys know my favorite terminal emulator is Alacrity. Alacrity has become very popular, maybe the most popular terminal emulator on Linux that people go out of their way to install, not the ones that get shipped with your desktop environments typically. But the problem is you can't install Alacrity without jumping through some hoops on something like Ubuntu LTS. The same with the Brave browser, my favorite web browser these days. It's not in the standard repositories. So today, what I wanted to do is I've been getting questions about especially how to install Qtile and how to install Alacrity on things like Ubuntu and Debian. I wanted to show you how I accomplished this on video. So this is a virtual machine of Ubuntu LTS 2204. This is the latest Ubuntu LTS. And the very first thing I want to do is let's go ahead and tackle the problem of installing Qtile because this can be a little tricky. So I'm going to open the terminal and let me make it full screen and let me zoom in quite a bit here. To install Qtile, it's not in the standard repositories. So if I did an apt search for Qtile, you can see Qtile is actually not here. It returns five or six different packages, but they're not actually Qtile. They're packages, I guess that are in some way related to Qtile or you could use them in conjunction with Qtile. But Qtile itself is not there. If I did a sudo apt install Qtile, I can actually just verify that, yeah, unable to locate the package Qtile. So what we need to do is we need to install Qtile through pip. Pip is a Python package manager because Qtile is a Python program. You can install it using pip. So you could do something like pip install Qtile. Now there are some dependencies. I think that we also have to install with alongside Qtile. So we need to also do a pip install XCFFIB. It's one of the dependencies. Let's see if I can install that with pip. We cannot. We need to install pip first because out of the box Ubuntu does not have pip installed. But you see the terminal tells us pip's not installed. Install it using sudo apt install Python 3 dash pip. So I'm going to copy that. So ctrl shift C will copy a terminal highlighted portion here and ctrl shift V will paste it for me. And then if I hit enter, we're going to go ahead and install pip. A few dependencies because some Python libraries have to be installed alongside pip. Now that pip is installed. Let me up arrow a couple of times to get back to that previous command pip install XCFFIB. And now you can see pip's going to install that Python library for us. Now that we've done that I'm going to up arrow and now I'm going to pip install Qtile. And it installed successfully. It tells us the location of where it installed if I move my head out of the way here. You can read the message here. The script Qtile is installed in your home directory slash dot local slash bin. And you see it also suggests that you actually should probably have dot local slash bin as part of your shells path. I typically have that as part of my shells path and bash fish and ZSH. So if I'm using my own personal configs that'll be already taken care of by those configs. If for some reason dot local slash bin is not part of your shells path. You should probably add that not just for Qtile but so many of your custom scripts. That's typically where people put them. You know they'll put them in your home directory slash dot local slash bin. It just makes sense to have that as part of your shells path. That way you don't have to write the full path to a script to execute it. You just type name of script hit enter and it executes it. For those of you unsure how to add a directory to your shells path. Let me just quickly demonstrate this. If I open the bash RC here inside Vim. What I could do is somewhere here near the top. Let me get into insert mode. I can do path equals and then I'm going to do inside double quotes here. I'm going to do dollar sign home all caps slash dot local slash bin and then I'm going to do the colon and then behind the colon I'm going to do dollar sign path all caps. So what we're doing is we're taking the path. There's already a path that exists right and now we're rewriting this path variable and now we're going to add dot local slash bin to the already existing path variable and that actually should take care of this for us. If I write and quit let me source the new bash RC and if I do lsn dot local slash bin there is cutile and now I could probably just type cutile and it would probably be a legit command. I don't know we're already in GNOME it probably wouldn't run it but if I tried to run it you can see it would run it if I gave it an appropriate argument such as cutile start. So we did successfully add local bin to our path. So that's how you do that. What I'm going to do now is let's verify that cutile did install correctly. I'm going to log out of GNOME and I'm going to try to log into cutile if it's there in our login manager. So let me log out. So we're back at the login manager. Let me move my head. There's nothing over here right now. Normally there's a little cogwheel that will list all of our window managers and desktop environments. I think I have to click my name first yeah and before I enter the password let me click the cogwheel. There's a boon to which is just GNOME and a boon to on xorg which is also GNOME. A boon to without xorg is a boon to a GNOME on Wayland. I'm using a GNOME on xorg but I don't have an entry or cutile here. So that is unfortunate. So cutile I'm pretty sure is installed correctly. The reason we don't have a login manager entry for it is because I guess when we install it with pip pip doesn't create a dot desktop entry for cutile which typically most window managers and desktop environments will do that for you automatically but in this case we're gonna have to do this ourselves which is not a big deal. If I if I cd into slash user slash share slash x sessions I'll tab complete here and if I did an LS there are two dot desktop entries here a boon to desktop and a boon to xorg desktop remember the two entries we saw in our login manager there's their dot desktop files and if I open one of these I'll open one of them in Vim here that is what a typical dot desktop file looks like you have typically somewhere between six and eight lines of information such as the name you want to appear in your login manager the executable you know in this case GNOME's executable is GNOME dash shell right the full path user been GNOME shell so what we need to do is we need to create one of these for Qtile and that probably sounds hard but it's not I'm gonna sudo cp so copy a boon to dot desktop and we're gonna copy it over to Qtile dot desktop give it a sudo password and now let's Vim or whatever text editor you want to use Qtile dot desktop now I do need sudo privileges so let me add that before I hit enter and now all I need to do is just go in here and change the appropriate values so I'll do Qtile here and then for the comment here what I could do is I'll just say Qtile session I don't need to add anything very lengthy here now the executable the terminal told us earlier how to start Qtile it's Qtile space start right because it takes an argument so let me change that line and I'm gonna make the executable Qtile space start now I probably do need the full path here just to be on the safe side so I'm actually going to do a slash home slash DT slash dot local slash bin slash Qtile slash start now the try exec I don't need the type equals application that's actually correct desktop names it looks like it's gonna do a boon to colon GNOME this is not a required line so I'll just get rid of it then GDM which is our login manager session registers equals true I don't know if that's necessary or not I'll just leave it and then a boon to get text domain GNOME session 42 I don't think that is appropriate for anything so I'll get rid of that we could also a lot of times there will be a keywords entry here for your desktop entries so keywords equals no spaces and I'll just say WM for window manager colon tiling so that's our keywords window manager and tiling so if I escape let's write and quit that and now once again let me go and log out and now let me move my head let me click on my username go to the cogwheel and now we have a Qtile entry let me go ahead and click on that that's in our password and see if we actually log into Qtile and we do so this is Qtile you see got our panel at the bottom we don't have a wallpaper anything set so by default it'll be a black background by default the Qtile panel is also black the background is you can see we're using the default config now I could go grab my config off of my dot files repository on my git lab and I could already have Qtile set up just going and grabbing my config the one problem with my config though is my config has a lot of extra widgets that are part of the Qtile extras package Qtile extras is a separate package that has to be installed alongside Qtile but Qtile is not in the Ubuntu repositories Qtile extras is also not in the Ubuntu repositories so let me do a super enter to get a terminal what terminal did it launch is this the GNOME terminal yeah all right so still using the GNOME terminal let me zoom in so I wonder if I could actually install the Qtile extras package using pip so if I did pip install Qtile dash extras I don't know if that will actually work it will not so what I'm gonna have to do is I'm gonna have to open a browser and navigate to the Qtile extras documentation and see how to manually install it if the Qtile extras package is not in your distributions repose so I need a browser I'm going to install the brave browser now brave is not available in the Debian or Ubuntu repositories I'm gonna do a snap install brave so this is rather easy says I need sudo usually you can do it without sudo I think well you'd have to enter a password eventually but it's gonna make me invoke sudo at the beginning here so the fact that Ubuntu has snaps already out of the box ready to go you know this makes installing things like brave very simple and you can see brave has been installed let's just launch it from the terminal here just to verify that it works it does let me do a search here so if I did a search for Qtile dash extras and go to their github let's view the code documentation can be found here open that in a new tab scroll down where is installation probably up here yeah installation so it is in the AUR Qtile extras which I know because that's how I get it on my Linux machines because they all run Arco Linux Fedora also has it packaged if you use copper so it's an extra third-party repo on Fedora but Qtile extras is packaged for it everyone else has to install it by get cloning their repository and then running python setup.py install so let's do that so let me clone the repository here so where is the get clone link I'm used to using a browser full screen let me send this to a different workspace let's go to workspace to here there it is code and there is the link so let me copy that let me go back workspace one and then in the terminal let me just kill the break browser let me kill that process and then paste the link if we can I guess when I killed the browser I had to paste the link before I killed the browser so I lost the link that's unfortunate well let me do super is it super p for d menu or super d what is the run prompt here well heck I'll just open brave again hopefully it opens on the page we were on before all right now let me copy that and I'll just open a terminal on this workspace if I can now paste all right then go to the beginning get clone and then the url to that repository and then cd into Qtile extras by doing ls you can see setup.py so remember the command to actually install is python setup.py install so python setup.py install but on debian and ubuntu you actually have to specify python 3 because I guess by default python is actually still linked to the old python 2 and we get error it says permission denied so I'm assuming there's some privileges that are needed here so I probably have to do that as rude or with sudo privileges so me sudo python setup and now looks like it installed correctly so now that I have qtile and qtile extras installed my personal config of qtile should work this I've never tried it this will be my first time trying my latest configs on ubuntu lts the last time I actually ran qtile personally on ubuntu was probably about four or maybe even five years ago so I'm gonna cd back into the home directory and I'm gonna run a get clone https colon slash slash getlab.com slash dwt1 which is my getlab and the repo I want to clone is my dot files and now let me cd into dot files assuming it's there there are all my dot files well not all of them because there is the hidden dot files as well so what I need to do is I'm gonna make dear and then I'm gonna slash on slash dt I'm gonna do the full path because I'm not currently in the home directory dot config slash qtile I'm gonna make this directory if it's not already there and it says it's already there so that's good I don't need to make it so let me copy and from inside my dot files copy dot config slash qtile slash asterix I'll just copy everything over to slash home slash dt let me move my head so you guys can see I'm gonna copy dot config slash qtile slash asterix wildcard character I'm gonna copy all of that from my dot files into slash home slash dt slash dot config slash qtile and I forgot to give it the dash r flag for copy recursively so cp dash r for recursive and now my configs that I use on arco linux on my main production machines now should be available on this abound to LTS virtual machine let's see if I can kill qtile and log back in and actually have my config working actually my config depends on the alacrity terminal let's install alacrity before doing anything else so let me go to a new workspace launch a new terminal just so I can have a full screen terminal now alacrity is another package that frustrates abound to indebian users it's not available in the standard repositories and it's also not available as a snap package oddly enough I don't know why no one has packaged alacrity as a snap so your only options are to build alacrity from source kind of like we you know it would do something like a pip install for qtile we could do a cargo build of alacrity the problem is it's got to compile rust as a compiled language and alacrity it takes a while to compile and it's not necessarily something anybody really wants to do right but there is a ppa for alacrity that just installs a binary build of alacrity so let's add the ppa so I'm going to do a sudo apt-repository space ppa colon and then it's going to be aslatter and that's with t's aslattr slash ppa space and then dash y for yes because it's going to ask us a yes or no question it says apt repository command not found of course let me up arrow it's add apt repository it's been a while since I've used the mood to and and had to play with ppa's so don't be surprised if I fumble around a little bit but you can see now it's adding the ppa just fine and now that we've done that we need to do a sudo apt update to resync the repositories because now we have a extra repository right we have that ppa who want to be able to sync the repositories now and now if I do a sudo apt install alacrity it should be available and it is all right now I want to kill qtile log back in and see if qtile uses my configs and if it does use my configs super enter should launch the alacrity terminal for us so to kill qtile I'm assuming a super shift q no super shift x super x super q and I forget the command but you can always do this from a terminal kill all qtile and we're back in the login manager I'm going to click the username it's still on qtile so that is good let me go ahead and enter my super secure password and it looks like everything worked qtile is working qtile extras is also working because that's the only way we would have had underline widgets here in the bar that's part of the qtile extras package it's definitely using my config super enter is the key binding I have set to open alacrity and there is the alacrity terminal super shift enter should open d menu d menu is not installed well let me from the terminal cd into dot files since I've already cloned my dot files um actually my build of d menu is not in my dot files what I have to do is do a get clone https colon slash slash get lab dot com slash dwt one slash and then instead of dot files d menu dash distro tube is the repository now cd into d menu dash distro tube if I do an ls there are all the source code files right and then I just need to do a simple sudo make install it says compilation terminated I forgot about this problem when you're building some of these suckless packages there's actually a lot of dependency issues so there's a lot of dependencies we have to install so let me clear the screen here I'm going to do a sudo apt install and I've mentioned this on video before because I've installed so many of these suckless programs on a boon to virtual machines before on camera but some of the libraries we need are going to be lib x11 dash dev assuming I can spell it we're going to need lib xft dash dev we're also going to need the lib um half buzz dash dev let's see if those are the only three we need so once again I'll up arrow a couple of times to get back to sudo make install because we're still in the source code directory for d menu dash distro tube and it looks like we got another error here this time it's complaining about xenorama I should have known that that was one of the ones as well so let me do lib xenorama dash dev and the only reason I know what the package names are is because I've done this so many times on a boon to with these suckless programs otherwise you'd you'd have to go look this up a little bit let me up arrow sudo make install and now it compiles correctly so now super shift enter inside this VM should launch d menu but it doesn't let me do d menu run okay it works so the reason it's not working is because my super shift enter it actually launches a script that calls upon d menu and that script is not available but I'll change that if I if I end up keeping this virtual machine so now we have cutile cutile extras my build of d menu the brave browser we've installed all of them none of them were in the main repositories right and I know it can be frustrating for devian users and a boom to lts users to get some of the software installed and I understand the frustrations I was in a boom to lts user for many many years I've used devian stable for a couple of decades right on and off still use it a lot on servers and the thing is there's always a trade-off if you want a stable distribution the reason it's stable is typically is because they don't put a lot of new stuff in their repositories that often right and some of these packages are not very old the brave browser hadn't been around that long just a few years right alacrity has been around for a few years but it really just became popular really popular I'd say in the last three years right and some of these things just haven't made it into the standard devian stable repositories thus a boom to lts which bases off of devian stable you know it can't use those packages because they pretty much use the devian you know they repackage everything that is in the devian repositories and you know some of the stuff eventually needs to be packaged as a snap this is what really needs to happen which brave is for whatever reason alacrity isn't cutal cutal used to be in the devian repositories I'm pretty sure because I remember being able to sudo apt install cutal I would say seven eight years ago I know it used to work like that and then for whatever reason it's not in the repositories now but again you can install it using pip many of these programs you can install through these programming language specific package managers pip for python cabal for haskell and you know cargo for rust yada yada yada every programming language has one so you know don't get too frustrated that some of these things aren't in your standard repositories there's almost always a way to get this stuff even on really old and crusty distributions like debian or aboon two lts now before I go I need to think a few special people I need to think the producers of this episode gay james maxim matt mimit michael paul royal west armor dragon bash potato chuck commander angry george lee met those nate irion paul peace archin fordore polytech realities for less red profit roland tools devler and willie these guys they're my highest tiered patrons over on patreon without these guys this quick episode about installing some of these programs that aren't in the aboon two repositories this episode 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 because I don't have any corporate sponsors I'm sponsored by you guys the community if you like my work want to see more videos about free and open source software subscribe to distro tube over on patreon peace