5 nützliche Patches zur Verbesserung Ihrer dwm-Erfahrung

Dwm Patch 00 Featured Image
⏱️ 11 min read

Dwm ist ein brillantes Stück minimalistischer Software. Mit nur 2000 Codezeilen gelang es den Entwicklern, einen schnellen und leichten Fenstermanager bereitzustellen. Dieser spartanische Ansatz bei der Softwareentwicklung hatte jedoch seinen Preis. Einige Funktionen wurden weggelassen, um die Programmgröße gering zu halten.

Trotzdem ist es möglich, neue Funktionen in dwm einzuführen, indem der Quellcode gepatcht wird, da dwm quellenbasiert ist. Nur um grundlegende Konfigurationen vorzunehmen, müssen wir config.h ändern, die ein Teil des Quellcodes von dwm ist.

Dwm-Patch 02 Config H

Während dies zunächst komplex erscheinen mag, ist das Patchen von dwm einfach, sobald wir ein paar Dinge über den Prozess verstanden haben. Dieser Artikel zielt darauf ab, die notwendigen Fähigkeiten zu vermitteln, um Ihre eigene dwm-Installation erfolgreich zu patchen, und fünf nützliche Patches bereitzustellen.

Was sind Patches?

Patches sind kleine Codefragmente, die in ein größeres Werk eingefügt werden können. Dies ist nützlich, wenn Sie an einem großen Softwareprojekt zusammenarbeiten, da Programmierer schnell Änderungen sehen können, die von anderen vorgenommen wurden.

Dwm-Patch 03 Patch-Art

Patches können so einfach sein wie eine kleine einzeilige Änderung zur Behebung eines Fehlers oder eine massive Änderung mehrerer Dateien, die eine neue Funktion einführt.

So patchen Sie einen Quellcode für dwm

Es gibt mehrere Möglichkeiten, Patches in einen Quellcode einzufügen. Der gebräuchlichste Weg, dies zu tun, ist ein Git-Befehl. Um beispielsweise einen Patch in ein Git-Repository einzufügen, geben Sie Folgendes ein:

git apply -3 path/to/the/patch.diff
  • Das apply versucht, den Inhalt der Patch-Dateien in die angegebenen Quelldateien einzufügen.
  • Das -3 Option versucht, alle Inkonsistenzen zu beheben, und ermöglicht dem Benutzer, alle Fehler im Patch-Prozess zu beheben.
Dwm-Patch 04 Git anwenden

Wenn wir den Quellcode hingegen ohne Versionskontrolle bearbeiten, können wir das GNU-Patch-Programm verwenden. Um einen Patch damit einzufügen, geben Sie Folgendes ein:

patch -p1 < path/to/the/patch.diff
  • Das -p1 Option stellt sicher, dass die Patch-Datei korrekt beschriftet wird, damit das Patch-Programm sie einfügen kann.

Beim Patchen von dwm schlagen diese Programme jedoch manchmal fehl, da sie davon ausgehen, dass der Quellcode, den wir patchen, der grundlegenden dwm-Installation ähnlich ist.

Das bedeutet, je mehr wir Patches installieren, desto schwieriger wird es für das Patch-Programm, diese Patches einzufügen. Aus diesem Grund ist es wichtig zu verstehen, wie die Patch-Datei funktioniert, damit wir die Patches selbst manuell installieren können.

So lesen Sie eine Patch-Datei

Eine Patch-Datei besteht aus drei Dingen:

  • Header, der anzeigt, in welche Datei der Code eingefügt werden soll
  • Unterüberschrift, die anzeigt, welche Zeilennummer oder Funktion eingefügt werden soll
  • Der Code selbst

Wie wir oben besprochen haben, kann eine einzelne Patch-Datei mehrere Codeschnipsel enthalten, die für mehrere Dateien vorgesehen sind. Dieses Format ermöglicht es uns, eine einzelne Datei zu verteilen, anstatt eine einzelne Patch-Datei für jede Quelldatei zu haben.

Dwm Patch 05 Patch-Datei

Damit müssen wir zum Lesen der Patch-Datei nur die Syntax ihrer Header verstehen. Sobald wir das wissen, besteht das eigentliche Patchen nur noch aus dem Kopieren und Einfügen des Codes.

Die Patch-Header-Syntax

Der Header eines Patches enthält wichtige Informationen darüber, wo sich die Quelldatei befindet. Dies ist beispielsweise ein Header für die dwm Autoresize-Patch.

