Sumario

Con el fin de permitir a los desarrolladores a conocer más acerca de deepin, este artículo proporcionará descripciones con imágenes para explicar el diseño arquitectónico de deepin y la función de los módulos básicos. Esto ayudará a los desarrolladores a tener una visión global de la idea de diseño y las direcciones. Todo el código detallado del implemento y los módulos serán omitidos aquí, para más información sobre el código, por favor refiérase a 1https://github.com/linuxdeepin.

Visión general de la arquitectura

Un sistema operativo de escritorio completo se puede dividir en las siguientes capas:

Se iniciará directamente algunos de los servicios del sistema al escribir la contraseña, como etc Después de que el usuario escribió la contraseña, estos servicios se pueden cargar por adelantado. Esto acortará el 30% del tiempo de inicio comparado con otros entornos de escritorio.

En cuanto a Deepin Desktop Environment, contiene servicios en segundo plano y procesos demonios. Un entorno de escritorio completo proporcionará herramientas de desarrollo gráfico, herramientas binarias y DBus API. Más adelante explicaremos estas partes

Kernel/Controlador Es para «hardware» como CPU, memoria y disco, etc. Esto necesita ser compatible con diferentes tarjetas de red, tarjetas de vídeo, tarjetas de sonido y dispositivos IO, etc.
Mostrar servidor
Mostrar servidor La pantalla de inicio de sesión, simplemente es la interfaz donde puede introducir la contraseña
Recurso de gerencia Se trata de una serie de procesos Demnios para supervisar el estado del hardware y proporcionan información al entorno de escritorio y aplicaciones como red, alimentación, disco, Bluetooth, sonido, teclado e impresora, etc.
Entorno de escritorio
Tienda de aplicaciones Proporciona operaciones para instalar, eliminar y actualizar el software, etc. y mantiene al usuario gestionando el software convenientemente y puede comentar y calificar el software.
Aplicaciones Se trata principalmente de aplicaciones originales de deepin, y aplicaciones , Android, Windows e incluso aplicaciones Web

Mostrar servidor

Introduciremos primero el gestor de visualización. El gestor de visualización se iniciará después de que el servidor X se ha iniciado correctamente.

deepin está usando el LightDM, desarrollado por Ubuntu. Otros gestores de pantalla importantes son GDM de GNOME, KDM de KDE. El uso de LightDM es que es muy ligero y no se vinculará a ningún entorno de escritorio, y que proporciona una interfaz personalizada para GTK +, Qt y HTML5, etc Este es muy conveniente.

El gestor de visualización proporciona principalmente las funciones de autenticación y cambio de usuario para usuarios de inicio de sesión de acuerdo con los permisos de usuario configurados por el sistema. Una vez que el usuario pasó la verificación, ejecutará el siguiente programa de inicio (comúnmente el programa de inicialización para el entorno de escritorio) desde el greeter (interfaz de configuración para LightDM) para mostrar el entorno de escritorio.

Deepin ha desarrollado una interfaz de frontend basada en Qt5, llamada deepin-greeter, así:

Además de las funciones básicas de autenticación, conmutación de usuario, fecha y apagado, también proporciona:

  • La interfaz de control multimedia (en la parte inferior derecha), para permitir a los usuarios cambiar o pausar la música cuando la pantalla está bloqueada o cambiar de usuario.
  • Al arrancar o desbloquear con múltiples pantallas, cambiará la interfaz de bloqueo principal de acuerdo con el cursor.
  • Se iniciará directamente algunos de los servicios del sistema al escribir la contraseña, gestor de energia, cuentas y brillo, etc Después de que el usuario escribió la contraseña, estos servicios se pueden cargar por adelantado. Esto acortará el 30% del tiempo de inicio comparado con otros entornos de escritorio.

DDE Daemon Services

