Cómo funcionan los gráficos en Linux: descripción general de diferentes entornos de escritorio

Este artículo trata sobre cómo funcionan los gráficos en Linux y de qué componentes están compuestos. Contiene muchas capturas de pantalla de varias implementaciones de entornos de escritorio. 



Si realmente no distingue entre KDE y GNOME, o lo hace, pero le gustaría saber qué otras alternativas hay, este artículo es para usted. Es una descripción general y, aunque contiene muchos nombres y pocos términos, el material también será útil para principiantes y solo para Linux.



El tema también puede interesar a los usuarios avanzados al configurar el acceso remoto y al implementar un cliente ligero. A menudo me encuentro con usuarios de Linux bastante experimentados con las declaraciones "sólo existe la línea de comandos en el servidor, y no planeo estudiar los gráficos con más detalle, ya que todo esto es necesario para los usuarios normales". Pero incluso los conocedores de Linux están sorprendidos y felices de descubrir la opción "-X" del comando ssh (que es útil para comprender cómo funciona y funciona el servidor X).



Una fuente



He estado enseñando cursos de Linux en LANIT Networking Academy durante casi 15 años.»Y estoy seguro de que muchas de esas más de cinco mil personas a las que capacité leen y probablemente escriben artículos sobre Habr. Los cursos son siempre muy ricos (la duración promedio del curso es de cinco días), es necesario hablar sobre temas que requieren al menos diez días para familiarizarse completamente. Y siempre durante el curso, dependiendo de la audiencia (recién llegados reunidos o administradores experimentados), así como de las "preguntas de la audiencia", elijo qué transmitir con más detalle, y qué es más superficial, para dedicar más tiempo a las utilidades de la línea de comandos y su aplicación práctica. ... Hay bastantes de los que tienen que sacrificarse un poco. Estos son "Historia de Linux", "Diferencias en las distribuciones de Linux", "Acerca de las licencias: GPL, BSD, ...", "Acerca de gráficos y entornos de escritorio" (el tema de este artículo), etc. No es que no sean importantes,pero generalmente hay muchas preguntas más relevantes "aquí y ahora" y solo unos cinco días ... Sin embargo, para una comprensión general de los conceptos básicos del sistema operativo Linux, comprender la variedad disponible (de modo que incluso usando una distribución específica de Linux, todavía tenga una visión más amplia de todo esto un mundo enorme e inmenso que se llama "Linux") es útil y necesario estudiar estos temas. 



En el transcurso del artículo, para cada componente, proporciono enlaces para aquellos que quieran profundizar en el tema, por ejemplo, a artículos en Wikipedia (mientras señalo una versión más completa / útil si hay artículos en inglés y ruso).



Para ejemplos básicos y capturas de pantalla, utilicé la distribución openSUSE. Cualquier otra distribución desarrollada por la comunidad podría usarse con una gran cantidad de paquetes en el repositorio. Es difícil, pero posible, demostrar la variedad de diseños de escritorio en una distribución comercial, ya que a menudo solo utilizan uno o dos de los entornos de escritorio más conocidos. Por lo tanto, los desarrolladores reducen la tarea de lanzar un sistema operativo estable y depurado. En el mismo sistema, instalé todo el DM / DE / WM (explicación de estos términos a continuación) que encontré en el repositorio. 



Las capturas de pantalla con "marcos azules" se toman en openSUSE. 



Se hicieron capturas de pantalla con "marcos blancos" en otras distribuciones, se muestran en la captura de pantalla. 



Se tomaron capturas de pantalla con "marcos grises" de Internet, como ejemplos de diseños de escritorio de antaño.



Vamos a empezar.



Los principales componentes que componen los gráficos



Resaltaré tres componentes principales y los enumeraré en el orden en que comienzan al inicio del sistema: 



  1. DM (Administrador de visualización);
  2. Servidor de visualización;
  3. DE (entorno de escritorio).


