Built-in Layouts¶
-
class
libqtile.layout.floating.
Floating
(float_rules=None, **config)[source]¶ Floating layout, which does nothing with windows but handles focus order
key default description border_focus
'#0000ff'
Border colour for the focused window. border_normal
'#000000'
Border colour for un-focused winows. border_width
1
Border width. max_border_width
0
Border width for maximize. fullscreen_border_width
0
Border width for fullscreen. name
'floating'
Name of this layout. auto_float_types
set(['dialog', 'notification', 'splash', 'toolbar', 'utility'])
default wm types to automatically float -
__init__
(float_rules=None, **config)[source]¶ If you have certain apps that you always want to float you can provide
float_rules
to do so.float_rules
is a list of dictionaries containing:{wname: WM_NAME, wmclass: WM_CLASS role: WM_WINDOW_ROLE}
The keys must be specified as above. You only need one, but you need to provide the value for it. When a new window is opened it’s
match
method is called with each of these rules. If one matches, the window will float. The following will float gimp and skype:float_rules=[dict(wmclass=”skype”), dict(wmclass=”gimp”)]
Specify these in the
floating_layout
in your config.
-
-
class
libqtile.layout.matrix.
Matrix
(columns=2, **config)[source]¶ This layout divides the screen into a matrix of equally sized cells and places one window in each cell. The number of columns is configurable and can also be changed interactively.
key default description border_focus
'#0000ff'
Border colour for the focused window. border_normal
'#000000'
Border colour for un-focused winows. border_width
1
Border width. name
'matrix'
Name of this layout. margin
0
Margin of the layout
-
class
libqtile.layout.max.
Max
(**config)[source]¶ A simple layout that only displays one window at a time, filling the screen. This is suitable for use on laptops and other devices with small screens. Conceptually, the windows are managed as a stack, with commands to switch to next and previous windows in the stack.
key default description name
'max'
Name of this layout.
-
class
libqtile.layout.xmonad.
MonadTall
(**config)[source]¶ This layout attempts to emulate the behavior of XMonad’s default tiling scheme.
Main-Pane:
A main pane that contains a single window takes up a vertical portion of the screen based on the ratio setting. This ratio can be adjusted with the
cmd_grow
andcmd_shrink
methods while the main pane is in focus.--------------------- | | | | | | | | | | | | | | | | | | ---------------------
Using the
cmd_flip
method will switch which horizontal side the main pane will occupy. The main pane is considered the “top” of the stack.--------------------- | | | | | | | | | | | | | | | | | | ---------------------
Secondary-panes:
Occupying the rest of the screen are one or more secondary panes. The secondary panes will share the vertical space of the screen however they can be resized at will with the
cmd_grow
andcmd_shrink
methods. The other secondary panes will adjust their sizes to smoothly fill all of the space.--------------------- --------------------- | | | | |______| | |______| | | | | | | | | | | |______| | | | | | | | |______| | | | | | | --------------------- ---------------------
Panes can be moved with the
cmd_shuffle_up
andcmd_shuffle_down
methods. As mentioned the main pane is considered the top of the stack; moving up is counter-clockwise and moving down is clockwise.The opposite is true if the layout is “flipped”.
--------------------- --------------------- | | 2 | | 2 | | | |______| |_______| | | | 3 | | 3 | | | 1 |______| |_______| 1 | | | 4 | | 4 | | | | | | | | --------------------- ---------------------
Normalizing:
To restore all client windows to their default size ratios simply use the
cmd_normalize
method.Maximizing:
To toggle a client window between its minimum and maximum sizes simply use the
cmd_maximize
on a focused client.Suggested Bindings:
Key([modkey], "h", lazy.layout.left()), Key([modkey], "l", lazy.layout.right()), Key([modkey], "j", lazy.layout.down()), Key([modkey], "k", lazy.layout.up()), Key([modkey, "shift"], "h", lazy.layout.swap_left()), Key([modkey, "shift"], "l", lazy.layout.swap_right()), Key([modkey, "shift"], "j", lazy.layout.shuffle_down()), Key([modkey, "shift"], "k", lazy.layout.shuffle_up()), Key([modkey], "i", lazy.layout.grow()), Key([modkey], "m", lazy.layout.shrink()), Key([modkey], "n", lazy.layout.normalize()), Key([modkey], "o", lazy.layout.maximize()), Key([modkey, "shift"], "space", lazy.layout.flip()),
key default description border_focus
'#ff0000'
Border colour for the focused window. border_normal
'#000000'
Border colour for un-focused winows. border_width
2
Border width. name
'xmonad-tall'
Name of this layout. margin
0
Margin of the layout ratio
0.5
The percent of the screen-space the master pane should occupy by default. align
0
Which side master plane will be placed (one of MonadTall._left
orMonadTall._right
)change_ratio
0.05
Resize ratio change_size
20
Resize change in pixels
-
class
libqtile.layout.ratiotile.
RatioTile
(**config)[source]¶ Tries to tile all windows in the width/height ratio passed in
key default description border_focus
'#0000ff'
Border colour for the focused window. border_normal
'#000000'
Border colour for un-focused winows. border_width
1
Border width. name
'ratiotile'
Name of this layout. margin
0
Margin of the layout ratio
1.618
Ratio of the tiles ratio_increment
0.1
Amount to inrement per ratio increment fancy
False
Use a different method to calculate window sizes.
-
class
libqtile.layout.slice.
Slice
(side, width, **config)[source]¶ Slice layout
This layout cuts piece of screen and places a single window on that piece, and delegates other window placement to other layout
key default description width
256
Slice width side
'left'
Side of the slice (left, right, top, bottom) name
'max'
Name of this layout. wname
None
WM_NAME to match wmclass
None
WM_CLASS to match role
None
WM_WINDOW_ROLE to match fallback
<libqtile.layout.max.Max object at 0x7f4f855673d0>
Fallback layout
-
class
libqtile.layout.stack.
Stack
(**config)[source]¶ The stack layout divides the screen horizontally into a set of stacks. Commands allow you to switch between stacks, to next and previous windows within a stack, and to split a stack to show all windows in the stack, or unsplit it to show only the current window. At the moment, this is the most mature and flexible layout in Qtile.
key default description border_focus
'#0000ff'
Border colour for the focused window. border_normal
'#000000'
Border colour for un-focused winows. border_width
1
Border width. name
'stack'
Name of this layout. autosplit
False
Auto split all new stacks. num_stacks
2
Number of stacks. fair
False
Add new windows to the stacks in a round robin way. margin
0
Margin of the layout
-
class
libqtile.layout.tile.
Tile
(ratio=0.618, masterWindows=1, expand=True, ratio_increment=0.05, add_on_top=True, shift_windows=False, master_match=None, **config)[source]¶ key default description border_focus
'#0000ff'
Border colour for the focused window. border_normal
'#000000'
Border colour for un-focused winows. border_width
1
Border width. name
'tile'
Name of this layout. margin
0
Margin of the layout
-
class
libqtile.layout.tree.
TreeTab
(**config)[source]¶ Tree Tab Layout
This layout works just like Max but displays tree of the windows at the left border of the screen, which allows you to overview all opened windows. It’s designed to work with
uzbl-browser
but works with other windows too.key default description bg_color
'000000'
Background color of tabs active_bg
'000080'
Background color of active tab active_fg
'ffffff'
Foreground color of active tab inactive_bg
'606060'
Background color of inactive tab inactive_fg
'ffffff'
Foreground color of inactive tab margin_left
6
Left margin of tab panel margin_y
6
Vertical margin of tab panel padding_left
6
Left padding for tabs padding_x
6
Left padding for tab label padding_y
2
Top padding for tab label border_width
2
Width of the border vspace
2
Space between tabs level_shift
8
Shift for children tabs font
'Arial'
Font fontsize
14
Font pixel size. fontshadow
None
font shadow color, default is None (no shadow) section_fontsize
11
Font pixel size of section label section_fg
'ffffff'
Color of section label section_top
4
Top margin of section label section_bottom
6
Bottom margin of section section_padding
4
Bottom of magin section label section_left
4
Left margin of section label panel_width
150
Width of the left panel sections
['Default']
Foreground color of inactive tab name
'treetab'
Name of this layout. previous_on_rm
False
Focus previous window on close instead of first.
-
class
libqtile.layout.verticaltile.
VerticalTile
(**config)[source]¶ VerticalTile implements a tiling layout that works nice on vertically mounted monitors. The available height gets divided by the number of panes, if no pane is maximized. If one pane has been maximized, the available height gets split in master- and secondary area. The maximized pane (master pane) gets the full height of the master area and the other panes (secondary panes) share the remaining space. The master area (at default 75%) can grow and shrink via keybindings.
----------------- ----------------- --- | | | | | | 1 | <-- Panes | | | | | | | | | |---------------| | | | | | | | | | | | 2 | <-----+ | 1 | | Master Area | | | | | | |---------------| | | | | | | | | | | | 3 | <-----+ | | | | | | | | | |---------------| | |---------------| --- | | | | 2 | | | 4 | <-----+ |---------------| | Secondary Area | | | 3 | | ----------------- ----------------- ---
Normal behavior. No One maximized pane in the master area maximized pane. No and two secondary panes in the specific areas. secondary area.
----------------------------------- In some cases VerticalTile can be | | useful on horizontal mounted | 1 | monitors two. | | For example if you want to have a |---------------------------------| webbrowser and a shell below it. | | | 2 | | | -----------------------------------
Suggested keybindings:
Key([modkey], 'j', lazy.layout.down()), Key([modkey], 'k', lazy.layout.up()), Key([modkey], 'Tab', lazy.layout.next()), Key([modkey, 'shift'], 'Tab', lazy.layout.next()), Key([modkey, 'shift'], 'j', lazy.layout.shuffle_down()), Key([modkey, 'shift'], 'k', lazy.layout.shuffle_up()), Key([modkey], 'm', lazy.layout.maximize()), Key([modkey], 'n', lazy.layout.normalize()),
key default description border_focus
'#FF0000'
Border color for the focused window. border_normal
'#FFFFFF'
Border color for un-focused winows. border_width
1
Border width. margin
0
Border margin. name
'VerticalTile'
Name of this layout.
-
class
libqtile.layout.zoomy.
Zoomy
(**config)[source]¶ A layout with single active windows, and few other previews at the right
key default description columnwidth
150
Width of the right column property_name
'ZOOM'
Property to set on zoomed window property_small
'0.1'
Property value to set on zoomed window property_big
'1.0'
Property value to set on normal window margin
0
Margin of the layout