Creazione di un window manager per Linux
-
28-09-2019 - |
Domanda
Voglio creare un window manager semplice accatastamento (in C
) per uso privato, principalmente con lo scopo di imparare e mi sfida.
Ho guardato attraverso il codice sorgente di twm
che ha relativamente pochi fronzoli ma sembra livello molto basso in quanto non è basato su un toolkit di widget. href="http://en.wikipedia.org/wiki/CLX_%28Common_Lisp%29" rel="noreferrer"> 1 Sarebbe utilizzando un kit di strumenti come GTK + preferibile? Ho paura che parte del codice e le librerie in twm
potrebbe essere troppo antiquato ( Modifica: deprecato) e voglio il window manager di utilizzare le librerie relativamente moderni. Per motivi di comprensione vorrei anche essere interessati a proposte come avviare un window manager da zero - non ci sono molti tutorial per questo scopo
Aggiornamento: Per coloro che pensano di progetti simili: ho finito per usare Common Lisp e la CLX libreria . tinywm-lisp servito come base e l'incantevole CLFSWM e stumpwm sono stati di grande aiuto. Per riferimento ho usato il CLX - Common Lisp X Interface ( avvertimento PDF ) e #xlib
su Freenode.
Soluzione
Qualunque cosa tu faccia, l'uso XCB e non Xlib. E', asincrono, più semplice e consente di accedere direttamente al protocollo X11.
modernoAltri suggerimenti
Un WM molto minimalista è WM2 . Non ho letto il codice sorgente e quindi non so se si tratta di un esempio di insegnamento. Naturalmente è possibile utilizzare librerie che già fanno gran parte del disegno astrazione e lavoro per voi come gdk gtk . Ma dal momento che questo progetto è solo per l'apprendimento personale, mi piacerebbe andare nel modo più duro e utilizzare Xlib direttamente.
Ecco alcuni link che potrebbero essere utili per voi:
Date un'occhiata al codice per dwm . La base di codice è bello e facile da capire. L'intera cosa è di circa 2000 linee.
ho scritto una serie di tutorial approfondito che vi mostra come scrivere un window manager per X11 in C ++:
In aggiunta, è possibile controllare un manager semplice finestra esempio, basic_wm, a
E 'pesantemente commentato per scopi pedagogici.
In Xlib vs XCB - consiglierei Xlib oltre XCB se sei prima di partire. XCB è più efficiente, ma è molto più basso livello e molto più prolisso (si pensi assemblaggio lingua per l'interfaccia grafica). Non si vuole gravare te stesso con l'ottimizzazione prematura finché non si dispone già di un prototipo funzionante.
http://code.google.com/p/partiwm/ è un tentare di scrivere un gestore di finestre (piastrelle, senza accatastamento) da zero, potrebbe essere utile a voi per leggere il codice.
usi metacity GTK per alcuni elementi dell'interfaccia utente. Vedere la sua HACKING e README.
Per motivi di comprensione Vorrei anche essere interessati a suggerimenti su come avviare un window manager da zero
Si consiglia di dare un'occhiata al il window manager aewm. Il codice è piccola e fa le basi abbastanza bene. E 'scritto in C e usa Xlib.
Xmonad potrebbe essere un buon posto per cominciare.