qtile: use more widgets, more keys, theme switching, improve themes

This commit is contained in:
Łukasz Pankowski 2021-10-07 20:57:00 +02:00
parent 11c25ce9e6
commit b68fb380e2
4 changed files with 54 additions and 17 deletions

View File

@ -48,7 +48,7 @@ schemas:
bright: *bright-colors bright: *bright-colors
lupan_material_dark: &lupan-material-dark lupan_material_dark: &lupan-material-dark
primary: primary:
background: '#424242' background: '#263238'
foreground: '#eeeeee' foreground: '#eeeeee'
normal: &material-dark-normal normal: &material-dark-normal
black: '#212121' black: '#212121'

View File

@ -1,3 +1,5 @@
# Selected colors from https://windicss.org/utilities/colors.html
colors = { colors = {
"indigo": { "indigo": {
50: "#eef2ff", 50: "#eef2ff",

View File

@ -1,13 +1,17 @@
from libqtile import bar, widget from libqtile import bar, layout, qtile, widget
from libqtile.config import Group, Key, Screen from libqtile.config import Group, Key, KeyChord, Screen
from libqtile.lazy import lazy from libqtile.lazy import lazy
from themes import apply_theme, subtheme, theme, toggle_theme
mod = "mod4" mod = "mod4"
terminal = "alacritty" terminal = "alacritty"
widget_defaults = dict( widget_defaults = dict(
font="Iosevka Slab Light", font="Iosevka Slab Light",
fontsize=26, fontsize=26,
padding=5,
foreground=theme["foreground"],
) )
keys = [] keys = []
@ -17,19 +21,33 @@ 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], 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]) keys.extend([Key([mod, "shift"], name, lazy.window.togroup(name), desc=f"Move window to group {name}") for name in group_names])
layouts = [
layout.Max(),
layout.Columns(border_width=4, margin=4, **subtheme("border_focus", "border_normal")),
]
screens = [ screens = [
Screen(top=bar.Bar([ Screen(top=bar.Bar([
widget.GroupBox(), widget.Spacer(10),
widget.CurrentLayout(fmt="[{:3.3}]"),
widget.Spacer(10),
widget.GroupBox(highlight_method='block',
padding_y=10,
active=theme["foreground"],
**subtheme("inactive", "this_current_screen_border")),
widget.Spacer(15),
widget.WindowName(), widget.WindowName(),
widget.Spacer(), widget.Spacer(),
widget.Clock(), widget.Clock(),
], 48)), widget.Spacer(10),
], 48, background=theme["background"])),
] ]
keys.extend([ keys.extend([
Key([mod], "Return", lazy.spawn(terminal), desc="Run terminal "), Key([mod], "Return", lazy.spawn(terminal), desc="Run terminal "),
Key([mod], "e", lazy.spawn("emacsclient -n -c"), desc="Open new Emacs frame"), Key([mod], "e", lazy.spawn("emacsclient -n -c"), desc="Open new Emacs frame"),
Key([mod], "space", lazy.spawn(["rofi", "-theme", "Arc", "-kb-row-select", "Tab", "-kb-row-tab", "", "-show", "run"]), desc="Run command"), Key([mod], "space", lazy.spawn(["rofi", "-theme", theme["rofi_theme"], "-kb-row-select", "Tab", "-kb-row-tab", "", "-show", "run"]),
desc="Run command"),
Key([mod], "Tab", lazy.screen.toggle_group(), desc="Toggle between current and previous group"), Key([mod], "Tab", lazy.screen.toggle_group(), desc="Toggle between current and previous group"),
Key([mod], "h", lazy.layout.left(), desc="Focus window on the left of current one"), Key([mod], "h", lazy.layout.left(), desc="Focus window on the left of current one"),
@ -46,7 +64,20 @@ keys.extend([
Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow current window on its right"), Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow current window on its right"),
Key([mod], "w", lazy.window.kill(), desc="Kill focused window"), Key([mod], "w", lazy.window.kill(), desc="Kill focused window"),
Key([mod], "s", lazy.window.toggle_floating(), desc="Toggle window floating"),
Key([mod], "m", lazy.next_layout(), desc="Next layout"),
Key([mod, "shift"], "F6", lazy.function(toggle_theme), lazy.restart(), desc="Kill focused window"),
KeyChord([mod], "semicolon", [
Key(["shift"], "h", lazy.spawn("systemctl hibernate")),
Key(["shift"], "l", lazy.spawn("slock")),
Key(["shift"], "s", lazy.spawn("systemctl suspend")),
]),
Key([mod, "control"], "q", lazy.shutdown(), desc="Quit qtile"), Key([mod, "control"], "q", lazy.shutdown(), desc="Quit qtile"),
Key([mod, "control"], "r", lazy.restart(), desc="Restart qtile"), Key([mod, "control"], "r", lazy.restart(), desc="Restart qtile"),
]) ])
cursor_warp = True
apply_theme(qtile)

View File

@ -24,22 +24,26 @@ def toggle_theme(qtile):
write_theme(light_dark("dark", "light")) write_theme(light_dark("dark", "light"))
theme = dict( theme = dict(
background=light_dark(colors["blue-gray"][200], colors["blue-gray"][700]), root_background=light_dark(colors["blue-gray"][300], colors["blue-gray"][700]),
bar_background=light_dark([colors["blue-gray"][200], colors["blue-gray"][300]], background=light_dark([colors["blue-gray"][200], colors["blue-gray"][300]],
[colors["blue-gray"][600], colors["blue-gray"][900]]), [colors["blue-gray"][700], colors["blue-gray"][800]]),
widget_foreground=light_dark(colors["blue-gray"][600], colors["blue-gray"][400]), foreground=light_dark(colors["blue-gray"][600], colors["blue-gray"][400]),
inactive=light_dark(colors["blue-gray"][400], colors["blue-gray"][500]), inactive=light_dark(colors["blue-gray"][400], colors["blue-gray"][500]),
this_current_screen_border=light_dark([colors["blue-gray"][200], colors["blue-gray"][50]], this_current_screen_border=light_dark([colors["blue-gray"][50], colors["blue-gray"][200]],
[colors["blue-gray"][900], colors["blue-gray"][800]]), [colors["blue-gray"][600], colors["blue-gray"][700]]),
border_focus=light_dark(colors["indigo"][400], colors["blue-gray"][500]), border_focus=light_dark(colors["indigo"][400], colors["blue-gray"][500]),
border_normal=light_dark(colors["indigo"][900], colors["blue-gray"][900]), border_normal=light_dark(colors["indigo"][900], colors["blue-gray"][800]),
alacritty_theme=light_dark("lupan-material-light", "lupan-dark-gray"), alacritty_theme=light_dark("lupan-material-light", "lupan-material-dark"),
emacs_theme=light_dark("lupan-material-light", "lupan-dark-gray"), emacs_theme=light_dark("material-light", "material"),
gtk_theme=light_dark("Materia-light", "Materia-dark"), gtk_theme=light_dark("Materia-light", "Materia-dark"),
rofi_theme=light_dark("Arc", "Arc-Dark"),
) )
def init_theme(qtile): def subtheme(*names):
qtile.cmd_spawn(["xsetroot", "-solid", theme["background"]]) return {name: theme[name] for name in names}
def apply_theme(qtile):
qtile.cmd_spawn(["xsetroot", "-solid", theme["root_background"]])
qtile.cmd_spawn(["sed", "-i", f"s/^colors: [*].*/colors: *{theme['alacritty_theme']}/", qtile.cmd_spawn(["sed", "-i", f"s/^colors: [*].*/colors: *{theme['alacritty_theme']}/",
os.path.expanduser("~/.config/alacritty/alacritty.yml")]) os.path.expanduser("~/.config/alacritty/alacritty.yml")])
qtile.cmd_spawn(["emacsclient", "--eval", f"(my-select-theme '{theme['emacs_theme']})"]) qtile.cmd_spawn(["emacsclient", "--eval", f"(my-select-theme '{theme['emacs_theme']})"])