Benutzer-Werkzeuge

Webseiten-Werkzeuge


qtile

Layouts

  • definieren wie die Fenster angeordnet werden
  • können pro Arbeitsfläche/Gruppe festgelegt werden
  • Umschalten ist bei geöffneten Fenstern möglich

Begriffe

  • Client → ein Fenster
  • shuffle → Fenster innerhalb einer Gruppe/Arbeitsfläche an eine andere Stelle bewegen
  • Stacking → Fenster im Stapel aka. hintereinander (kann man wie eine Liste nacheinander durchlaufen) ablegen

Bsp

  • kein Stacking
  • Fenster können horizontal angeordnet werden → per layout.toggle_split()
    • dabei werden 2 nebeneinander liegende Fenster (jeweils von links beginnend) statt nebeneinander untereinander ausgerichtet
      • Bei 4 Fenstern nebeneinander und Fokus hat das 3. Fenster von Links → 3. und 4. werden untereinander angeordnet (der Rest der Fenster bleibt unberührt)
  • Es wird immer aller zur Verfügung stehender Platz belegt
    • das erste Fenster belegt den gesamten Platz
    • ein zweites Fenster teilt sich den gesamten Platz gleichmäßig mit dem 1. usw.
  • Anordnung
    • das erste neue Fenster wird rechts vom existierenden erstellt (Platz wird geteilt)
    • das nächste neue Fenster kommt unter dem linken
    • das nächste unter dem rechten
    • das nächste rechts vom oberen linken (ist dann zwischen dem ganz linken und ganz rechten)
    • das nächste rechts vom oberen rechten (ist das rechts vom ursprünglich ganz rechten)
    • das nächste rechts vom unteren linken (ist dann zwischen dem ganz linken und dem ganz rechten unten)
  • Verhalten kann geändert werden
    • fair=False in der Config sorgt dafür das die Fenster jeweils Rechts/Unter dem aktuellen erstellt werden
    • nicht wie sonst normal ganz links beginnend

Matrix

  • Bildschirm wird in gleich große Quadrate aufgeteilt
  • kein Stacking
  • 1 Fenster benutzt den ganzen Bildschirm
  • 2 Fenster - 2 Spalten, ganzer Bildschirm genutzt
  • 3 Fenster - 2 Spalten, 2 Zeilen - 1 Platz leer
  • 5 Fenster - 2 Spalten, 3 Zeilen

Max

  • Ein Fenster nimmt den gesamten Platz ein
  • mehrere Fenster sind hintereinander angeordnet und zwischen ihnen kann gewechselt werden

MonadTall

  • 2 Spalten
  • 1 Hauptfenster, mehrere Nebenfenster
    • Hauptfenster nimmt komplett eine Spalte ein
    • Nebenfenster teilen sich die andere Spalte
  • Nebenfenster können über Shortkey zu Hauptfenster werden
  • Nebenfenster können in ihrer Größe verändert werden
  • kein Stacking

MonadThreeCol

  • das Gleiche wie MonadTall nur mit 3 Spalten, 2 davon Nebenfenster

MonadWide

  • das Gleiche wie MonadTall nur horizontal angeordnet

Debugging

  • Log ist in ~/.local/share/qtile/qtile.log
  • um Log-Ausgaben zu bekommen kann zur .config.py an der gewünschten Stelle hinzufügen:

logger.warning(Whatever you want to print in the log)

  • Um Objekte und ihre Eigenschaften (oder Unterobjekte) zu inspizieren kann man Pythons vars benutzen

logger.warning(vars(screen.bottom.widgets[1]))

  • Obiges gibt die Eigenschaften (Attribute/Variablen) des 2 (Index 1) Widgets auf der bottom-Leiste (die leisten innerhalb des Screens werden nach ihrer Position benannt) auf dem aktiven screen aus

Zusätzliche Funktionen einrichten

Lautstärkeregler/Audioverwaltung

  • pavucontrol installieren
    • Programm zum einstellen der Lautstärke (Pulse Audio VolUme?)
  • pasystray installieren
    • Applet über das sich die Default-Quellen und Defaul-Ausgabegeräte definieren lassen
    • man kann darüber pavucontrol aufrufen

Troubleshooting

Problem Lösung
(Rofi) Neue Fenster werden nicht entsprechend des Layouts angeordnet

Beispiel:

  • Column-Layout aktiv 2 Fenster sind offen
  • das nächste Fenster müsste unter oder oberhalb des aktiven Fensters angeordnet werden
  • per Rofi Programm starten (bei Shortcuts habe ich es nicht gesehen, kann aber Zufall gewesen sein)
  • das Fenster wird woanders angeordnet (ggf. sogar auf anderem Screen)

Grund:

  • follow_mouse_focus (per Default True) aktiv
  • das neue Fenster wird an der Maus-Position platziert, nicht nach den Regeln des Loayouts
    • wenn man die Tastatur genutzt hat um da aktive Fenster zu definieren fallen Mouse-Fokus (das Fenster über dem die Maus ist) und das aktive Fenster auseinander

Lösung:

  • follow_mouse_focus deaktivieren (auf False in der Config setzen)
    • bedeutet allerdings auch das der Fokus nicht mehr der Maus folgt
      • Fenster werden nicht mehr einfach durch darüber fahren aktiv, sondern erst durch reinklicken (oder aktivieren per Keboard)
Argument 3 to „KeyChord“ has incompatible type „List[Key]“; expected „List[Union[Key, KeyChord]]“ Mypy (Typchecker) beschwert sich weil ein neuer KeyChord definiert wurde, der 3. Parameter aber eine Variable vom Typ List ist:

groupmenu_keys = []
groupmenu_keys.append(Key([], "l", lazy.screen.toggle_group(), desc="Jump to the last used group"))
KeyChord([mod], "a", groupmenu_keys)

groupmenu_keys ist eine Liste die nur Key-Objekte enthält, was dem entspricht was als 3. Parameter für KeyChord erwartet wird.
List ist aber ein mutable (veränderlicher) Datentyp (es können jederzeit Objekte daraus entfernt oder hinzugefügt werden).
Da List veränderlich ist kann mypy nicht sicherstellen was diese Liste enthält und das sie tatsächlich dem geforderten zusammengesetzten Datentypen List[Union[Key, KeyChord]] entspricht.
Das definieren eines Typs für groupmenu_keys löst das Problem.

groupmenu_keys:List[Union[Key, KeyChord]] = []
groupmenu_keys.append(Key([], "l", lazy.screen.toggle_group(), desc="Jump to the last used group"))
KeyChord([mod], "a", groupmenu_keys)

Mit:

groupmenu_keys:List[Union[Key, KeyChord]] = []

entspricht groupmenu_keys dem Datentyp List[Union[Key, KeyChord]] und mypy ist zufrieden

qtile.txt · Zuletzt geändert: 2023/11/06 11:16 von root