Además, como subelementos importantes en el entorno de escritorio: 



  • Administrador de aplicaciones / Lanzador / Selector (botón de inicio); 
  • WM (Administrador de ventanas);
  • varios programas de software que vienen con el entorno de escritorio.


Más detalles sobre cada artículo.



DM (Administrador de visualización)



La primera aplicación que se inicia cuando se inician los "gráficos" es DM (Administrador de visualización), un administrador de visualización. Sus principales tareas:



  • preguntar a qué usuarios permitir la entrada al sistema, solicitar datos de autenticación (contraseña, huella digital);
  • elija qué entorno de escritorio iniciar.


Por el momento, se utilizan ampliamente varias distribuciones: 



  • SDDM (reemplazado KDM ),
  • GDM ,
  • LightDM ,
  • XDM .
  • También se puede mencionar Fly-DM (usado en AstraLinux).


La lista de DM existentes se mantiene actualizada en el artículo de Wiki. 











Vale la pena señalar que las siguientes capturas de pantalla usan el mismo administrador de pantalla LightDM, pero en diferentes distribuciones (las distribuciones se nombran entre paréntesis). Mira lo diferente que puede verse este DM gracias al trabajo de los diseñadores de varias distribuciones.













Lo principal en esta variedad es dejar claro que existe tal aplicación que se encarga de lanzar gráficos y permitir al usuario acceder a estos gráficos, y existen diferentes implementaciones de esta aplicación que difieren en apariencia y poca funcionalidad (elección de entornos de diseño, elección del usuario, versión para mal ver usuarios, disponibilidad de acceso remoto a través del protocolo XDMCP ).



Servidor de pantalla



Display Server es una especie de base gráfica, cuya tarea principal es trabajar con una tarjeta de video, un monitor y varios dispositivos de entrada (teclado, mouse, touchpads). Es decir, una aplicación (por ejemplo, un navegador o un editor de texto) que se representa en "gráficos" no necesita saber cómo trabajar directamente con dispositivos, no necesita saber acerca de los controladores. La X Window se encarga de todo esto.



Cuando hablamos de Display Server, durante muchos años en Linux, y en Unix, se refería a la aplicación X Window System o, en la gente común, X (X). 



Muchas distribuciones ahora están reemplazando a X con Wayland . También puedes leer: 









Para empezar, lancemos X y varias aplicaciones gráficas en ellas.



Taller "ejecutar X y aplicaciones en él"



Haré todo desde el usuario del webinaruser recién creado (sería más fácil, pero no más seguro, hacer todo como root).



  • Dado que X'am necesita acceso a los dispositivos, doy acceso: la lista de dispositivos se determinó observando los errores al iniciar X'ov en el registro (/home/webinaruser/.local/share/xorg/Xorg.77.log) 


% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*



  • Después de eso, comienzo X's:


% X -retro :77 vt8 & 



Opciones: * -retro - se ejecuta con un fondo clásico "gris", no negro como predeterminado; *: 77 - Establecí (es posible cualquiera en un rango razonable, solo: 0 probablemente ya esté ocupado por un gráfico que ya se está ejecutando) número de pantalla, un identificador único real mediante el cual será posible distinguir entre varias X en ejecución; * vt8: indica la terminal, aquí / dev / tty8, en la que se mostrarán las X). 



  • Lanzamos la aplicación gráfica:


Para hacer esto, primero establecemos una variable por la cual la aplicación entenderá cuál de las X se está ejecutando en mí para enviar lo que se necesita dibujar: 



% export DISPLAY=":77" 



Puede ver la lista de X en ejecución de esta manera:



ps -fwwC X



Después de configurar la  variable, puede iniciar aplicaciones en nuestra X 's - por ejemplo, pongo en marcha el reloj:



% xclock -update 1 & 



% xcalc & 



% xeyes -g 200x150-300+50 &






