Running Qtile as a Wayland Compositor

Some functionality may not yet be implemented in the Wayland compositor. Please see the discussion here to see the current state of development.

Backend-Specific Configuration

If you want your config file to work with different backends but want some options set differently per backend, you can check the name of the current backend in your config as follows:

from libqtile import qtile

if == "x11":
    term = "urxvt"
elif == "wayland":
    term = "foot"

Keyboard Configuration

Keyboard management is done using xkbcommon via the Python bindings. xkbcommon's initial configuration can be set using environmental variables; see their docs for more information. The 5 XKB_DEFAULT_X environmental variables have corresponding settings in X11's keyboard configuration, so if you have these defined already simply copy their values into these variables, otherwise see X11's helpful XKB guide to see the syntax for these settings. Simply set these variables before starting Qtile and the initial keyboard state will match these settings.

If you want to change keyboard configuration during runtime, you can use the core's set_keymap command (see Core Commands below).

Running X11-Only Programs

Qtile does not support XWayland directly and there are no plans to implement XWayland support. Instead, the recommended way to run any programs that do not support Wayland themselves is to run them inside the cage Wayland compositor, which will contain the program inside a window that does support XWayland. Otherwise, you could find alternatives that support Wayland directly.

Core Commands


class libqtile.backend.wayland.core.Core[source]
cmd_change_vt(vt: int) bool[source]

Change virtual terminal to that specified

cmd_commands() List[str]

Returns a list of possible commands for this object

Used by __qsh__ for command completion and online help

cmd_doc(name) str

Returns the documentation for a specified command name

Used by __qsh__ to provide online help.

cmd_eval(code: str) Tuple[bool, Optional[str]]

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.

cmd_function(function, *args, **kwargs) None

Call a function with current object as argument

cmd_info() Dict[source]

Get basic information about the running backend.

cmd_items(name) Tuple[bool, Optional[List[Union[str, int]]]]

Returns a list of contained items for the specified name

Used by __qsh__ to allow navigation of the object graph.

cmd_set_keymap(layout: Optional[str] = None, options: Optional[str] = None, variant: Optional[str] = None) None[source]

Set the keymap for the current keyboard.

The options correspond to xkbcommon configuration environmental variables and if not specified are taken from the environment. Acceptable values are strings identical to those accepted by the env variables.