10 Things You Need To Know About Qtile

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ก.ค. 2024
  • Today I talk about the things I've learned about Qtile in a week of use.
    👇 PULL IT DOWN FOR THE GOOD STUFF 👇
    Patreon - / thelinuxcast
    Liberapay - liberapay.com/thelinuxcast/
    TH-cam - / @thelinuxcast
    ===== Follow us 🐧🐧 ======
    Discord - / discord
    Odysee - odysee.com/$/invite/@thelinux...
    / thelinuxcast
    / mtwb
    Mastodon- fosstodon.org/@thelinuxcast
    gitlab.com/thelinuxcast
    Subscribe at thelinuxcast.org
    Contact us email@thelinuxcast.org
    Telegram Group - t.me/+9lYoIuLh0JIyMzcx
    Amazon Wishlist - www.amazon.com/hz/wishlist/ls...
    Merch Store - zaney.creator-spring.com/
    Logo Courtesy of - pedropaulo.net
    ==== Special Thanks to Our Patrons! ====
    thelinuxcast.org/patrons/
    ==== Referenced ====
    ‪@JakeLinux‬ video - • Customizing Qtile stat...
    ==== Time Stamps ====
    0:00 Intro
    1:04 A Bit of Python Goes A Long Way
    2:13 Qtile is Not Slow
    3:00 The Bar is Amazeballs
    6:20 The Widgets
    8:12 I Love Scratchpads
    11:39 The Workflow
    16:36 The Layouts
    17:29 The Keybindings
    18:11 The Documentation
    21:56 Rules
    24:24 Will I Keep Using it?
    #review #qtile #thelinuxcast
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 53

  • @TheLinuxCast
    @TheLinuxCast  ปีที่แล้ว +2

    Want more Linux content? Follow me on Twitter - twitter.com/thelinuxcast

    • @user-yd3yr1pw3x
      @user-yd3yr1pw3x ปีที่แล้ว

      In order for the application to open on a certain workspace, you need to specify this in the block where the workspace is determined by adding a parameter Matches
      ' matches=[Match(wm_class=["Figma"])] '
      ps. sorry for my eng :D

    • @tomasruzicka9835
      @tomasruzicka9835 ปีที่แล้ว

      Python is generally slow because it is interpreted language. Basically a scripting language. Kinda like bash, but with more usual syntax for the avarage programmer (except the significant whitespace and no curly brackets ... ugh bleh). On the other hand c++ for example is a compiled language it get's translated into raw data in memory that CPU just freely surfs on at it's own speed. There are rumors that (basically) reference implementation of python is gonna be like 3 or 5 x faster now. But for a long time there has been a big difference between for i in range(10000) and for i=0;i

  • @thingsiplay
    @thingsiplay ปีที่แล้ว +32

    What I really like about your personality is, that you are actually willing to change the workflow and adapt to learn how the software works. This is incredible amazing, as you give your thoughts too. I don't know any other TH-cam who does that. Most are just trying out an application or distro a few basic stuff and forget about it.
    And I am happy that you give Qtile a fair chance! I personally never want use a TWM without programming language configuration anymore.

    • @twb0109
      @twb0109 ปีที่แล้ว +1

      True, these long term trials are awesome

    • @folksurvival
      @folksurvival ปีที่แล้ว

      "This is incredible amazing"
      That is a big exaggeration.

  • @milohoffman274
    @milohoffman274 ปีที่แล้ว +15

    Qtile is FANTASTIC. A good tip is to use the new EzKey library, and key bindings are easier and shorter to setup in your config like: "M-w", or "M-S-r" etc. And what you call RULES are easily implemented by adding "matches" to your group workspace definitions, and then windows that match that wm_class etc will always start on that workspace. There is an example in the docs for Groups, that always starts firefox on a workspace.

    • @TDOLLA
      @TDOLLA 5 หลายเดือนก่อน

      hey thank for this tip!
      I just got a Qtile config up and going and playing some Qtile videos in the background. I just so happened to see your comment right as I was going to start remapping a bunch of the shortcut keys.
      thjs is exactly why when I am working on a project I tend to immerse myself in content that relates to the project. You end up picking up a lot of little tips and getting ideas.
      also I learned I need to spend way more time with the Qtile docs! It has great documentation that I have been ignoring basically

  • @omenworks
    @omenworks ปีที่แล้ว +3

    More content on Qtile please, especially for the absolute beginners. How to start playing with config, how to get transparency etc. Thank you!

  • @sambird7
    @sambird7 ปีที่แล้ว +7

    I'd love to see you take on the new hotness that is Hyprland. Wayland tiling window manager, it's most famous features are pretty much asthetic becuase it has really nice blur, rounded corners, gaps and animations. I personally turn most of those off because it is an awesome TWM on its own. To me, it is the best wayland twm right now.

  • @manwe_sulimo
    @manwe_sulimo ปีที่แล้ว +2

    I like your videos dude, you pour passion and work into them, thanks!

  • @tuffgniuz
    @tuffgniuz ปีที่แล้ว +7

    Yep. I've been using I3, dwm and qtile. All of them i've used for a long time, but qtile has become my favorite. It has a lot of built-in features and is easy to setup and configure, which I really enjoy. I've been using qtile for over a year now and don't see myself switching from it anytime soon.

    • @kelvinpina8815
      @kelvinpina8815 11 หลายเดือนก่อน

      What did you.liked qtile more above the others, I'm cosidering the 3 you mentioned

  • @_pathfinder_
    @_pathfinder_ ปีที่แล้ว +6

    Hey Matt, love your content! I also really love qtile and use it as my daily driver for years now.
    A note for the "put program X on workspace Y" thing: You can do this (but yes, it is kinda quirky): While constructing your Groups, you usually do something like "Group()". But this also can take other parameters (called "keyword arguments" in python which is kind of a special type of parameters to put it this way), with more settings for each workspace. For example, you can give "Group(, layout="mondtall")", to tell this group to start up with this layout. You also can define Group(, matches=[...]), and put in a list of matches, such as "Group("www", matches=[Match(wm_class=["Firefox", "LibreWolf"])])", which I use to tell qtile to always spawn my browsers on the "www" workspace. You can give other cool keyword arguments, such as "spawn": [] to tell qtile to spawn a specific program on this specific workspace/group on startup. This is what works awesome for me - no matter where you launch a Firefox instance, it will always pop up on the "www" group. You can go as creative as you want with everything that all the keyword arguments and the power of the "Match" class gives you. To start with, you can check DT's config, he at least configured the layouts for the groups this way.
    Another trick (to put this into your config in a more compact way, but you need to know a bit of python for this): You can define keyword arguments as a dictionaries in python, with is always the format of "key": value, enclosed in {}. For example: options = {"layout": "mondtall", "matches": [Match(wm_class=["Firefox", "LibreWolf"])] }, then "Group("www", **options)" will be the same thing as above (the "**" is for 'unrolling' the dict into parameters/keyword arguments). You can crunch this together by defining your names and options as a list of groups, with each being defined as a tuple of name and these options, for example: "group_settings = [("www", {"layout": "mondtall", "matches": [Match(wm_class=["Firefox", "LibreWolf"])] }), ("dev", {"layout": "mondwide"})]" etc. Then constructing the group list by "groups = [Group(name, **options) for name, options in group_settings]" (compact syntax for looping the tuple list form above).

    • @Ax4400
      @Ax4400 ปีที่แล้ว

      Wow than you.

  • @linuxdabbler
    @linuxdabbler ปีที่แล้ว

    Great video as always Matt. I have also revisited qtile recently and have been trying to live in it. Great minds think alike. lol

  • @archygonzalez3086
    @archygonzalez3086 ปีที่แล้ว

    Matt thanks a lot for sharing and I greatly like your content. Im no python expert I just know few things, but in your widgets section you end up a few with or without "," , I think the correct syntax would be that for the last line on each widget function goes without the "," in the end. But still if it works then it works, thanks for the content and know Im gathering some courage to trie out QTile, have a great day

  • @joaomachado9105
    @joaomachado9105 ปีที่แล้ว +1

    for using stin and stdout in python theres a simple way:
    subprocess.run( [ 'awk', 'length($0) > 5' ], stdout=subprocess.PIPE, input='foo
    foofoo
    '.encode('utf-8')).stdout.decode('utf-8')
    Notes:
    -if your script doesn't need input, you can just remove the input part
    -unless you want to work with bytes:
    -input needs to be encoded
    -output needs to be decoded
    - note that the shell command is basically inside an array, and each argument its in its own string
    -this function returns a string with the output of the command you gave it witch can be used directly to display in a text widget for example
    edit: you need to import 'subprocess' module

  • @rashie
    @rashie ปีที่แล้ว

    👍👍- Great content, as always. Gracias, senor Matt.

  • @nobloat5702
    @nobloat5702 ปีที่แล้ว

    Great video! By the way it's easy to add rules and it's done from within groups using "matches". Here is an example of a group definition where browsers are always on workspace 2. Ignore the Layout part if you want to use the same default one for every workspace
    groups = [
    Group('1', label="", layout="monadtall"),
    Group('2', label=" ", matches=[
    Match(wm_class='firefox'), Match(wm_class='brave'), Match(wm_class='qutebrowser')], layout="stack"),
    Group('3', label="", layout="columns"),
    Group('4', label="", layout="monadtall"),
    Group('5', label=" ", layout="monadtall"),
    Group('6', label=" ", layout="stack"),
    ]

  • @koljasha_nafman
    @koljasha_nafman ปีที่แล้ว +1

    Interesting, thanks. Qtile is currently my main wm. And I really like him. I am absolutely sure that I need to take someone's config or default config, something change, something add, something del, something write myself. And then this file will become my config, but work on it will continue and continue.... not the limit of perfection)) If you are interested, you can view my config by nick, there are all the configs that I use.

  • @itildude
    @itildude ปีที่แล้ว +2

    I absolutely love Qtile. It solid, fast, and flexible.

  • @burpsan
    @burpsan ปีที่แล้ว +1

    Thanks for your thoughts! Personally, I don't have any issues with the workspaces and screens/monitors. It may be that I don't understand your concern on that. The only time the workspaces switch screens (trade places) is when I'm on a screen (example main) with a workspace(example a) and I hit the keybinding of the workspace(example b) that is on the other screen (example secondary screen). It just brings the other workspace(b) to the screen(main) I'm on ... in other words the workspaces trade places on the screens. It's become second nature to me, so they only switch when I want and I'm able to use all of my screens extensively. Plus, it is often quite advantageous as my main screen is much larger than the others;' therefore, I intentionally make them trade places sometimes. Anyway, that's my experience. Thanks Matt!

    • @TheLinuxCast
      @TheLinuxCast  ปีที่แล้ว +2

      I think that it's just that I'm not used to the workspaces moving to other monitors. On i3, they stay where they are assigned. Always.

  • @denizkendirci
    @denizkendirci ปีที่แล้ว +1

    i tried most of tiling and floating wms and settled in ratpoison and dwm. and i barely configure them, i use them "almost" out of box. i just change couple of keybindings, that's all. i didn't like qtile, xmonad etc, they seemed too complicated to me, i can use bspwm of that bunch, but others... they are a hussle to me.
    my ratpoisonrc consists of 3 lines to start rpws, nitrogen and picom, 1 line to change escape key to Super_L, 5 lines to add 5 workspaces, and 2 line to add keybindings for alacritty and rofi.
    11 lines of config in total. but if i use wm like qtile, i have to do so much configuration before i end up with something i can use.

  • @Wampa842
    @Wampa842 ปีที่แล้ว

    Group (i.e. workspace) names and their respective keybindings are completely independent, it's just that Qtile's default config uses an algorithm that generates keybindings from the groups' names. For example, my "media", "web", and "game" groups are manually bound to mod+(ö, ü, ó).

  • @Ax4400
    @Ax4400 ปีที่แล้ว

    Excellent QTile video, thank you! Have you seen the i3 w/Light Mate Bar only? I'm thinking of moving to Garuda i3wm. How does garuda QTile differ from i3wm? The idea of being able to run different apps in ' seprate frames or work spaces on the same screen blows me away', am I understanding that right?

  • @Blessed2bFresh
    @Blessed2bFresh ปีที่แล้ว +1

    damn algorithm. just started taking a course in python ystrdy AND started using qtile

  • @trollerbladdering
    @trollerbladdering ปีที่แล้ว

    Qtile made me give up running a 34" ultra wide gaming monitor with a 27" 4K monitor over top for media.... and now I just run a large 43" 4K gaming display. I don't miss multi monitor setups at all.

  • @moistness482
    @moistness482 ปีที่แล้ว

    Python is an interpreted language, basically meaning that it is compiled at runtime. This is what makes python ingerently slower than more traditional languages. However, much of the speed still depends on actual code, and python has a lot of built in functionality that is more optimised than doing the same thing manually.

  • @openbabel
    @openbabel ปีที่แล้ว +1

    why cant you run video calling in terminals such as Qtile?

  • @sentient_thumbnail
    @sentient_thumbnail ปีที่แล้ว

    i'm on my 3rd qtile day, otherwise fresh to arch/python specifically and linux in general, and i'm stumped by something that should be a simple fix - centering text in the active-window widget in the middle (similar to how polybar does it). the only solution i've come across is adding spacers to both ends of the widget, which seems a bit hacky(-ier than it should be). any py pros or qtile quommandos have a more direct/logical idea for this?

  • @bosmanka
    @bosmanka ปีที่แล้ว

    I have kde, openbox, i3, qtile and xmonad running on tumbleweed, Ubuntu and fedora. My favorite is xmonad, with qtile on second place. Xmonad is just faster and even more configurable.

  • @nghiratdeptrai
    @nghiratdeptrai ปีที่แล้ว

    Are you running Qtile on X11 or Wayland? Have been enjoy watching your channel for a while, thanks for all the good contents

    • @TheLinuxCast
      @TheLinuxCast  ปีที่แล้ว +1

      X11. Haven't tried the Wayland version yet

  • @YoelaOlson
    @YoelaOlson 3 หลายเดือนก่อน

    "... it's more complicated than Polybar in terms of configuration."
    Huh, maybe it's because I'm a developer, and I've used Python before, but Qtile's default bar config seems easier for me to config lol. Or.... I'm just weird 😅 love your videos!

  • @leoc1fer
    @leoc1fer ปีที่แล้ว

    How did you configure your firefox that way?

    • @TheLinuxCast
      @TheLinuxCast  ปีที่แล้ว

      th-cam.com/video/BmchttxZ85w/w-d-xo.html

    • @boogerman69
      @boogerman69 7 หลายเดือนก่อน

      @@TheLinuxCast is there an updated guide on this? the video is unavailable :(

  • @pikaa-si9ie
    @pikaa-si9ie 11 หลายเดือนก่อน

    Hey bro, do you mind sharing your config file?

    • @TheLinuxCast
      @TheLinuxCast  11 หลายเดือนก่อน

      It's on GitLab. Link is in the description

  • @darkobul1
    @darkobul1 ปีที่แล้ว

    I got laptop with win11 and installed linux what a shame. I tried for 4 days to fix touchpad have changed nunerous settings downgrade and upgraded packagea and kernels and cant make i2c touchpad to work.
    Incredible... and I see so many laptops have such issues which is a shame as everything else works and most simple thing doesnt.
    If you lack ideas for video and are able to shread more light of this kind of bizzare problems with linux. I mean i2c should be something simple and not such a deal breaker.

  • @Little-bird-told-me
    @Little-bird-told-me 11 หลายเดือนก่อน

    This exactly why i will never use Qtile

  • @lucastavares3518
    @lucastavares3518 ปีที่แล้ว

    Now you are having a taste of the second monitor is useless argument

  • @zeocamo
    @zeocamo ปีที่แล้ว +1

    i am a developer, and let me tell you Python is SLOW AF, it use the last 10 years fight the python 2/3 stuff and has not focus on Speed like any other langauges, you got C, c++ and rust as the fast langauges and then you got anything else at half the speed of C, and then we got python on around x27 as slow as C.
    Python is a easy langauge to learn and a lot of people love it because they feel to st*pid to learn a real langauge, but with that said, for stuff like this where the call into xorg cost 1-2ms for any other language it is 20-27ms for some of the call for python, and no one will see that.

    • @MattiaProcopio
      @MattiaProcopio ปีที่แล้ว

      just saying, Python has focused on improving performance, every recent release adds also a decent amount of optimisation, they are sailing at an average of ~10% per release

    • @cprogrck
      @cprogrck ปีที่แล้ว

      If you need extra performance with Python it's really easy to write a c++ library.

    • @ruroruro
      @ruroruro ปีที่แล้ว

      That's because you're not supposed to write the performance critical parts of your code in Python. You are supposed to write it in C or Cython or whatever and then expose the resulting API to Python. That way you can keep the performance benefits of low level languages and also get the flexibility and quality of life features of a dynamically typed high level language.

    • @zeocamo
      @zeocamo ปีที่แล้ว

      @@ruroruro so you are saying if i want pancakes but it got too much suger, so eat pizza, no i wanted pancakes.
      the people that write python do so because they are less "gifted" then others, or they used Rust and got the best of both worlds.
      and also if we take JS it is close to how easy it is dynamically high lvl lang. it is is 14x faster and some test say 80x faster then python.
      so this is a non-answer, if they need to write C to get the performance then they are not using Python and it was Python they wanted to uses.
      so no the python team just need to get working on making python just close to C# or Java, they are super slow too, but still way way faster then Python.

    • @ruroruro
      @ruroruro ปีที่แล้ว +2

      @@zeocamo your analogy doesn't work. Every tool has a "correct" way to use it. If you use Python in such a way that the Python runtime is a performance bottleneck (and you care about performance), then you are using Python wrong.
      If you use an electric drill by manually turning the router bit with your hands and then complain that it's not working - then it's entirely your fault. And it doesn't matter how much you want to use it without electricity or something else.
      > the people that write python do so because they are less "gifted" then others
      Ah yes, "I don't like/understand a thing, so everyone who uses that thing must be stupid". Sure thing, buddy. Also, do you actually have any statistics to back up your claims?
      > if they need to write C to get the performance then they are not using Python
      I think, you misunderstand what I was trying to say. The role of Python in a modern programming stack is to "orchestrate" lower level code.
      I am not saying, that you should write C code **instead** of writing Python, I am saying, that you should write only the performance critical part in C and do all the "finicky" high level implementation in Python (calling into your efficient C implementation when needed).
      Or, more realistically, you can probably express the performance critical task in terms of a more general task, that already has an open source implementation available (maybe even with Python bindings). In that case, you should definitely use that one instead of wasting your time reimplementing it.
      > so no the python team just need to get working on making python just close to C# or Java, they are super slow too, but still way way faster then Python.
      In my experience, idiomatic Java is actually slower than idiomatic Python in most practical applications. No idea about C#.