Qtile második felvonás

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

Í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