screens configuration variable is where the physical screens, their
bars, and the
widgets contained within the bars are defined.
See Built-in Widgets for a listing of available widgets.
Tying together screens, bars and widgets, we get something like this:
from libqtile.config import Screen from libqtile import bar, widget screens = [ Screen( bottom=bar.Bar([ widget.GroupBox(), widget.WindowName() ], 30), ), Screen( bottom=bar.Bar([ widget.GroupBox(), widget.WindowName() ], 30), ) ]
Bars support both solid background colors and gradients by supplying a list of
colors that make up a linear gradient. For example,
background="#000000") will give you a black back ground (the default), while
bar.Bar(..., background=["#000000", "#FFFFFF"]) will give you a
background that fades from black to white.
instead of using the variable screens the variable fake_screens can be used to set split a physical monitor into multiple screens. They can be used like this:
from libqtile.config import Screen from libqtile import bar, widget # screens look like this # 600 300 # |-------------|-----| # | 480| |580 # | A | B | # |----------|--| | # | 400|--|-----| # | C | |400 # |----------| D | # 500 |--------| # 400 # # Notice there is a hole in the middle # also D goes down below the others fake_screens = [ Screen( bottom=bar.Bar( [ widget.Prompt(), widget.Sep(), widget.WindowName(), widget.Sep(), widget.Systray(), widget.Sep(), widget.Clock(format='%H:%M:%S %d.%m.%Y') ], 24, background="#555555" ), x=0, y=0, width=600, height=480 ), Screen( top=bar.Bar( [ widget.GroupBox(), widget.WindowName(), widget.Clock() ], 30, ), x=600, y=0, width=300, height=580 ), Screen( top=bar.Bar( [ widget.GroupBox(), widget.WindowName(), widget.Clock() ], 30, ), x=0, y=480, width=500, height=400 ), Screen( top=bar.Bar( [ widget.GroupBox(), widget.WindowName(), widget.Clock() ], 30, ), x=500, y=580, width=400, height=400 ), ]
There might be some reasons to use third-party bars. For instance you can come from another window manager and you have already configured dzen2, xmobar, or something else. They definitely can be used with Qtile too. In fact, any additional configurations aren’t needed. Just run the bar and qtile will adapt.
Screen(top=None, bottom=None, left=None, right=None, wallpaper=None, wallpaper_mode=None, x=None, y=None, width=None, height=None)¶
A physical screen, and its associated paraphernalia.
Define a screen with a given set of Bars of a specific geometry. Note that bar.Bar objects can only be placed at the top or the bottom of the screen (bar.Gap objects can be placed anywhere). Also,
heightaren’t specified usually unless you are using ‘fake screens’.
wallpaperparameter, if given, should be a path to an image file. How this image is painted to the screen is specified by the
wallpaper_modeparameter. By default, the image will be placed at the screens origin and retain its own dimensions. If the mode is ‘fill’, the image will be centred on the screen and resized to fill it. If the mode is ‘stretch’, the image is stretched to fit all of it into the screen.
- top: Gap/Bar object, or None.
- bottom: Gap/Bar object, or None.
- left: Gap/Bar object, or None.
- right: Gap/Bar object, or None.
- wallpaper: Dict, or None.
- x : int or None
- y : int or None
- width : int or None
- height : int or None
Bar(widgets, size, **config)¶
A bar, which can contain widgets
- widgets :
A list of widget objects.
- size :
The “thickness” of the bar, i.e. the height of a horizontal bar, or the width of a vertical bar.
key default description
‘Space around bar as int or list of ints [N E S W].’
‘Bar window opacity.’
A gap placed along one of the edges of the screen
If a gap has been defined, Qtile will avoid covering it with windows. The most probable reason for configuring a gap is to make space for a third-party bar or other static window.
- size :
The “thickness” of the gap, i.e. the height of a horizontal gap, or the width of a vertical gap.