Ideas clave y conclusiones de este fragmento:



  • X' : , , ,
  • X' — ( «--retro») (, 1920x1080 1024x768), .
  • «» , X' .
  • X' .
  • DISPLAY , ( X' ), ,  X'. ( X', .) X' -auth, XAUTHORITY xhost.
  • ( X-) X' — // «-g ()x()+()+()». «»  .
  • Dos términos que vale la pena expresar: servidor X (como se llama a las X) y clientes X (como se llama a cualquier aplicación gráfica lanzada en X). Hay un poco de confusión en la comprensión de esta terminología, muchos la entienden exactamente al revés. En el caso de que yo desde la "máquina cliente" (en la terminología del acceso remoto) me conecte al "servidor" (en la terminología del acceso remoto) para mostrar una aplicación gráfica del servidor en mi monitor, entonces el servidor X se inicia en la máquina donde el monitor ( es decir, en la "máquina cliente", no en el "servidor"), y los clientes X se inician y se ejecutan en el "servidor", aunque se muestran en el monitor de la "máquina cliente". 




Componentes DE



A continuación, echemos un vistazo a los componentes que normalmente componen un escritorio.



Componentes DE: botón de inicio y barra de tareas



Comencemos con el llamado botón "Inicio". Suele ser un subprograma independiente que se utiliza en la barra de tareas. También suele tener un subprograma para cambiar entre aplicaciones en ejecución.





En cuanto a los diferentes entornos de escritorio, resumiría dichas aplicaciones bajo el nombre general "Administrador de aplicaciones (Launcher / Switcher)", es decir, una herramienta para administrar aplicaciones (lanzar y alternar entre las lanzadas), y también indicar las utilidades que son un ejemplo de una aplicación de este tipo. ...



  • Aparece como un botón "Inicio" en la "barra de tareas" clásica (longitud completa de uno de los bordes de la pantalla):



    ○ xfce4-panel,

    ○ mate-panel / gnome-panel,

    ○ vala-panel,

    ○ tint2.
  • «MacOS- » ( ), . — « ».



    ○ docky,

    ○ latte-dock,

    ○ cairo-dock,

    ○ plank.
  • / , « » ( ):



    ○ sxhkd.
  • - «» ( . Launch ()):



    ○ dmenu-run,

    ○ rofi -show drun,

    ○ albert,

    ○ grun.




DE: WM (Window Manager)



Más en ruso



Más en inglés



WM (Administrador de ventanas): un tipo de aplicación que se encarga de administrar las ventanas, agrega la capacidad de:



  • mover ventanas por el escritorio (incluida la estándar manteniendo presionada la tecla Alt para cualquier parte de la ventana, no solo el título);
  • cambiar el tamaño de las ventanas, por ejemplo, arrastrándolas fuera del "marco de la ventana";
  • agrega un "título" y botones para minimizar / maximizar / cerrar la aplicación a la interfaz de la ventana;
  • el concepto de qué aplicación está enfocada.




Enumeraré los más famosos (entre paréntesis indico en qué se usa DE por defecto):







También enumeraré "WM antiguo con elementos DE". Aquellos. Además del administrador de ventanas, tienen elementos como el botón Inicio y la barra de tareas, que son más inherentes a un DE completo. Sin embargo, ¿qué edad tienen si tanto IceWM como WindowMaker ya lanzaron sus versiones actualizadas en 2020? Resulta que es más correcto no "viejos", sino "veteranos":















Además del "clásico" ("administradores de ventanas de pila"), vale la pena mencionar los WM en mosaico, que le permiten colocar ventanas en mosaico en toda la pantalla, así como para algunas aplicaciones, un escritorio separado para cada aplicación lanzada en la pantalla completa. Esto es un poco inusual para las personas que no los han usado antes, pero como yo mismo he estado usando una interfaz de este tipo durante mucho tiempo, puedo decir que es bastante conveniente y se acostumbra rápidamente a dicha interfaz, después de lo cual los administradores de ventanas "clásicos" no parecen convenientes.







También vale la pena mencionar por separado el proyecto Compiz y un concepto como "Composite Window Manager", que utiliza la aceleración de hardware para mostrar transparencia, sombras y varios efectos tridimensionales. Hace unos 10 años, hubo un auge de los efectos 3D en los escritorios Linux. Muchos de los gestores de ventanas integrados de DE ahora aprovechan en parte las capacidades compuestas. Wayfire apareció recientemente , un producto con una funcionalidad de Compiz similar para Wayland.





También se puede encontrar una lista detallada de diferentes administradores de ventanas en  el artículo de comparación .



Componentes DE: resto



También vale la pena señalar los siguientes componentes del escritorio (aquí utilizo términos en inglés bien establecidos para describir el tipo de aplicación; estos no son los nombres de las aplicaciones en sí):



  • Applets:
  • Software (kit de herramientas de widgets): a menudo se proporciona un "conjunto mínimo" de software con el entorno:


DE (entorno de escritorio)



Más en inglés



A partir de los componentes enumerados anteriormente, se obtiene el denominado "entorno de diseño de escritorio". A menudo, todos sus componentes se desarrollan utilizando las mismas bibliotecas gráficas y los mismos principios de diseño. Esto, como mínimo, mantiene un estilo general para la apariencia de las aplicaciones.



Aquí podemos destacar los siguientes entornos de escritorio actualmente existentes:





GNOME y KDE se consideran los más comunes, y XFCE les pisa los talones.





La comparación por varios parámetros en forma de tabla se puede encontrar en el artículo de Wikipedia correspondiente .  



Variedad DE





Project_Looking_Glass



Incluso hay ejemplos tan interesantes de la historia: en 2003-2007 se hizo un "diseño de escritorio 3D" para Linux llamado "Project Looking Glass" de Sun. Yo mismo usé este escritorio, o más bien "jugué", ya que era difícil de usar. Este "diseño 3D" se escribió en Java en una época en la que no existían tarjetas gráficas 3D. Por lo tanto, todos los efectos los contaba el procesador, y la computadora tenía que ser muy potente, de lo contrario todo funcionaba lentamente. Pero resultó maravillosamente. Las placas de aplicación tridimensionales se pueden girar / expandir. Era posible convertir un cilindro de un escritorio con papel tapiz desde un panorama de 360 ​​grados. Había varias aplicaciones hermosas propias: por ejemplo, escuchar música en forma de "cambiar CD", etc. Puedes mirar en youtubevideo sobre este proyecto, solo la calidad de estos videos probablemente sea pobre, ya que en esos años no era posible subir videos de alta calidad.









Escritorio ligero Xfce . El proyecto existe desde hace mucho tiempo, desde 1996. En los últimos años, ha sido bastante popular, en contraste con los más pesados ​​KDE y GNOME, que en muchas distribuciones requieren una interfaz de escritorio liviana y "clásica". Tiene muchas configuraciones y una gran cantidad de sus programas: terminal (xfce4-terminal), administrador de archivos (thunar), visor de imágenes (ristretto), editor de texto (mousepad).



 



Pantheon 



Usado en la distribución "Elementary OS". Aquí podemos decir que hay "escritorios" que se desarrollan y usan dentro de una distribución separada y no se usan mucho (si no "no se usan en absoluto") en otras distribuciones. Al menos aún no han ganado popularidad y no han convencido a una gran parte de la audiencia de los beneficios de su enfoque. Pantheon tiene como objetivo construir una interfaz similar a macOS. 





Opción de muelle:





Ilustración



Gran énfasis en los efectos gráficos y los widgets (desde los días en que otros entornos de escritorio no tenían widgets en el escritorio, como el calendario / reloj). Utiliza sus propias bibliotecas. Hay un gran conjunto de sus aplicaciones "hermosas": terminal (Terminología), reproductor de video (Rage), visualización de imágenes (Ephoto).





Moksha



Esta es una bifurcación de Enlightenment17 y es utilizada por la distribución BodhiLinux. 





GNOME



Originalmente una interfaz de escritorio "clásica", creada en contraste con KDE, que estaba escrito en la biblioteca Qt, en ese momento distribuida bajo una licencia que no era muy conveniente para distribuciones comerciales. 





GNOME_Shell



Desde la tercera versión, GNOME comenzó a distribuirse con GNOME Shell, que tiene un "aspecto no clásico", que no gusta a todos los usuarios (cualquier cambio drástico en las interfaces es difícil de aceptar para los usuarios). Como consecuencia, la aparición de proyectos fork que continúan el desarrollo de este escritorio en el estilo "clásico": MATE y Cinnamon. Se utiliza de forma predeterminada en muchas distribuciones comerciales. Tiene una gran cantidad de configuraciones y aplicaciones. 





MATE se 



basa en GNOME2 y continúa evolucionando este entorno de diseño. Tiene una gran cantidad de configuraciones y bifurcaciones de aplicaciones que se usaron en GNOME2 (se usan nuevos nombres) para no confundir las bifurcaciones con su nueva versión para GNOME3).





Cinnamon Una



bifurcación de GNOME Shell que proporciona a los usuarios una interfaz de estilo "clásico" (como fue el caso en GNOME2). 



Tiene una gran cantidad de configuraciones y las mismas aplicaciones que GNOME Shell.





Budgie Una bifurcación de



GNOME de estilo "clásico" que evolucionó como parte de la distribución Solus, pero que ahora también se incluye como escritorio independiente en varias otras distribuciones.





KDE_Plasma (o, como se le llama a menudo, simplemente KDE) 



Un entorno de escritorio desarrollado por el proyecto KDE. 



Tiene una gran cantidad de configuraciones disponibles para el usuario común desde la interfaz gráfica y muchas aplicaciones gráficas desarrolladas dentro de este escritorio.





Trinity



En 2008, KDE lanzó su nueva implementación de KDE Plasma (el motor de escritorio fue reescrito en gran medida). Además, al igual que con GNOME / MATE, no a todos los fans de KDE les gusta. Como resultado, apareció una bifurcación del proyecto, continuando el desarrollo de la versión anterior, llamada TDE (Trinity Desktop Environment).





Deepin_DE



Uno de los entornos de escritorio más nuevos escritos con Qt (en el que está escrito KDE). Tiene muchas configuraciones y es bastante hermoso (aunque este es un concepto subjetivo) y una interfaz bien desarrollada. Desarrollado como parte de la distribución Deepin Linux. También hay paquetes para otras distribuciones.





Fly 



Un ejemplo de un entorno de escritorio escrito con Qt. Desarrollado como parte de la distribución Astra Linux. 









Entorno de escritorio ligero LXQt . Como varios ejemplos anteriores, escritos con Qt. De hecho, es una continuación del proyecto LXDE y el resultado de una fusión con el proyecto Razor-qt.



Como puede ver, el escritorio en Linux puede verse muy diferente y habrá una interfaz adecuada para todos los gustos: desde muy hermosa y con efectos 3D hasta minimalista, desde "clásico" a inusual, desde el uso activo de los recursos del sistema hasta liviano, desde grande pantallas a tabletas / teléfonos inteligentes.



Bueno, espero haber podido dar una idea de cuáles son los componentes principales de los gráficos y el escritorio en Linux.



El material de este artículo se lanzó en julio de 2020 en un seminario web. Puedes verlo aquí .



Eso es todo. Espero que haya sido de ayuda. Si tiene alguna pregunta o comentario, por favor escriba. Estaré encantado de responder. ¡Pues ven a estudiar a LANIT Networking Academy !



All Articles