2009-09-06 3 views
5

Ich möchte einen Fenstermanager in einer dieser Sprachen erstellen (vorzugsweise Ruby). Ich habe ehrlich gesagt keine Ahnung, wo ich anfangen soll, außer dass ich irgendeine Art von X-Modul zum Laden brauche. Wenn jemand eine Ahnung hat, wäre es großartig, wenn Sie mich in die richtige Richtung weisen könnten. Danke(Ruby || Python) Fenstermanager

Antwort

6

XCB, die nächste Gen-API für X, verwendet ein XML-Format zur Definition von X-Protokollen und generiert spezifische Sprachbindungen mit einem Skript. Es ähnelt dem Konzept von SWIG, außer dass es C-APIs beschreibt und X-Protokolle beschreibt.

Gegenwärtig gibt es Bindungen für C und Python. Ein Ruby-Port wäre theoretisch nur eine Frage des Schreibens eines Übersetzers aus der XML-Protokolldefinitionssprache in Ruby. Der generierte Ruby-Code könnte entweder die C-API umbrechen oder das Wire-Protokoll in reinem Ruby implementieren (ich empfehle letzteres).

Die API hat offensichtlich einige inhärente Vorteile gegenüber der Legacy-Xlib im Zusammenhang mit blockierenden E/A. Es hat auch einen Windows-Port, seltsam genug.

http://xcb.freedesktop.org/

http://xcb.freedesktop.org//XcbPythonBinding/

http://xcb.freedesktop.org//win32port/

2

Haben Sie sich http://ruby-xlib-wrap.sourceforge.net/ angesehen. Dies scheint Ruby-Bindungen für XLib bereitzustellen.

Sie können mit XWindows experimentieren, bevor Sie versuchen, einen Fenstermanager zu schreiben.

Warum nicht mit einem Desktop starten, damit Sie etwas Erfahrung sammeln können.

0

Nicht Rubin- oder Python, aber diese Window-Manager sind auch in kühlen Sprachen geschrieben: awesome (Lua) und XMonad (Haskell). Vielleicht können Sie in ihre Interna schauen und sehen, wie sie funktionieren.

2

Hinweis:

1) Awesome ist nicht in lua geschrieben, es ist in C geschrieben Es verwendet Lua als scripting/config-Schnittstelle.

2) Qtile und Samurai-X sind zwei wm sind in Python geschrieben.

3) Subtil ist ein wm, das Ruby als Skriptsprache verwendet.

Qtile und Subtile sind beide Fensterverwalter.

+0

subtil ist in C geschrieben, es verwendet nur Ruby als Skriptsprache. – unexist