QTile

As of writing this, I'm currently going through the "Obey the testing goat" book from oreily to refresh my knowledge on python as the last time I touched it was back in university. As i'm touching python, I thought I might as well try ricing qtile

Booting up qtile

The first time I booted into qtile, I was greated with the same screen as my greater (SDDM) but with a bar at the bottom of the screen. Not entirely sure why that happened but I could at least spawn a terminal to take a look at the initial config. The config was very bare bones, in contrast to awesome and i3 where you are given a lot of keybinds out of the box, the qtile config just has the essential keybinds to help you start using the window manager. I dont particularly mind this as I have keybinds from other configs that I can use to base my current keybinds off of but for a new user, they will probably need to look at documentation or other examples to know whats possible.

Setting a background

Normally, I use feh to set the background on all of my monitors as it works fine for i3, leftwm and spectrwm (that articles coming soon) but for some reason, qtile wasnt able to render the background at all and would default to giving me a blank background entirely. This was especially weird when I tried to move windows and would get a "ghosting" effect with the old windows position still appearing on screen. This behaviour would also happen when I closed windows where the screen would still show the previous window that was open but opening a new window in full screen would then override the image rendered as the background. To fix this, I set my background in the qtile config for each screen to load my wallpaper using:

Screen(
    wallpaper="path/to/wallpaper.png",
    wallpaper_mode="fill",
    top=bar.Bar(...widget_list_here...),
)

Now my backgrounds at least look ok.

Configuring screens

Besides stealing the bar from CozyTile (I highly recommend checking it out, the themes look amazing), the rest of my config is pretty much stock. I split out my config into separate files but I havent used classes to handle my config even though its written in python. Thats more personal preference as I prefer the classes java has and I never really liked how OOP was implemented in python but moving your config to an OOP style shouldnt be too difficult, I recommend checking out qtile-examples for inspiration for your own qtile config if you want to try customizing qtile. The only other thing I stole was some multi monitor set up code as by default, qtile doesnt have an example of setting up multiple monitors with bars and backgrounds in their example config so, I used g-wizzy's config to dynamically grab the number of monitors I have usign xdisplay.

Pain

The one problem I have with qtile and lots of window managers are the way tags are handled. I like how awesome has tags for each screen so you could have 18 tags with 9 tags on each screen. Although I dont like sharing tags between all screens, I like how i3 handles that where when you select the tag that is in focus on a different monitor, it takes you to that monitor instead of moving the tag to the current monitor you are on. Qtile on the other hand, works exactly like leftwm where you bring the tag to you instead of you moving to the monitor the tag is on. I find this very frustrating as my screens arent always allocated the same tags every time I boot into qtile so when I select a tag that I think is on a one monitor, it'll take me to the other monitor. This would probably be fine if you always open the same windows on the same tags but I am not as organized with my placement of windows on tags.