Így van az, amikor még tanulod a szakmát, de már mész neki fejjel a falnak ezerrel!
Szal elkezdtem lelkesen csinosítgatni a Qtile konfigomat, aminek az lett a vége, hogy már az anyja se látta a fától az erdőt...
Újratervezés: wayland-es dógok a kukába, X alatt vagyok és ez nem is nagyon fog változni, színek külön colors.py fájlba, innen húzzuk be őket, config.py átszervezve, csinosítva!
Konfigurációs állomány (~/.config/qtile/config.py):
###
# Berus Qtile konfiguráció
###
import os
import subprocess
from libqtile import bar, hook, layout, qtile, widget
from libqtile.config import Click, Drag, Group, Key, Match, Screen
from libqtile.lazy import lazy
from colors import colors
# -------------------------------------------------
# Alapbeállítások
# -------------------------------------------------
mod = "mod4"
terminal = "kitty"
# -------------------------------------------------
# Billentyűparancsok
# -------------------------------------------------
keys = [
# -------------------------------------------------
# Ablakfókusz
# -------------------------------------------------
Key([mod], "h", lazy.layout.left(), desc="Fókusz balra"),
Key([mod], "l", lazy.layout.right(), desc="Fókusz jobbra"),
Key([mod], "j", lazy.layout.down(), desc="Fókusz lefelé"),
Key([mod], "k", lazy.layout.up(), desc="Fókusz felfelé"),
Key([mod], "space", lazy.layout.next(), desc="Következő ablak"),
# -------------------------------------------------
# Ablak mozgatás
# -------------------------------------------------
Key([mod, "shift"], "h", lazy.layout.shuffle_left()),
Key([mod, "shift"], "l", lazy.layout.shuffle_right()),
Key([mod, "shift"], "j", lazy.layout.shuffle_down()),
Key([mod, "shift"], "k", lazy.layout.shuffle_up()),
# -------------------------------------------------
# Ablak átméretezés
# -------------------------------------------------
Key([mod, "control"], "h", lazy.layout.grow_left()),
Key([mod, "control"], "l", lazy.layout.grow_right()),
Key([mod, "control"], "j", lazy.layout.grow_down()),
Key([mod, "control"], "k", lazy.layout.grow_up()),
Key([mod], "n", lazy.layout.normalize()),
# -------------------------------------------------
# Layout kezelés
# -------------------------------------------------
Key(
[mod, "shift"],
"Return",
lazy.layout.toggle_split(),
desc="Split mód váltás",
),
Key([mod], "Tab", lazy.next_layout(), desc="Layout váltás"),
# -------------------------------------------------
# Programok
# -------------------------------------------------
Key([mod], "Return", lazy.spawn(terminal), desc="Terminál"),
Key([mod], "d", lazy.spawn("rofi -show drun"), desc="Rofi launcher"),
Key([mod], "r", lazy.spawncmd(), desc="Parancsfuttatás"),
# -------------------------------------------------
# Ablakkezelés
# -------------------------------------------------
Key([mod], "q", lazy.window.kill(), desc="Ablak bezárása"),
Key([mod], "f", lazy.window.toggle_fullscreen()),
Key([mod], "t", lazy.window.toggle_floating()),
# -------------------------------------------------
# Qtile
# -------------------------------------------------
Key([mod, "control"], "r", lazy.reload_config(), desc="Config reload"),
Key([mod, "shift"], "e", lazy.shutdown(), desc="Qtile kilépés"),
# -------------------------------------------------
# Leállítási műveletek
# -------------------------------------------------
Key([mod, "shift"], "p", lazy.spawn("loginctl poweroff")),
Key([mod, "shift"], "r", lazy.spawn("loginctl reboot")),
Key([mod, "shift"], "s", lazy.spawn("loginctl suspend")),
]
# -------------------------------------------------
# Workspace-ek
# -------------------------------------------------
groups = [Group(i) for i in "123456789"]
for group in groups:
keys.extend(
[
Key(
[mod],
group.name,
lazy.group[group.name].toscreen(),
),
Key(
[mod, "shift"],
group.name,
lazy.window.togroup(group.name, switch_group=True),
),
]
)
# -------------------------------------------------
# Layout téma
# -------------------------------------------------
layout_theme = {
"border_width": 2,
"margin": 10,
"border_focus": colors["border_focus"],
"border_normal": colors["border_normal"],
"border_on_single": True,
}
# -------------------------------------------------
# Layoutok
# -------------------------------------------------
layouts = [
layout.Columns(**layout_theme),
layout.Max(),
]
# -------------------------------------------------
# Widget alapértékek
# -------------------------------------------------
widget_defaults = dict(
font="sans bold",
fontsize=12,
padding=1,
foreground=colors["fg"],
background=colors["bg"],
)
extension_defaults = widget_defaults.copy()
# -------------------------------------------------
# Panel és widgetek
# -------------------------------------------------
screens = [
Screen(
bottom=bar.Bar(
[
# -------------------------------------------------
# Workspace lista
# -------------------------------------------------
widget.GroupBox(
font="sans bold",
fontsize=12,
margin_y=2,
margin_x=2,
padding_y=3,
padding_x=3,
borderwidth=2,
disable_drag=True,
rounded=True,
# ---------------------------------------------
# Alapszínek
# ---------------------------------------------
background=colors["bg"],
foreground=colors["fg"],
# ---------------------------------------------
# Workspace állapotok
# ---------------------------------------------
active=colors["active"],
inactive=colors["inactive"],
urgent_border=colors["urgent"],
# ---------------------------------------------
# Highlight rendszer line, block, box
# ---------------------------------------------
highlight_method="box",
highlight_color=colors["bg"],
# ---------------------------------------------
# Aktuális monitor
# ---------------------------------------------
this_current_screen_border=colors["highlight"],
this_screen_border=colors["inactive"],
# ---------------------------------------------
# Másodlagos monitor
# ---------------------------------------------
other_current_screen_border=colors["urgent"],
other_screen_border=colors["inactive"],
),
widget.Prompt(),
widget.WindowName(),
widget.Chord(
chords_colors={
"launch": ("#ff0000", "#ffffff"),
},
name_transform=lambda name: name.upper(),
),
widget.CurrentLayout(),
widget.TextBox("|"),
widget.Clock(
format="%Y-%m-%d %a %H:%M",
foreground=colors["fg"],
),
widget.Systray(),
],
24,
background=colors["bg"],
),
),
]
# -------------------------------------------------
# Lebegő ablakok kezelése
# -------------------------------------------------
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()),
]
# -------------------------------------------------
# Floating layout
# -------------------------------------------------
floating_layout = layout.Floating(
border_focus=colors["border_focus"],
border_normal=colors["border_normal"],
float_rules=[
*layout.Floating.default_float_rules,
Match(wm_class="confirmreset"),
Match(wm_class="makebranch"),
Match(wm_class="maketag"),
Match(wm_class="ssh-askpass"),
Match(title="branchdialog"),
Match(title="pinentry"),
],
)
# -------------------------------------------------
# Egyéb beállítások
# -------------------------------------------------
dgroups_key_binder = None
dgroups_app_rules = []
follow_mouse_focus = True
bring_front_click = False
floats_kept_above = True
cursor_warp = False
auto_fullscreen = True
focus_on_window_activation = "smart"
reconfigure_screens = True
auto_minimize = True
wmname = "LG3D"
# -------------------------------------------------
# Autostart
# -------------------------------------------------
@hook.subscribe.startup_once
def autostart():
home = os.path.expanduser("~/.config/qtile/autostart.sh")
subprocess.Popen([home])
Színek (~/.config/qtile/colors.py):
###
# Berus Qtile színek
###
colors = {
# -----------------------------
# Alapszínek
# -----------------------------
"bg": "#000000",
"fg": "#8ecae6",
# -----------------------------
# Workspace / GroupBox
# -----------------------------
"active": "#219ebc",
"inactive": "#023047",
"highlight": "#ffb703",
"urgent": "#fb8500",
# -----------------------------
# Layout border
# -----------------------------
"border_focus": "#219ebc",
"border_normal": "#023047",
# -----------------------------
# Widget surface-ek
# -----------------------------
"surface": "#111111",
"surface2": "#222222",
}Autómatikus indítás (~/.config/qtile/autostart.sh):
#!/usr/bin/env bash # Ha már futnak, lőjük le őket killall picom nm-applet redshift-gtk caffeine-indicator # Most indítsuk el őket újra picom & redshift-gtk & nm-applet & caffeine-indicator& # A háttérkép beállítása (ez általában felülírja az előzőt, nem kell pkill) /home/berus/.fehbg & # Ha már futnak, lőjük le őket killall pipewire wireplumber pipewire-pulse pasystray # Indítsuk el a folyamatokat sorban # Fontos a sorrend és a háttérbe küldés (&) pipewire & sleep 1 wireplumber & sleep 1 pipewire-pulse & sleep 1 # Jöhet a tálca ikon pasystray &
Na kérem, akkor a magamfajta vénségeknek előírt napi agytornát letudtuk, ígérem a Qtile témával már nem gyötörlek benneteket többet!
Berus