diff --git a/dwm.c b/dwm.c
index 0362114..e4e8514 100644
--- a/dwm.c
+++ b/dwm.c

Die erste, dritte und vierte Zeile zeigen an, dass es sich um einen Unterschied zwischen zwei Versionen der Datei dwm.c handelt. Es sagt uns, dass die Datei, die wir ändern werden, die Datei „dwm.c“ ist.

Nur zu wissen, was zu bearbeiten ist, würde uns jedoch nicht beim Patchen der Quelldatei helfen. Wir müssen noch wissen, wo in der Datei wir den Code einfügen müssen. Hier können wir die Unterüberschriften der Patch-Datei verwenden.

Dies ist beispielsweise ein Segment desselben Patches zur automatischen Größenänderung, der oben beschrieben wurde:

@@ -92,7 +92,7 @@ struct Client {
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int bw, oldbw;
 	unsigned int tags;
-	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
+	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, needresize;
 	Client *next;
 	Client *snext;
 	Monitor *mon;

Das mag wie ein entmutigendes Stück Code aussehen, aber wir müssen uns hier nur drei Dinge ansehen:

  • Die erste Zeile gibt die Zeilennummer an, in der wir ein Code-Snippet einfügen müssen. In diesem Beispiel müssen wir dies in Zeile 92 einfügen.
  • Das zweite Argument in der ersten Zeile – struct Client { – gibt die spezifische Funktion an, die wir bearbeiten müssen. Dies ist nützlich, wenn die Quelldatei bereits stark gepatcht wurde und die Zeilennummern auf der linken Seite nicht mehr übereinstimmen.
  • Das letzte, was zu sehen ist, ist die + und - Zeichen im Codeblock. Das Minuszeichen gibt an, dass es sich um eine zu entfernende Zeile handelt, und das Pluszeichen zeigt an, dass es sich um eine hinzuzufügende Zeile handelt.

Damit haben wir jetzt ein grundlegendes Verständnis dafür, wie Quelldateien gepatcht werden. Wir können jetzt fortfahren, die fünf nützlichen Patches für dwm zu diskutieren.

1. Systray

Im Gegensatz zu den meisten Desktop-Umgebungen verfügt dwm standardmäßig nicht über eine Taskleiste. Die Taskleiste ist ein Segment eines Desktops, auf dem einige Anwendungen ein Symbol mit den Funktionen der App hinterlassen können, um schnell mit einem Programm zu interagieren, das im Hintergrund ausgeführt wird.

Dwm-Patch 06 Systray

Dieser Patch führt diese Funktion in dwm ein. Nach der Installation weist der Systray-Patch die rechte Ecke der DWM-Leiste den aktuellen Taskleistenprogrammen zu. Es unterstützt auch Multi-Monitor-Setups, bei denen die Taskleiste immer auf dem Monitor angezeigt wird, auf dem sich derzeit der Mauszeiger befindet.

Dwm Patch 07 Systray-Beispiel

2. X-Ressourcen

Das Xresources-Patch ermöglicht dem xrdb-Programm, die grafischen Einstellungen für dwm festzulegen. Es ermöglicht uns, die .Xresources-Datei zu verwenden, um die Farben und Schriftarten zu ändern, ohne das Programm neu zu kompilieren. Dies ist besonders nützlich für Benutzer, die dieselbe Datei bereits für ihr Terminal-Farbschema verwenden.

Dwm-Patch 08 Xresources

Wenn xrdb das Erscheinungsbild von dwm diktiert, können wir außerdem mehrere Themen verwenden. Wir können das tun, indem wir die .Xresources-Datei für das gewünschte Farbschema ändern und es durch erneutes Laden von dwm aktivieren.

3. Tatami

Tatami ist ein alternatives Fensterlayout für dwm. Es stellt die Fenster im Bildschirm als Kacheln dar, die in einem traditionellen japanischen Bodenbelag angeordnet sind. Dieser Ansatz unterscheidet sich vom herkömmlichen Master- und Stack-Layout, bei dem jedes Fenster außer dem Master vertikal dünner wird, wodurch jedes Fenster im Stack unlesbar wird.

Dwm-Patch 09 Tatami

Das Tatami-Layout ist besonders nützlich, wenn mit vier bis fünf Fenstern gleichzeitig gearbeitet wird, da es jedem Fenster ausreichend Bildschirmfläche für den Benutzer zum Lesen gibt.

4. Fokus-Meister

Die Art und Weise, wie dwm die Fenster anordnet, ähnelt dem Platzieren von Blöcken in einem Stapel. Jedes neu erstellte Fenster wird über dem vorherigen Fenster platziert. Dadurch entsteht eine lineare Reihenfolge zwischen den Fenstern und wir wissen, welches Fenster zuerst kam.

Dwm-Patch 11 Focus Master

Eine Einschränkung dieses Designs besteht jedoch darin, dass es uns nicht erlaubt, das Hauptfenster frei aus dem Stapel auszuwählen. Um den Master auszuwählen, müssen wir jedes einzelne Fenster auswählen, bis wir den höchsten Block erreichen. Dieser Patch ändert dieses Verhalten und ermöglicht es uns, das aktuelle Hauptfenster von überall im Stapel auszuwählen.

Es ist besonders nützlich, wenn Sie mit mehreren Fenstern arbeiten, da es uns ermöglicht, automatisch den Master im Fensterstapel auszuwählen, anstatt zu jedem vorhandenen Fenster zu wechseln.

5. dwc

Das Ändern eines Aspekts von dwm erfordert, dass wir das Programm neu kompilieren, wenn wir unsere Änderungen anwenden möchten. Dazu gehören unter anderem das Farbschema und das Standardverhalten.

Dwm-Patch 12 Dwmc

dwmc ist ein einfacher Patch, mit dem wir das Verhalten von dwm über ein Client-Programm ändern können. Dieser Ansatz ähnelt der Art und Weise, wie bspwm bspc verwendet, um die Einstellungen von bspwm zu ändern. Obwohl dwmc viel einfacher ist als bspc, hat es dennoch eine Reihe nützlicher Einstellungen, die wir verwenden und ändern können.

Eine Funktion, die wir in dwmc verwenden können, ist beispielsweise Togglebar. Durch Ausführen von dwmc togglebar können wir die dwm-Leiste dynamisch aktivieren und deaktivieren. Dies macht dwmc nützlich, wenn Sie Skripts erstellen, die ein benutzerdefiniertes Fensterverhalten ausführen.

Herzliche Glückwünsche! Sie haben jetzt ein grundlegendes Verständnis dafür, wie Code-Patching funktioniert, sowie fünf nützliche Patches, die Sie in Ihrer dwm-Installation anwenden. Wenn Sie nach einer ähnlichen minimalen Erfahrung in einem Browser suchen, sehen Sie sich dieses Tutorial an.

Häufig gestellte Fragen

1. Sind dwm-Patches sicher zu verwenden?

Ja! Eine Reihe von Betreuern überprüft die Patches, die auf der suckless-Website vorhanden sind. Dadurch wird sichergestellt, dass alle Patches auf der Website für die Version von dwm funktionieren, für die sie geschrieben wurde.

2. Ich verwende git apply, aber mein Patch ist fehlgeschlagen und dwm kompiliert nicht. Was soll ich machen?

Dies kann aufgrund einer Reihe von Dingen passieren. Der häufigste Grund ist, dass die Git-Header in der Quelldatei nicht entfernt wurden. Dies ist relativ einfach zu beheben. Wir müssen die Header entfernen und den Patch selbst manuell anwenden.

Wenn Sie die Quelldatei öffnen, sehen Sie eine Zeile mit der Bezeichnung HEAD. Dies zeigt den Beginn der Änderung an. Danach folgt die zu ändernde Funktion. Sie müssen diese Leitung entfernen und das Patchen manuell durchführen. Hier drin wird es auch geben + und - Zeichen auf der linken Seite des Codes, die Ihnen zeigen, was Sie ändern müssen.

3. Was mache ich, wenn ich einen Patch erfolgreich angewendet habe, aber dwm nicht kompilieren will und nach fehlenden Variablen oder Deklarationen fragt?

Das Patch-Programm hat die Datei config.h nicht gepatcht. Standardmäßig bearbeiten Patches die Datei config.def.h, um Konflikte mit der aktuellen Konfiguration zu vermeiden.

Dies bedeutet jedoch, dass die Datei config.h nicht mit den richtigen Konfigurationswerten für diesen bestimmten Patch geladen wird. Um dies zu beheben, müssen Sie die Änderungen in der Datei config.def.h in Ihre Datei config.h einführen.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Das könnte dich auch interessieren …

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x