Después de autenticado correctamente por el gestor de visualización, el sistema llamará a los argumentos exec del receptor. Para deepin, este argumento será startdde. Startdde es la aplicación para iniciar Deepin Desktop Environment. Este comando realizará las siguientes operaciones para iniciar y mostrar el entorno de escritorio:

  • Realice la gestión básica de la sesión de escritorio, como las operaciones de cierre de sesión y reinicio;
  • Establezca todo el tema del sistema mediante xsettings para que el entorno de escritorio y las aplicaciones GTK + y Qt puedan cargar correctamente el tema del usuario. El DPI de la pantalla también se carga en esta etapa;
  • Manejar el método de inicio de las aplicaciones mediante las especificaciones proporcionadas por freedesktop, incluyendo ejecutar archivos * .desktop y hacer eventos de alarma;
  • Administrar múltiples pantallas que normalmente pueden mostrar el muelle y el escritorio en la pantalla principal;
  • Maneje el orden de inicio de las aplicaciones. Por ejemplo, se iniciarán primero los componentes principales de dde y luego otras aplicaciónes, para evitar que otras aplicaciones se ejecuten al mismo tiempo, ya que algunos de los servicios del sistema no se cargan, esto podría causar condición de carrera. Y el programa startdde puede juzgar si un programa puede ser cargado o no, para dejar el proceso de inicio en un buen orden;

Cuando el programa startdde se carga, ejecutará el proceso de inicialización de dde-session para proporcionar servicio de back-end para el muelle y el lanzador, incluyendo:

  • Administrar los programas residentes del muelle y del lanzador;
  • Mantener el estado inicial de las aplicaciones;
  • Mantener el estado del espacio de trabajo y la ubicación de las aplicaciones;
  • Mantener el estado y los iconos de las aplicaciones instaladas;

dde-session-initializer es un proceso de daemon para el dock y el lanzador y proporciona la función principal para ellos. No podemos hacer clic en los iconos de la aplicación y cambiar las ventanas de los programas sin este proceso.

dde-session-initializer era anteriormente una parte del dde-session-daemon, dividimos este proceso para aumentar el dock y el lanzador.

dde-session-daemon y dde-system-daemon son los dos procesos del demonio principal para todo el sistema. Ellos mantienen todo el estado del hardware, incluyendo netcard, alimentación, disco, Bluetooth, sonido, impresora, autenticación, compartir, teclado y ratón, etc. para encapsular todo el proceso del daemon y proporcionar la interfaz orientada al diseño del usuario.

dde-session-daemon contiene las operaciones que no necesitan privilegios raíz como el sonido, el teclado y el ratón y la hora de la fecha. Dde-system-daemon contiene la otra parte que necesita privilegios raíz como poder, cuenta, operaciones de archivo y brillante, etc. Este diseño del proceso de sandbox puede limitar los permisos y evitar muchos problemas de seguridad.

dde-session-daemon y dde-system-daemon hacen lo siguientes:

  • Realizar la función de crear, eliminar y gestionar la cuenta;
  • Administrar el distinto estado para varias pantallas, incluyendo la ubicación, dirección, resolución y brillo, etc;
  • Administrar las asociaciones de ficheros y las configuraciones de tema por defecto;
  • Administrar los ajustes de red para redes cableadas e inalámbricas, VPN y DSL;
  • Administrar la configuración de Bluetooth, sonido, fecha y hora, etc.
  • Administrar los ajustes de alimentación, teclado y ratón;
  • Gestionar las operaciones de actualización y arranque del sistema;
  • Proporcionar servicios para multi-touch pad.

Dde-session-daemon y dde-system-daemon funcionan como gnome-session-daemon en GNOME, pero Deepin Team usa el programa para reescribir todo el código de proceso para las necesidades del usuario y obtener un mejor rendimiento. DDE como GNOME y KDE pueden llamar a la biblioteca de infraestructuras (network-manager, upower, udisk, bluez, pluseaudio, cops, polkitd, gvfsd) para ofrecer servicios abstractos y avanzados para entornos de escritorio y aplicaciones.

API DDE

El entorno de escritorio proporcionará una capa de API por encima del proceso de demonio del Deepin Desktop Environment, que contiene herramientas de desarrollo gráfico, herramientas binarias y interfaz DBus API para llamadas directas por entorno de escritorio y aplicaciones sin implementarlas desde cero. La parte DBus API será llamada dinámicamente por los servicios DBus (y no residirá en la memoria), puede llamar a la inteface por cualquier lenguaje de programación. Introduciremos de la imagen de izquierda a derecha:

