import re from libqtile.lazy import lazy from libqtile.config import Group, EzKey as Key, Match, DropDown, ScratchPad from modules.keys import keybinds group_screen_map = { "1": 1, "2": 1, "3": 1, "4": 0, "5": 0, "6": 0, "7": 2, "8": 2, "9": 2, "f1": 0, "f2": 2, "f3": 0, "f4": 2, "f5": 2, "f6": 2, "f7": 0, "f8": 1, "f9": 1, "f10": 1, "f11": 1, "f12": 1, } groups = [ Group( name="0", label="󰓓", matches=[ Match(wm_class=re.compile(r"^(steam)")), Match(wm_class=re.compile(r"^(Minecraft*)")), ], ), Group(name="1", label="󰲡"), Group(name="2", label="󰲣"), Group(name="3", label="󰲥"), Group(name="4", label="󰲧"), Group(name="5", label="󰲩"), Group(name="6", label="󰲫"), Group(name="7", label="󰲭"), Group(name="8", label="󰲯"), Group(name="9", label="󰲱"), # Groups on function-keys Group( name="f1", label="", matches=[ Match(wm_class=re.compile(r"^(firefox)$")), ], ), Group(name="f2", label="", matches=[Match(wm_class="discord")]), Group( name="f3", label="", matches=[Match(wm_class=re.compile(r"^(joplin)$"))], ), Group( name="f4", label=" ", matches=[ Match( wm_class=re.compile(r"^(com.github.th_ch.youtube_music)$"), ), ], ), Group( name="f5", label="󱦹", matches=[Match(wm_class="rnote")], ), Group( name="f6", label="󰟵", matches=[Match(wm_class="bitwarden")], ), Group( name="f7", label=" 󰣀", matches=[Match(wm_class=re.compile(r"^(XPipe)$"))], ), Group(name="f8", label="󱊲"), Group(name="f9", label="󱊳"), Group(name="f10", label="󱊴"), Group(name="f11", label="󱊵"), Group(name="f12", label="󱊶"), ] def create_group_keys(groups, go_to_group, go_to_group_and_move_window): additional_keys = [] def go_to_group(name: str): def _inner(qtile): screen = group_screen_map.get(name, 0) if len(qtile.screens) <= 2: qtile.groups_map[name].toscreen() else: qtile.focus_screen(screen) qtile.groups_map[name].toscreen() return _inner # for i in groups: # keys.append(Key([mod], i.name, lazy.function(go_to_group(i.name)))) for i in groups: keys.append( Key(f"M-{i.name}", lazy.function(go_to_group(i.name))), ) def go_to_group_and_move_window(name: str): def _inner(qtile): screen = group_screen_map.get(name, 0) if len(qtile.screens) <= 2: qtile.current_window.togroup(name, switch_group=False) else: qtile.current_window.togroup(name, switch_group=False) qtile.focus_screen(screen) qtile.groups_map[name].toscreen() return _inner for i in groups: keys.append( Key(f"M-S-{i.name}", lazy.function(go_to_group_and_move_window(i.name))), ) for i in range(1, 12): group_name = f"" key = f"" keys.append groups.append( ScratchPad( "scratchpad", [ DropDown( "term", "kitty", width=0.4, height=0.5, x=0.3, y=0.25, opacity=1, on_focus_lost_hide=True, ), DropDown( "calc", "qalculate-gtk", width=0.3, height=0.6, x=0.35, y=0.2, opacity=1, on_focus_lost_hide=False, ), ], ) )