¿Cuáles son los subsistemas de la interfaz de usuario, sus componentes y responsabilidades?

Estoy tratando de comprender los diferentes subsistemas que están a cargo de la interfaz de usuario, la terminología para referirse a ellos y cómo están estructurados; hasta ahora sé que hay:

En el nivel superior:

escritorios ? (kde, gnome, etc.)

Entonces nosotros tenemos:

  • un administrador de pantalla (también llamado administrador de escritorio o entorno de escritorio)
  • gerente de window
  • ¿Algo más?

Estoy haciendo de esto una wiki comunitaria, me gustaría que sea un lugar central para * todo lo que hay que saber (desde la perspectiva del usuario) con respecto a los subsistemas de la interfaz de usuario en Linux; lo que me gustaría saber es cuáles son los componentes de cada uno, y cuáles son las responsabilidades de cada uno, es decir, me gustaría saber cosas como:

  • qué es exactamente lo que está a cargo de las teclas rápidas globales, cuando abro el dialog "ejecutar la aplicación", quién está haciendo eso, cuando presiono una tecla para mostrar el escritorio, ejecuto un terminal, maximizo una window, etc., quién está capturando eso y enviándolo a la window derecha;
  • quién está a cargo de dibujar el escritorio, los espacios de trabajo, etc.
  • ¿Cuáles son las variables de entorno que pueden darme información con respecto a estos componentes?
  • ¿El "menu principal" es un subsistema o un componente de un subsistema?

También sería bueno comstackr una list de los escritorios / subsistemas más populares, que se ejecutan debajo de cada uno, ¿se pueden combinar escritorios / entornos de escritorio / administradores de windows, etc.?

Finalmente, ¿cómo puedo decir qué desktop / subsistemas se están ejecutando (¿activo?) En el sistema, ¿pueden diferentes usuarios tener un subsistema diferente cada uno?

En primer lugar, un Administrador de visualización (o DM, por ejemplo, xdm, gdm, kdm) no es lo mismo que un entorno de escritorio (o DE, por ejemplo, GNOME, KDE, XFCE).

El Administrador de visualización se ocupa del inicio de session gráfico y decide (o le permite elegir) qué session ejecutar. O qué session * s * en caso de que elija la opción de menu "cambiar de usuario".

Un entorno de escritorio es básicamente una colección de progtwigs (administrador de pantallas, administrador de windows, administrador de sesiones, paneles, herramientas de configuration, etc.) y bibliotecas (por ejemplo, Gtk) que intentan proporcionar un entorno consistente e integrado para trabajar.

Un administrador de windows administra windows: dónde ubicarlas, moverlas, networkingimensionarlas, minimizarlas / maximizarlas, colocarlas en mosaico, etc.). También maneja los atajos para hacer esas cosas. En algunos casos, el administrador de windows también pinta los bordes de las windows; en otros casos, esta tarea no se lleva a cabo a un "decorador de windows".

El dialog "Ejecutar aplicación" en GNOME es parte de gnome-panel , pero en otro DE podría ser otra parte del entorno.

Quién está a cargo de pintar windows, etc. depende; en caso de que haya un "compositor" en uso (a menudo parte del administrador de windows, por ejemplo, en Compiz), el compositor pinta las windows en la pantalla, de lo contrario (como era habitual en el pasado) es el server X quien lo hace.

Los menus principales se ponen en la pantalla por una parte de gnome-panel, pero los datos provienen de un grupo de files en /usr/share/applications/ (posiblemente combinados con un directory equivalente en su hogar para cambios personales) ) Esos files tienen una estructura definida por FreeDesktop.org (una plataforma para diferentes DEs para queueborar en infraestructura común), de modo que GNOME y KDE conocen los mismos progtwigs (pero aún pueden mostrarlos de manera diferente, y en algunos casos priorizar progtwigs "nativos") sobre los "extranjeros").

Y sí, diferentes usuarios pueden usar una configuration de session diferente (e incluso pueden definir sus propios). En GDM, pruebe el menu desplegable Sesión para las opciones disponibles.

Además, es posible mezclar y combinar varios componentes, pero eso a veces dará como resultado una menor cooperación y una pérdida de "suavidad" en la forma en que funcionan las cosas. Un ejemplo muy conocido en el que las cosas se intercambian es, por supuesto, Compiz, que reemplaza a Metacity si quieres efectos especiales de escritorio. Pero hay muchos otros cambios posibles.

Un administrador de escritorio administra su hardware principalmente, mientras que un administrador de windows administra su software. Por ejemplo, la administración de energía, los protectores de pantalla, el performance del sistema, la pantalla de inicio de session, etc., son administrados por un administrador de escritorio. Su gestor de windows gestiona el tema, la location de la window, el set de widgets y de icons, las fonts, etc.

Puede tener un administrador de windows instalado sin un administrador de escritorio. Es común iniciar session en una terminal virtual, luego tener una secuencia de commands de inicio de session ejecute su administrador de windows para iniciar su "escritorio".

Los administradores de escritorio son GNOME, KDE y CDE. Los administradores de windows son Metacity, Openbox, Enlightenment, Awesome, etc.

Para responder algunas de sus preguntas directamente:

  • el administrador de windows está principalmente a cargo de los atajos de keyboard de escritorio.
  • el administrador de windows se encarga de dibujar el escritorio, espacios de trabajo, ubicaciones de windows, etc. como se mencionó anteriormente
  • no hay muchas variables de entorno para la GUI. Por lo general, estos solo son aplicables al caparazón detrás de un terminal. Sin embargo, puede ejecutar set y env para tener una idea de lo que se establece.
  • no estoy seguro de lo que quiere decir con el "menu principal" como un subsistema o componente de un subsistema. Los menus son parte del administrador de windows.

Ya he mencionado algunos administradores de escritorio y administradores de windows populares. Se puede encontrar más usando Google.

Dependiendo de su sistema operativo, probablemente haya un file de configuration ASCII que haya definido su escritorio preferido. Por ejemplo, en Debian GNU / Linux, esto se define en la /etc/X11/default-display-manager . También podría ejecutar 'ps -ef | usuario grep 'donde' usuario 'es el nombre del inicio de session de algún usuario en el sistema, y ​​vea qué processs se enumeran, y cuál es el escritorio gráfico que se está ejecutando. Para mí, es 'metacity'.