2009-09-06 12 views
5

Desidero creare un window manager in una di queste lingue (preferibilmente ruby). Onestamente non ho idea di dove cominciare eccetto che avrò bisogno di una sorta di modulo X da caricare. Quindi, se qualcuno ha la minima idea, sarebbe bello se tu potessi indicarmi la giusta direzione. Grazie(Ruby || Python) window manager

risposta

6

XCB, la prossima API gen per X utilizza un formato XML per definire i protocolli X e genera associazioni linguistiche specifiche con uno script. È simile nel concetto a SWIG tranne che invece di descrivere le API C, descrive i protocolli X.

Attualmente esistono collegamenti per C e Python. In teoria una porta Ruby sarebbe solo una questione di scrittura di un traduttore dal linguaggio di definizione del protocollo XML a Ruby. Il codice Ruby generato potrebbe avvolgere l'API C o implementare il protocollo wire in puro Ruby (consiglio quest'ultimo).

L'API apparentemente ha alcuni vantaggi intrinseci rispetto all'eredità di Xlib relativa al blocco dell'I/O. Ha anche una porta di Windows, abbastanza stranamente.

http://xcb.freedesktop.org/

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

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

2

Hai guardato a http://ruby-xlib-wrap.sourceforge.net/. Questo sembra fornire collegamenti Ruby per XLib.

È possibile provare a utilizzare XWindows prima di provare a scrivere un gestore di finestre.

Perché non iniziare con un desktop, quindi è possibile ottenere un po 'di esperienza.

0

Non Ruby o Python, ma questi window manager sono anche scritte in linguaggi fredde: awesome (Lua) e XMonad (Haskell). Forse puoi sbirciare dentro i loro interni e vedere come funzionano.

2

Nota:

1) Awesome non è scritto in lua, è scritto in C. Esso utilizza Lua come interfaccia di scripting/config.

2) Qtile e Samurai-X sono due wm sono scritti in python.

3) Sottile è un wm che utilizza il rubino come linguaggio di scripting.

Qtile e Sottile sono entrambi gestori di finestre affiancate.

+0

sottile è scritto in C, utilizza solo Ruby come linguaggio di scripting. – unexist