# Justine Smithies # https://github.com/justinesmithies/qtile-wayland-dotfiles # Key configuration import os from libqtile.config import Key from libqtile.command import lazy home = os.path.expanduser('~') terminal = os.environ.get("TERMINAL") mod = "mod4" keys = [ # Move focus to next screen Key([mod, "control"], "period", lazy.next_screen(), desc="Move focus to next screen", ), Key([mod], "g", lazy.screen.next_group(skip_empty=True), desc="Move to next active group" ), Key([mod, "shift"], "g", lazy.screen.prev_group(skip_empty=True), desc="Move to previous active group" ), # Switch between windows in current stack pane Key([mod], "h", lazy.layout.left(), desc="Move focus left in stack pane" ), Key([mod], "l", lazy.layout.right(), desc="Move focus right in stack pane" ), Key([mod], "k", lazy.layout.down(), desc="Move focus down in stack pane" ), Key([mod], "j", lazy.layout.up(), desc="Move focus up in stack pane" ), # Move window on the current screen Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc='Shuffle left' ), Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc='Shuffle right' ), Key([mod, "shift"], "k", lazy.layout.shuffle_down(), desc='Shuffle down' ), Key([mod, "shift"], "j", lazy.layout.shuffle_up(), desc='Shuffle up' ), # For the BSP layout Key([mod, "mod1"], "j", lazy.layout.flip_down(), desc='Flip down' ), Key([mod, "mod1"], "k", lazy.layout.flip_up(), desc='Flip up' ), Key([mod, "mod1"], "h", lazy.layout.flip_left(), desc='Flip left' ), Key([mod, "mod1"], "l", lazy.layout.flip_right(), desc='Flip right' ), Key([mod, "control"], "j", lazy.layout.grow_down(), desc='Grow down' ), Key([mod, "control"], "k", lazy.layout.grow_up(), desc='Grow up' ), Key([mod, "control"], "h", lazy.layout.grow_left(), desc='Grow left' ), Key([mod, "control"], "l", lazy.layout.grow_right(), desc='Grow right' ), Key([mod], "n", lazy.layout.normalize(), desc='normalize window size ratios' ), Key([mod], "m", lazy.layout.maximize(), desc='toggle window between minimum and maximum sizes' ), Key([mod], "o", lazy.layout.grow(), lazy.layout.increase_nmaster(), desc='Expand window (MonadTall), increase number in master pane (Tile)' ), Key([mod], "i", lazy.layout.shrink(), lazy.layout.decrease_nmaster(), desc='Shrink window (MonadTall), decrease number in master pane (Tile)' ), # Toggle floating Key([mod, "shift"], "f", lazy.window.toggle_floating(), desc="Toggle floating" ), # Toggle Fullscreen Key([mod], "f", lazy.window.toggle_fullscreen(), lazy.hide_show_bar(position='all'), desc='Toggle fullscreen and the bars' ), # Switch window focus to other pane(s) of stack Key([mod], "space", lazy.layout.next(), desc="Switch window focus to other pane(s) of stack" ), # Swap panes of split stack Key([mod, "shift"], "space", lazy.layout.rotate(), desc="Swap panes of split stack" ), # Toggle between split and unsplit sides of stack. # Split = all windows displayed # Unsplit = 1 window displayed, like Max layout, but still with # multiple stack panes Key([mod, "shift"], "s", lazy.layout.toggle_split(), desc="Toggle between split and unsplit sides of stack" ), Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal" ), # Toggle between different layouts as defined below Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts" ), Key([mod], "w", lazy.window.kill(), desc="Kill focused window" ), # Toggle bars Key([mod], "b", lazy.hide_show_bar(position='all'), desc="Toggle bars" ), # Qtile system keys Key([mod, "shift", "control"], "l", lazy.spawn("swaylock -f -i .cache/wallpaper"), desc="Lock screen" ), Key([mod, "control"], "r", lazy.reload_config(), desc="Restart qtile" ), Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown qtile" ), Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget" ), Key([mod, "control"], "p", lazy.spawn("" + home + "/.local/bin/powermenu"), desc="Launch Power menu" ), # Emoji Picker Key([mod, "control"], "e", lazy.spawn(home + "/.local/bin/bemoji -n"), desc="Launch emoji menu" ), # Fuzzel Key(["control"], "space", lazy.spawn("fuzzel"), desc="Launch Fuzzel menu" ), # Window Switcher Key([mod, "control"], "w", lazy.spawn(home + "/.local/bin/qtile-window-switcher.py"), desc="Launch the Window Switcher", ), # Install updates Key([mod, "control"], "u", lazy.spawn(home + "/.local/bin/statusbar/arch-updates.sh key-update"), desc="Install updates", ), # Cycle through windows in the floating layout Key([mod, "shift"], "i", lazy.window.toggle_minimize(), lazy.group.next_window(), lazy.window.bring_to_front() ), # ------------ Hardware Configs ------------ # Volume Key([], "XF86AudioMute", lazy.spawn(home + "/.config/qtile/statusbar/volumecontrol mute"), desc='Mute audio' ), Key([], "XF86AudioLowerVolume", lazy.spawn(home + "/.config/qtile/statusbar/volumecontrol down"), desc='Volume down' ), Key([], "XF86AudioRaiseVolume", lazy.spawn(home + "/.config/qtile/statusbar/volumecontrol up"), desc='Volume up' ), # Media keys Key([], "XF86AudioPlay", lazy.spawn("dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify " "/org/mpris/MediaPlayer2 " "org.mpris.MediaPlayer2.Player.PlayPause"), desc='Audio play' ), Key([], "XF86AudioNext", lazy.spawn("dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify " "/org/mpris/MediaPlayer2 " "org.mpris.MediaPlayer2.Player.Next"), desc='Audio next' ), Key([], "XF86AudioPrev", lazy.spawn("dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify " "/org/mpris/MediaPlayer2 " "org.mpris.MediaPlayer2.Player.Previous"), desc='Audio previous' ), # Brightness Key([], "XF86MonBrightnessDown", lazy.spawn(home + "/.config/qtile/statusbar/brightnesscontrol down"), desc='Brightness down' ), Key([], "XF86MonBrightnessUp", lazy.spawn(home + "/.config/qtile/statusbar/brightnesscontrol up"), desc='Brightness up' ), # Screenshots # Take a screenshot of the currently focused output and save it into screenshots Key([], "Print", lazy.spawn(home + "/.local/bin/screenshot.sh"), desc='Save the screens of the currently focused output to the screenshots folder' ), # Take a screenshot of the selected region Key([mod], "Print", lazy.spawn(home + "/.local/bin/screenshot.sh selected-region"), desc='Save the selected region of the screen to the screenshots folder' ), # Capture region of screen to clipboard Key([mod, "shift"], "Print", lazy.spawn(home + "/.local/bin/screenshot.sh save-to-clipboard"), desc='Capture a region of the screen to the clipboard' ), # Take a screenshot of the selected window Key([mod, "control"], "Print", lazy.spawn(home + "/.local/bin/screenshot.sh focused-window"), desc='Save the selected window to the screenshots folder' ), ] for i in range(1, 5): keys.append(Key(["control", "mod1"], "F" + str(i), lazy.core.change_vt(i), desc='Change to virtual console ' + str(i) ),)