DTK

DTK (Deepin Tool Kit) es una suite de herramientas de interfaz de usuario basada en Qt5 para escribir y unificar Deepin Desktop y Deepin Original Application, cuyas principales funciones son:

  • Proporcionar una sola instancia o inteface para evitar escribir desde cero.
  • Proporciona una serie de funciones para mover y hacer zoom mediante la biblioteca XCB, no hay necesidad de referirse a las funciones X11 / XCB para crear una ventana sin bordes completa.
  • Proporciona un paquete de controles personalizados hermosos sin crearlos bajo la biblioteca Qt , está listo para trabajar.

Si usted está interesado en él puede referir el código fuente aquí: https: //github.com/linuxdeepin/deepin-tool-kit1, usted puede rápidamente desarrollar un producto elegante por nuestra biblioteca de DTK en vez de directamente por la biblioteca de Qt5. Y le invitamos a comentar y enviar parches para ello.

dde-api binary utils

Esto es principalmente para desarrollar las herramientas binarias dde-session-daemon y dde-system-daemon, abrir los siguientes binarios pueden permitir que otras aplicaciones que utilizan las tecnologías de núcleo directamente y evitar reinventar la rueda:

  • Greeter-helper: Proporciona la interfaz de configuración para el idioma y el teclado, etc. de la pantalla de bloqueo;
  • I

  • mage-blur-helper: Proporciona un fondo borroso es un servicio, que rápidamente puede desenfocar una imagen sin necesidad de escribir su propia aplicación. El algoritmo de desenfoque de Deepin Team solo tarda 30ms para ejecutarse, es más rápido que la mayoría de las implementaciones de la comunidad;
  • Lunar-calendar: Proporcionar servicio para consultar la fecha y la hora;
  • Powersupply: Proporcione una interfaz de alto nivel para la información de alimentación, utilizando udev para obtener el estado de la alimentación y la información de la batería;
  • Soundutils: Proporciona una interfaz para reproducir efectos de sonido de escritorio;
  • Validador: Proporcionar un validador para el nombre de usuario sin probar una gran cantidad de regex;
  • Cursor-helper: Proporciona la configuración del tema del cursor;
  • Drandr: Proporciona una interfaz de alto nivel para x11 randr api para obtener información detallada del monitor;
  • Dxinput: Proporciona una interfaz de alto nivel para x11 xi / xi2 api para obtener y configurar los dispositivos IO;
  • Y un montón de servicios avanzados proporcionados por este proyecto:https: //github.com/linuxdeepin/dde-api, le dan la bienvenida a ampliar su funcion

dde-daemon dbus API

Esta parte fue proporcionada para Deepin Control Center, por dde-session-daemon y dde-system-daemon, principalmente algunas interfaces DBus. Otras aplicaciones también pueden usar esta parte de la API sin saber y escribir algún código de capa inferior. Simplemente introduciremos algunas de las funciones, si está interesado en ellas, puede referir el código del centro de control aquí: https: //github.com/linuxdeepin/dde-control-center

  • Consultar los números de las pantallas, que es la pantalla principal y qué resoluciones son del sistema actual.
  • Consultar los ajustes de idioma, luminosidad y volumen, etc. del sistema actual
  • Consultar el estado de la red, como usar conexión por cable o inalámbrica y si la VPN esta abierta del sistema.
  • Consultar la fecha y hora, zona horaria y el teclado y el ratón, etc del sistema actual.

Toda la información de hardware que muestra el centro de control puede ser consultada por la interfaz DBus del equipo de desarrollo de dde-api, deepin, que refinó estos DBus API durante mucho tiempo, solo puede usarlos sin escribir la biblioteca de nivel inferior (network-manager, Pluseaudio, bluez, upower y udisk, etc.) codifican exhaustivamente, para pasar más tiempo escribiendo funciones avanzadas.

DDE UI

La última parte del Deepin Desktop Environment es la capa de interfaz de usuario, que contiene las siguientes partes:

