I finally found the solution. Here is the content of my groups.py:
# Imports
from libqtile.config import Key, Group, Match
from libqtile.command import lazy
from .keys import keys, mod
# Defining groups
bindings = ["KP_End", "KP_Down", "KP_Page_Down", "KP_Left", "KP_Begin", "KP_Right", "KP_Home", "KP_Up", "KP_Page_Up"]
groups = [
Group("1"),
Group("2", matches=[Match(wm_class=["emacs"])]),
Group("3", matches=[Match(wm_class=["chromium"])]),
Group("4", matches=[Match(wm_class=["keepassxc"])]),
Group("5", matches=[Match(wm_class=["telegram-desktop"])]),
Group("6"),
Group("7"),
Group("8"),
Group("9"),
]
# Switch to specific group
for i, group in enumerate(groups):
keys.extend([
Key([mod],
bindings[i],
lazy.group[group.name].toscreen()),
Key([mod, "shift"],
bindings[i],
lazy.window.togroup(group.name, switch_group=True)),
])
# Switch previous/next group
keys.extend([
Key([mod], "Right",
lazy.screen.next_group(),
desc="Switch to next group"),
Key([mod], "Next",
lazy.screen.next_group(),
desc="Switch to next group"),
Key([mod], "Tab",
lazy.screen.next_group(),
desc="Switch to next group"),
Key([mod], "Left",
lazy.screen.prev_group(),
desc="Switch to previous group"),
Key([mod], "Prior",
lazy.screen.prev_group(),
desc="Switch to previous group"),
Key([mod, "shift" ], "Tab",
lazy.screen.prev_group(),
desc="Switch to previous group"),
])