Skip to content

Matrix

Matrix(**config)

Bases: _SimpleLayoutBase

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.

Methods:

  • add –

    Increase number of columns.

  • add_client –

    Add client to Layout.

  • add_defaults –

    Add defaults to this object, overwriting any which already exist.

  • blur –

    Called whenever focus is gone from this layout.

  • clone –

    Duplicate a layout.

  • command –

    Return the command with the given name.

  • commands –

    Returns a list of possible commands for this object.

  • configure –

    Configure the layout.

  • delete –

    Decrease number of columns.

  • doc –

    Returns the documentation for a specified command name.

  • down –

    Switch to the next window in current column.

  • eval –

    Evaluates code in the same context as this function.

  • focus –

    Called whenever the focus changes.

  • focus_first –

    Called when the first client in Layout shall be focused.

  • focus_last –

    Called when the last client in Layout shall be focused.

  • focus_next –

    Called when the next client in Layout shall be focused.

  • focus_previous –

    Called when the previous client in Layout shall be focused.

  • function –

    Call a function with current object as argument.

  • get_column –

    Get all clients in given column.

  • get_row –

    Get all clients in given row.

  • hide –

    Called when layout is being hidden.

  • horizontal_traversal –

    Internal method for determining left or right client.

  • info –

    Returns a dictionary of layout information.

  • items –

    Build a list of contained items for the given item class.

  • left –

    Switch to the next window on current row.

  • remove –

    Called whenever a window is removed from the group.

  • right –

    Switch to the next window on current row.

  • select –

    Return a selected object.

  • show –

    Called when layout is being shown.

  • swap –

    Swap the two given clients c1 and c2.

  • up –

    Switch to the previous window in current column.

  • vertical_traversal –

    Internal method for determining above or below client.

Attributes:

  • column –

    Calc column index of current client.

  • group (_Group) –

    Returns the group this layout is attached to.

  • row –

    Calc row index of current client.

  • rows –

    Calc current number of rows, basd on number of clients and columns.

column property

column

Calc column index of current client.

group property

group: _Group

Returns the group this layout is attached to.

Layouts start out unattached, and are attached when the group is configured and each layout is cloned for every group.

row property

row

Calc row index of current client.

rows property

rows

Calc current number of rows, basd on number of clients and columns.

add

add()

Increase number of columns.

add_client

add_client(client: Window) -> None

Add client to Layout. Note that for Matrix the clients are appended at end of list. If needed a new row in matrix is created.

add_defaults

add_defaults(defaults)

Add defaults to this object, overwriting any which already exist.

blur

blur() -> None

Called whenever focus is gone from this layout.

clone

clone(group: _Group) -> Self

Duplicate a layout.

Make a copy of this layout. This is done to provide each group with a unique instance of every layout.

Parameters:

  • group (_Group) –

    Group to attach new layout instance to.

command

command(name: str) -> Callable | None

Return the command with the given name.

Parameters:

  • name (str) –

    The name of the command to fetch.

commands

commands() -> list[str]

Returns a list of possible commands for this object.

Used by qsh for command completion and online help

configure

configure(client: Window, screen_rect: ScreenRect) -> None

Configure the layout.

This method should:

  • Configure the dimensions and borders of a window using the .place() method.
  • Call either .hide() or .unhide() on the window.

delete

delete()

Decrease number of columns.

doc

doc(name) -> str

Returns the documentation for a specified command name.

Used by qsh to provide online help.

down

down()

Switch to the next window in current column.

eval

eval(code: str) -> tuple[bool, str | None]

Evaluates code in the same context as this function.

Return value is tuple (success, result), success being a boolean and result being a string representing the return value of eval, or None if exec was used instead.

focus

focus(client: Window) -> None

Called whenever the focus changes.

focus_first

focus_first() -> Window | None

Called when the first client in Layout shall be focused.

This method should:

  • Return the first client in Layout, if any.
  • Not focus the client itself, this is done by caller.

focus_last

focus_last() -> Window | None

Called when the last client in Layout shall be focused.

This method should:

  • Return the last client in Layout, if any.
  • Not focus the client itself, this is done by caller.

focus_next

focus_next(window: Window) -> Window | None

Called when the next client in Layout shall be focused.

This method should:

  • Return the next client in Layout, if any.
  • Return None if the next client would be the first client.
  • Not focus the client itself, this is done by caller.

Do not implement a full cycle here, because the Groups cycling relies on returning None here if the end of Layout is hit, such that Floating clients are included in cycle.

Parameters:

  • win (Window) –

    The currently focused client.

focus_previous

focus_previous(window: Window) -> Window | None

Called when the previous client in Layout shall be focused.

This method should:

  • Return the previous client in Layout, if any.
  • Return None if the previous client would be the last client.
  • Not focus the client itself, this is done by caller.

Do not implement a full cycle here, because the Groups cycling relies on returning None here if the end of Layout is hit, such that Floating clients are included in cycle.

Parameters:

  • win (Window) –

    The currently focused client.

function

function(function, *args, **kwargs) -> None

Call a function with current object as argument.

get_column

get_column(column)

Get all clients in given column.

get_row

get_row(row)

Get all clients in given row.

hide

hide() -> None

Called when layout is being hidden.

horizontal_traversal

horizontal_traversal(direction)

Internal method for determining left or right client. Negative direction is to left.

info

info() -> dict[str, Any]

Returns a dictionary of layout information.

items

items(name: str) -> tuple[bool, list[str | int] | None]

Build a list of contained items for the given item class.

Exposing this allows qsh to navigate the command graph.

Returns a tuple (root, items) for the specified item class, where:

root: True if this class accepts a "naked" specification without an
item seletion (e.g. "layout" defaults to current layout), and False
if it does not (e.g. no default "widget").

items: a list of contained items

left

left()

Switch to the next window on current row.

remove

remove(client: Window) -> Window | None

Called whenever a window is removed from the group.

Called whether the layout is current or not. The layout should just de-register the window from its data structures, without unmapping the window.

Returns the "next" window that should gain focus or None.

right

right()

Switch to the next window on current row.

select

select(selectors: list[SelectorType]) -> CommandObject

Return a selected object.

Recursively finds an object specified by a list of (name, selector) items.

Raises SelectError if the object does not exist.

show

show(screen_rect: ScreenRect) -> None

Called when layout is being shown.

swap

swap(window1: Window, window2: Window) -> None

Swap the two given clients c1 and c2.

up

up()

Switch to the previous window in current column.

vertical_traversal

vertical_traversal(direction)

Internal method for determining above or below client. Negative direction is to top.