Configuration of Qtile in General and Screens

I am new Qtile and tried It out, because it is said, that the documentation is good and because it’s written in Python, which I use everyday.

Besides having a tiling manager I, want the bar to almost behave as on a normal Desktop.
So I added the following widgets to the bar:

  • PulseVolume
  • CPU
  • Wlan
  • Bluetooth
  • Battery

The problem are:

  • widget.PulseVolume(background="#2f343f") always shows wrong values.
  • widget.CPU(fmt=f"CPU {load_percent:4.1f} %",background="#2f343f", foreground="#9bd689") does nor use the trailing white spaces I hoped for, which makes the widget change it width.
  • Bluetooth and Wlan do not show anything.
    At least Battery seams to work as expected.

My aim for Bluetooth widget is to start a Bluetooth control gui, instead of using bluetoothctl (all the time^^), and something similar for wlan to start a gui that allows to connect to a network and VPN.

Besides the problems with the Bar I have some additional problem with Qtile. How do I auto start fcitx on Qtile.
The documentation states i3 and Sway users should add “exec --start-up-id fcitx -d” in the configuration files. What should I do on Qtile?

The next questions how to use an second screen on a laptop properly. The problem is: with xrandr I got the second screen working, but:

  • only when the laptop was started with the screen plugged in
  • no bar on the second screen
  • on a new start I to set up xrandr again
  • when I unplug the second monitor the mouse can be lost?
  • How do I set up to work automatically and that I can plugin the second monitor while the laptop is on?

Most function keys on the laptop do work, but I can not change the brightness of the display, which is Important for a laptop (saving energy).

So to sum it up, I do need to advice with the brightness setting, a second monitor config, autostart of fcitx and have some question about the QTile bar.

solved all problems:
wlan - nm-applet
bluetooth - bluetooth-applet
PulseVolumn & CPU - had a look at the implementation and changed the default example.


Where did you end up putting the code (like which .py file)

given that you have the standard files as in the Qtile installation of EndavourOS:

to the


I added:

blueman-applet & disown
nm-applet & disown

For /home/user/.config/qtile/modules/

I added/changed?:

widget.Clock(format="%D %H:%M", background=....)
widget.CPU(format="CPU {load_percentage:04} %", ...)
widget.Battery(format="{char} {percent:2.0%} {hour :d}:min{02d}"...)

and in I added keys /home/user/.config/qtile/modules/

added XF86MonBrightnessUp and the variant with Down together with brightnessctl.

and in /home/user/.config/qtile/modules/ I switched from MonadTall and Max to Columns and Max. For good usage of Columns changed/added some extra keys.

1 Like

Whenever I end up adding a module the config fallsback to the default lol. I’m actually so confused where do I start putting this stuff in? I have the default config, only thing I’ve changed is a active windows on workspace tray and changed the terminal to konsole

BTW, how did you solve the screen problem, seems, mine is similar

About the second scheme. My current state is: That I a) have to connect the second monitor before the start. Addtionally, b) created two Screen Objects (the second is not used, when thre is no second monitor). Most widged (not all) can be added to a common list and add this list to the Screen. The one Exception was the WIndowName widget. It is best, when both Screen object have an Seperate WindowName object. In the Qtile Version I used than, the width of the second bar, was set the number of pixels used for the other monitor.

I would also that the background here and not with feh!