deepin-wm Hay dos gestores de ventanas: deepin-metacity y deepin-wm, el sistema automáticamente seleccionará dependiendo del rendimiento del hardware y del controlador de pantalla. Deepin-metacity es un gestor de ventanas 2D basado en metacity para ordenador de baja configuración o sin instalar el controlador de pantalla adecuado. Es un bajo consumo de recursos y tiene malos efectos de animación. Deepin-wm es un gestor de ventanas 3D basado en murmullo y también es el gestor de ventanas por defecto. Es conveniente para el conductor apropiado de la exhibición y la computadora alta de la configuración con los efectos elegantes de la animación
dde-desktop Proporciona la rejilla básica del archivo del escritorio y las operaciones básicas del archivo. Dde-desktop usando la biblioteca libdde-file-manager para mantener el mismo diálogo como Deepin File Manger (dde-file-manager)
dde-dock Proporciona icono gráfico de muelle y gestión de estado, el usuario puede cambiar su posición y estilo
dde-launcher Proporciona funciones para mostrar aplicaciones instaladas, así como para buscarlas y ejecutarlas
dde-control-center Proporciona una interfaz de frontend para recursos de hardware, como la cuenta, el tema, la red, Bluetooth, sonido, IO, aplicaciones predeterminadas, fecha de tiempo, actualización de energía y sistema, etc.
dde-osd Proporciona interfaz OSD para el volumen y brillante, etc.
deepin-menu Proporciona una interfaz de usuario de menú contextual unificado UI
deepin-notificaiton Proporciona servicio de notificación para que el sistema muestre diferentes atajos para las distintas aplicaciones
deepin-policykit-agent Proporciona un diálogo de contraseña y autenticación unificado para todas las aplicaciones de acuerdo con las especificaciones de diseño de Deepin UI para mantener tanto GTK + y la aplicación Qt utilizando el mismo diálogo
deepin-icon-theme El tema de iconos más uniforme del mundo, incluye miles de aplicaciones en Deepin Store, puedes verlo aquí:https: //github.com/linuxdeepin/deepin-icon-theme/tree/master/deepin
deepin-gtk-theme Es el tema de la ventana acorde a las especificaciones del diseño de la interfaz de usuario de Deepin (GTK + 2, GTK + 3, Qt4 y Qt5)
deepin-default-settings Proporciona la configuración predeterminada para Deepin Desktop Environment como el papel tapiz y temas de iconos, etc.
qt5-integración Proporciona la interfaz y el tema unificados para las aplicaciones GTK + y Qt mediante la aplicación de parches en la biblioteca GTK + y Qt. Puede escribir una vez para obtener la misma interfaz en las aplicaciones GTK + y Qt

Tienda deepin

La tienda de deepin es la primera aplicación de buena calidad y con una experiencia de interacción excelente en Linux.

Además de las aplicaciones originales de Deepin, soportamos más de 50 aplicaciones de Windows por el proyecto deepin-wine, más de 200 aplicaciones Android (por ejemplo, Angry Birds y algún cliente de vídeo) desarrolladas por Android. La aplicación HTML5 también puede recordar su tamaño de ventana.

Deepin Store se puede dividir como lastore-daemon, lastore-session-helper y deepin-appstore:

  • Lastore-daemon: Es la parte central de la tienda de aplicaciones, que realiza el trabajo de descarga de paquetes, comprobación de hash, análisis de dependencias, administración de caché local, instalación de software, eliminación y actualización. Este proceso daemon se comunicará con los repositorios remotos y mantendrá el proceso de actualización y seguridad de todo el sistema. Lastore-daemon también agregará algunos ganchos al programa apt / dpkg para prevenir el daño de la instalación en el terminal.
  • Lastore-session-helper: Es el ayudante del lastore-daemon, que ejecutará algunas operaciones de sesión de usuario como enviar notificaciones a los usuarios, para garantizar la seguridad al instalar el software, dividimos esta parte del código en lastore-session- helper.
  • Deepin-appstore: Es el cliente y la interfaz de la tienda de aplicaciones, simplemente un shell de aplicación basado en CEF para manejar la interacción del usuario e incrustar una página web. Una vez que el servidor tiene un nuevo software de actualización, le dirá a deepin-appstore para actualizar la página web. También contiene la interfaz para comentarios y operaciones de puntuación. Técnicamente, deepin-appstore es un simple navegador web como cliente nativo.