Ich möchte einen grundlegenden Hardware-beschleunigten Window Manager schreiben, also habe ich nach einer Dokumentation gesucht, wie ich anfangen kann, aber ich habe nur this tutorial gefunden, die eine veraltete Version von Clutter verwendet und ' t Build mit jeder derzeit verfügbaren Version. Gibt es noch andere gute Ressourcen, um dies zu tun, oder alternativ eine wirklich nackten Knochen Compositing WM, um die Quelle zu sehen?Wie fange ich an, ein Compositing WM zu schreiben?
Antwort
Der ursprüngliche Demo-Compositing-Manager war xcompmgr, den ich für das Verständnis der zugrunde liegenden X-Erweiterungen empfehlen würde.
Wenn Sie OpenGL für hardwarebeschleunigtes Rendern verwenden, müssen Sie die Erweiterung EXT_texture_from_pixmap
lesen, um zu vermeiden, dass Fensterinhalte über den Benutzerbereich kopiert werden. Mit dieser Erweiterung können Sie stattdessen hardwarebeschleunigte Blits für diese Kopien verwenden.
Sie werden wahrscheinlich auch an der Spezifikation für _NET_WM_SYNC_REQUEST interessiert sein, um ein fehlerfreies Rendering zu ermöglichen, das mit vertikalem Rücklauf synchronisiert ist.
Es gibt zwei Teile in Frage: 1) Wie WM schreiben 2), wie Composite-Manager
Einige Links zu schreiben Teil zwei (zusätzlich zu helfen, zu verstehen Quelle zu xcompmgr):
- http://www.talisman.org/~erlkonig/misc/x11-composite-tutorial/ (verwendet Qt, aber sehr allgemein und Low-Level)
- https://github.com/gustavosbarreto/compmgr
- http://projects.mini-dweeb.org/projects/unagi
Fenstermanager "Teil eins":
- ich einfach haben ~ 100 loc wm in JavaScript: https://github.com/sidorares/node-x11/blob/master/examples/windowmanager/wm.js
- andere minimalistisch wm (in C), als Referenz gut zu starten: https://code.google.com/p/winmalist/
- wichtigstes Schlüsselwort:
SubstructureRedirect
Ereignismaske. Ein wenig Dokumentation here