diff --git a/qtile/.config/qtile/config.py b/qtile/.config/qtile/config.py index 15d3eba..3c7167d 100644 --- a/qtile/.config/qtile/config.py +++ b/qtile/.config/qtile/config.py @@ -1,226 +1,39 @@ -# Copyright (c) 2010 Aldo Cortesi -# Copyright (c) 2010, 2014 dequis -# Copyright (c) 2012 Randall Ma -# Copyright (c) 2012-2014 Tycho Andersen -# Copyright (c) 2012 Craig Barnes -# Copyright (c) 2013 horsik -# Copyright (c) 2013 Tao Sauvage -# Copyright (c) 2021 Ɓukasz Pankowski (adapted default config to my needs) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -from typing import List # noqa: F401 - -from libqtile import bar, layout, qtile, widget -from libqtile.config import Click, Drag, Group, Key, KeyChord, Match, Screen +from libqtile import bar, widget +from libqtile.config import Group, Key, Screen from libqtile.lazy import lazy -from libqtile.utils import guess_terminal - -from themes import theme, init_theme, toggle_theme mod = "mod4" -terminal = guess_terminal() - -init_theme(qtile) - -keys = [ - # Switch between windows - Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), - Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), - Key([mod], "j", lazy.layout.down(), desc="Move focus down"), - Key([mod], "k", lazy.layout.up(), desc="Move focus up"), - # Key([mod], "space", lazy.layout.next(), - # desc="Move window focus to other window"), - - # Move windows between left/right columns or move up/down in current stack. - # Moving out of range in Columns layout will create new column. - Key([mod, "shift"], "h", lazy.layout.shuffle_left(), - desc="Move window to the left"), - Key([mod, "shift"], "l", lazy.layout.shuffle_right(), - desc="Move window to the right"), - Key([mod, "shift"], "j", lazy.layout.shuffle_down(), - desc="Move window down"), - Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), - - # Grow windows. If current window is on the edge of screen and direction - # will be to screen edge - window would shrink. - Key([mod, "control"], "h", lazy.layout.grow_left(), - desc="Grow window to the left"), - Key([mod, "control"], "l", lazy.layout.grow_right(), - desc="Grow window to the right"), - Key([mod, "control"], "j", lazy.layout.grow_down(), - desc="Grow window down"), - Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"), - Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"), - - # 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"], "Return", 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], "m", lazy.next_layout(), desc="Toggle between layouts"), - Key([mod], "w", lazy.window.kill(), desc="Kill focused window"), - - Key([mod], "Tab", lazy.screen.toggle_group(), desc="Toggle between groups"), - - Key([mod], "e", lazy.spawn("emacsclient -n -c")), - Key([mod], "s", lazy.window.toggle_floating()), - - KeyChord([mod], "semicolon", [ - Key([], "h", lazy.spawn("systemctl hibernate")), - Key([], "l", lazy.spawn("slock")), - Key([], "s", lazy.spawn("systemctl suspend")), - ]), - - Key([mod, "shift"], "F6", lazy.function(toggle_theme), lazy.restart()), - Key([mod, "control"], "r", lazy.restart(), desc="Restart Qtile"), - Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"), - Key([mod], "space", lazy.spawncmd(), - desc="Spawn a command using a prompt widget"), -] - -groups = [Group(i) for i in "1234567890"] - -for i in groups: - keys.extend([ - # mod1 + letter of group = switch to group - Key([mod], i.name, lazy.group[i.name].toscreen(), - desc="Switch to group {}".format(i.name)), - - # mod1 + shift + letter of group = switch to & move focused window to group - # Key([mod, "shift"], i.name, lazy.window.togroup(i.name, switch_group=True), - # desc="Switch to & move focused window to group {}".format(i.name)), - # Or, use below if you prefer not to switch to that group. - # # mod1 + shift + letter of group = move focused window to group - Key([mod, "shift"], i.name, lazy.window.togroup(i.name), - desc="move focused window to group {}".format(i.name)), - ]) - -layouts = [ - layout.Columns(border_focus_stack=['#d75f5f', '#8f3d3d'], - border_focus=theme["border_focus"], - border_normal=theme["border_normal"], - border_width=4, margin=2), - layout.Max(), - # Try more layouts by unleashing below layouts. - # layout.Stack(num_stacks=2), - # layout.Bsp(), - # layout.Matrix(), - # layout.MonadTall(), - # layout.MonadWide(), - # layout.RatioTile(), - # layout.Tile(), - # layout.TreeTab(), - # layout.VerticalTile(), - # layout.Zoomy(), -] +terminal = "alacritty" widget_defaults = dict( font="Iosevka Slab Light", - fontsize=28, - padding=3, - foreground = theme["widget_foreground"], + fontsize=26, ) -extension_defaults = widget_defaults.copy() + +keys = [] + +group_names = "1234567890" +groups = [Group(name) for name in group_names] +keys.extend([Key([mod], name, lazy.group[name].toscreen(toggle=False), desc=f"Switch to group {name}") for name in group_names]) +keys.extend([Key([mod, "shift"], name, lazy.window.togroup(name), desc=f"Move window to group {name}") for name in group_names]) screens = [ - Screen( - top=bar.Bar( - [ - widget.Spacer(10), - widget.CurrentLayout(120, foreground=theme["inactive"]), - widget.Spacer(10), - widget.GroupBox( - borderwidth=2, - margin_x=1, - padding_x=7, - active=widget_defaults["foreground"], - inactive=theme["inactive"], - highlight_method="block", - this_current_screen_border=theme["this_current_screen_border"]), - widget.Spacer(10), - widget.Prompt(cursor_color=theme["widget_foreground"]), - widget.Spacer(10), - widget.WindowName(), - widget.Chord( - chords_colors={ - 'launch': ("#ff0000", "#ffffff"), - }, - name_transform=lambda name: name.upper(), - ), - widget.Systray(), - widget.Clock(format=f"%Y-%m-%d %a %H:%M"), - widget.Spacer(10), - ], - 42, - background=theme["bar_background"], - ), - ), + Screen(top=bar.Bar([ + widget.GroupBox(), + widget.WindowName(), + widget.Spacer(), + widget.Clock(), + ], 48)), ] -# Drag floating layouts. -mouse = [ - Drag([mod], "Button1", lazy.window.set_position_floating(), - start=lazy.window.get_position()), - Drag([mod], "Button3", lazy.window.set_size_floating(), - start=lazy.window.get_size()), - Click([mod], "Button2", lazy.window.bring_to_front()) -] +keys.extend([ + Key([mod], "Return", lazy.spawn(terminal), desc="Run terminal "), + Key([mod], "e", lazy.spawn("emacsclient -n -c"), desc="Open new Emacs frame"), -dgroups_key_binder = None -dgroups_app_rules = [] # type: List -follow_mouse_focus = True -bring_front_click = False -cursor_warp = False -floating_layout = layout.Floating( - float_rules=[ - # Run the utility of `xprop` to see the wm class and name of an X client. - *layout.Floating.default_float_rules, - Match(wm_class='confirmreset'), # gitk - Match(wm_class='makebranch'), # gitk - Match(wm_class='maketag'), # gitk - Match(wm_class='ssh-askpass'), # ssh-askpass - Match(title='branchdialog'), # gitk - Match(title='pinentry'), # GPG key password entry - ], - border_focus=theme["border_focus"], - border_normal=theme["border_normal"], - border_width=4) + Key([mod], "Tab", lazy.screen.toggle_group(), desc="Toggle between current and previous group"), -auto_fullscreen = True -focus_on_window_activation = "smart" -reconfigure_screens = True + Key([mod], "w", lazy.window.kill(), desc="Kill focused window"), -# If things like steam games want to auto-minimize themselves when losing -# focus, should we respect this or not? -auto_minimize = True - -# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this -# string besides java UI toolkits; you can see several discussions on the -# mailing lists, GitHub issues, and other WM documentation that suggest setting -# this string if your java app doesn't work correctly. We may as well just lie -# and say that we're a working one by default. -# -# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in -# java that happens to be on java's whitelist. -wmname = "LG3D" + Key([mod, "control"], "q", lazy.shutdown(), desc="Quit qtile"), + Key([mod, "control"], "r", lazy.restart(), desc="Restart qtile"), +])