Pregunta

Uno de mis nuevos proyectos para el hogar será un simple Administrador de ventanas, pero antes de comenzar necesito saber algunas cosas:

  • ¿Cuál es el mejor idioma para hacer esto?
  • ¿Dónde obtener algunos recursos para aprender?
¿Fue útil?

Solución

Una decisión importante es cómo vas a hablar con el servidor X. Puede usar los enlaces Xlib para su idioma de elección, o puede usar el nivel superior XCB enlaces. (Si está loco , puede abrir un socket al servidor X directamente .)

Para saber cómo debe comportarse un administrador de ventanas, hay dos documentos que especifican las convenciones y políticas: EWMH y ICCCM 1 . Cumplir con esto significa que su administrador de ventanas se comportará bien en GNOME, KDE, XFCE y en cualquier otro entorno de escritorio que se presente, aunque simplemente ignorarlos es ciertamente más fácil en su primer intento.

Un administrador de ventanas no tiene por qué ser una enorme y complicada bola de C: los administradores de ventanas exitosos se han escrito en lenguajes de alto nivel como Lisp, Haskell y Python, e incluso algunos en C han permanecido pequeños y legibles. XMonad , escrito en Haskell, permaneció por debajo de 1000 líneas durante bastante tiempo. StumpWM (Common Lisp) y DWM (C) son bastante minimalistas. Es posible que pueda leer su código fuente para obtener inspiración sobre cómo diseñar un WM.


1 Elijah Newren escribió:

  

NO VAYAS A LEER ESAS COSAS. ESTÁN REALMENTE, MUY ABURRIDOS. Si lo hace, probablemente terminará durmiendo en lugar de piratear Metacity. ;-)

Ahora que lo pienso, la documentación de Metacity es muy útil para diga cómo interactúa con Windows y qué tipo de propiedades extendidas admite.

Otros consejos

el tinywm en C puede ser útil para comenzar.

Mientras que otro lenguaje y un conjunto de bibliotecas son técnicamente posibles, creo que la mejor opción de lenguaje sería C, y las bibliotecas Xlib o XCB. La mayoría de los gestores de ventanas para X usan eso, y ya hay mucho impulso aquí y madurez para estas bibliotecas particulares.

Algunos documentos de interés:

  • Manual de Xlib : debe leer para la programación de X de bajo nivel.
  • ICCCM : convenciones e interfaces para la comunicación entre las aplicaciones X y el administrador de ventanas.
  • XCB : un reemplazo del siglo XXI para Xlib. Este es un nivel un poco más bajo y toma menos decisiones por usted que Xlib. Por lo que deduzco, el resultado es un rendimiento potencialmente mejor debido a un mayor potencial de asincronía, pero debo advertir que nunca he trabajado con él.
  • ¿Cuál es el mejor idioma para hacer esto?

    Con el que se sienta más cómodo. Hay muchos ejemplos de gestores de ventanas exitosos en muchos idiomas diferentes. Qtile y xmonad son buenos ejemplos, escritos en Python y Haskell respectivamente.

  • ¿Dónde obtener algunos recursos para aprender?

    Me gustaría ver algunos de los gestores de ventanas existentes. Hay muchos, por lo que al menos algunos de ellos deben tener un código legible. Aquí está la Lista completa de administradores de ventanas para Unix .

Sé que este tema es un poco viejo, pero me preguntaba lo mismo. Este administrador de ventanas llamado i3 parece ser un buen lugar para aprender también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top