Layout-Vorlagen - MorgenWM

English version

Layout-Vorlagen

Layout-Vorlagen (Templates) ermöglichen es, ein Frame-Layout, inklusive der Programme, die in jedem Frame gestartet werden sollen, in einer TOML-Datei zu definieren und mit einem Befehl oder Tastenkürzel anzuwenden. Nützlich für Entwicklungs-Workspaces, Monitoring-Dashboards oder jede wiederkehrende Multi-Fenster-Anordnung.

Wo Templates liegen

Template-Dateien gehören in:

~/.config/morgenwm/templates/<name>.toml

setup.sh installiert die Beispiel-Templates aus example/templates/ in dieses Verzeichnis. Du kannst eigene erstellen oder die Beispiele bearbeiten.

Template-Format

Ein Template ist eine flache Liste von [[frame]]-Einträgen. Jeder Frame hat eine id und ist entweder ein Blatt (leaf, enthält Fenster) oder eine Aufteilung (split, enthält zwei Kind-Frames). Aufteilungen referenzieren ihre Kinder über left und right-IDs.

FeldTypGültig fürBeschreibung
idstringalleEindeutiger Bezeichner für diesen Frame
parentstringalleID des Eltern-Splits; leer für die Wurzel
typestringalle"leaf" oder "split"
directionstringsplits"horizontal" (links-rechts) oder "vertical" (oben-unten)
ratiofloatsplitsAnteil des ersten Kindes, 0.0–1.0 (Standard 0.5)
leftstringsplitsID des linken/oberen Kindes
rightstringsplitsID des rechten/unteren Kindes
commandstringleavesShell-Befehl(e) zum Starten in diesem Frame. \| trennt mehrere Befehle im selben Frame
requires_filepathbooltemplateWenn true, vor dem Erstellen des Layouts ein Arbeitsverzeichnis per fuzzel abfragen. Der Pfad ist als $MOGENWM_TEMPLATE_DIR in Befehlen verfügbar

Beispiel

┌─────────────────────┐
│                     │
│  Editor (foot) │  70%
│                     │
├──────────┬──────────┤
│ Terminal │ Browser  │  30%
│ (htop)   │ (firefox)│
└──────────┴──────────┘

# ~/.config/morgenwm/templates/dev-layout.toml

[[frame]]
id = "root"
type = "split"
direction = "vertical"
ratio = 0.7
left = "editor"
right = "bottom"

[[frame]]
id = "editor"
type = "leaf"
command = "foot"

[[frame]]
id = "bottom"
type = "split"
direction = "horizontal"
ratio = 0.5
left = "terminal"
right = "browser"

[[frame]]
id = "terminal"
type = "leaf"
command = "foot -e htop"

[[frame]]
id = "browser"
type = "leaf"
command = "firefox"

Templates anwenden

Über IPC (Kommandozeile)

morgenwm_msg action apply-template dev-layout

Über Tastenkürzel

In config.toml:

[[keybindings]]
key = "t"
modifiers = ["Mod"]
action = "template:dev-layout"

Funktionsweise

Beim Anwenden eines Templates:

  1. Der Frame-Baum wird aus dem Template aufgebaut und ersetzt den aktuellen Wurzel-Frame des Workspaces.
  2. Jedes Blatt mit einem command wird in eine Warteschlange eingereiht, das nächste Fenster, das sich öffnet, wird in dieses Blatt platziert statt in den fokussierten Frame.
  3. Alle Befehle werden gestartet (über sh -c). Da die Fenstererstellung asynchron ist, kommt das erste eintreffende Fenster ins erste Blatt, das zweite ins zweite, usw.

Blätter ohne command bleiben leer, Fenster können später manuell hineinverschoben werden.

Hinweise

  • Das Anwenden eines Templates ersetzt das aktuelle Layout vollständig. Bestehende Fenster im alten Layout werden nicht übernommen.
  • Die Reihenfolge der Starts entspricht der Reihenfolge der Blätter im Template. Wenn ein Programm lange zum Starten braucht, kann sein Fenster nach einem schnelleren Programm eintreffen, sodass die Blatt-Zuordnung nach Eintreff-Reihenfolge erfolgt, nicht nach Start-Reihenfolge.