Creación de un gestor de ventanas para Linux
-
28-09-2019 - |
Pregunta
Quiero crear un simple gestor de ventanas de apilamiento (en C
) para uso privado, principalmente con el propósito de aprender y desafiando a mí mismo.
He mirado a través del código fuente twm
que tiene relativamente pocas campanas y silbidos, pero parece muy bajo nivel, ya que no se basa en un conjunto de herramientas de widgets. 1 haría con un conjunto de herramientas tal como GTK + ser preferible? Me temo que algunos de los códigos y las bibliotecas en twm
podría ser demasiado anticuado ( editar en desuso) y quiero que el gestor de ventanas para utilizar las bibliotecas relativamente modernas. En aras de la comprensión de que también estaría interesado en sugerencias de cómo iniciar un gestor de ventanas desde cero - no hay muchos tutoriales para este fin
Actualización: Para aquellos que estén pensando de proyectos similares: Terminé usando Common Lisp y el CLX biblioteca . tinywm-lisp servido de base y la brillante CLFSWM y Stumpwm fueron de gran ayuda. Para referencia utilicé el CLX - X de interfaz común LISP ( advertencia PDF ) y #xlib
en Freenode.
Solución
Haga lo que haga, el uso XCB y no Xlib. Es moderno, asíncrono, más simple y le da acceso directo al protocolo X11.
Otros consejos
A WM es muy minimalista wm2 . No he leído el código fuente y, por tanto, no sé si es un ejemplo de enseñanza. Por supuesto se puede usar bibliotecas que ya hacen gran parte de la abstracción y el trabajo de dibujo para ti como gdk GTK . Pero dado que este proyecto es sólo para el aprendizaje personal, me gustaría ir por el camino difícil y el uso de Xlib directamente.
Estos son algunos enlaces que pueden ser útiles para usted:
Tener un vistazo al código para DWM . El código base es hermoso y fácil de entender. Todo el asunto es de aproximadamente 2000 líneas.
He escrito una serie de tutoriales en profundidad que muestra cómo escribir un gestor de ventanas X11 en C ++:
Además, se puede comprobar a cabo un gestor de ventana sencilla ejemplo, basic_wm, a
Es muy comentado con fines pedagógicos.
En Xlib vs XCB - recomendaría Xlib sobre XCB si usted está empezando a cabo primero. XCB es más eficiente, pero es mucho más bajo nivel y mucho más prolijo (pensar en lenguaje ensamblador para la interfaz gráfica de usuario). Usted no quiere ser una carga para usted mismo con la optimización prematura hasta que ya tiene un trabajo de prototipo.
http://code.google.com/p/partiwm/ es una intentar escribir un gestor de ventanas (suelo de baldosas, no apilar) a partir de cero, podría ser útil para que lea a través del código.
usos Metacity GTK para ciertos elementos de interfaz de usuario. Ver su piratería y README.
En aras de la comprensión de que también estaría interesado en sugerencias de cómo iniciar un gestor de ventanas desde cero
Es posible que desee echar un vistazo al gestor de ventanas AEWM. El código es pequeño y lo hace lo básico bastante bien. Está escrito en C y utiliza Xlib.
xmonad podría ser un lugar bueno para comenzar.