Sumário

A fim de permitir que os desenvolvedores conheçam mais sobre o Deepin, este artigo fornecerá descrições com imagens para explicar o design arquitetônico do Deepin e a função de módulos básicos. Isso ajudará os desenvolvedores a ter uma visão global da ideia de design e direções. Todos os códigos e módulos de implementação detalhados serão omitidos aqui, para obter mais informações sobre o código, consulte https://github.com/linuxdeepin.

Visão geral da arquitetura

Um sistema de operação de desktop completo pode ser dividido pelas seguintes camadas:

Kernel/Controlador É para hardware como CPU, memória e disco, etc. e precisa ser compatível com diferentes cartões netcard, placa gráfica, placa de som e dispositivos de entrada e saída, etc.
Servidor de Exibição Inicialize a partir do kernel, podemos ver o plymouth (também a tela inicial do sistema), e quando você vê a tela de login e solicita que você insira a senha, o driver de exibição, também o X Server, apenas é iniciado. É o deus da interface gráfica do sistema Linux. Toda a solicitação de pintura será enviada para o servidor X para manipular. Além disso, é a camada abstrata para entrada e exibição, os desenvolvedores podem usar as APIs X11 / XCB sem a informação detalhada dos drivers. Mas agora a maioria dos usuários usará a biblioteca GTK + / Qt mais alta para escrever suas aplicações.
Gerenciador de Display Simplesmente é a interface que você pode inserir a senha, a tela de login
Gerenciador de Recursos É uma série de processos daemon para monitorar o status do hardware e fornecerá informações para o ambiente de trabalho e aplicativos como rede, energia, disco, Bluetooth, som, teclado e impressora, etc.
Ambiente de Trabalho Quanto ao Deepin Desktop Environment, contém serviços backend e processos daemon. Um ambiente de desktop completo proporcionará desenvolvimento gráfico adquirido, ferramentas binárias e API DBus. Mais tarde, explicaremos essas partes.
Loja de Aplicativos Ele fornece operações para instalação, remoção e atualização de software, etc. e deixa o usuário gerenciar softwares convenientemente, e pode comentar e avaliar o software.
Aplicações É principalmente o Aplicações Originais Deepin, aplicativos cooperativos, Android, Windows e até aplicativos da Web.

Gerenciador de Display

Primeiro apresentamos o gerenciador de exibição. O gerenciador de exibição será iniciado após o servidor X ter iniciado com sucesso.

O Deepin está usando o LightDM, desenvolvido pelo Ubuntu. Outros principais gerenciadores de exibição são: GDM do GNOME e KDM do KDE. Usamos o LightDM porque ele é muito leve e não vincula nenhum ambiente de desktop, e fornece uma interface personalizada para GTK +, Qt e HTML5, etc. É muito conveniente.

O gerenciador de exibição está fornecendo principalmente as funções de autenticação e troca de usuário. O login agora está de acordo com as permissões de usuário configuradas pelo sistema. Uma vez que o usuário passou pela verificação, ele executará o próximo programa de inicialização (comumente o programa de inicialização para o ambiente de trabalho) do greeter (interface de configuração para LightDM) para mostrar o ambiente da área de trabalho.

O Deepin desenvolveu uma interface de front-end com base no Qt5, chamado deepin-greeter, como este:

Além da autenticação básica,troca de usuário, data e hora e das funções de desligamento, também será fornecida:

  • A interface do controle de multimídia (no canto inferior direito), deixa os usuários trocar ou pausar as músicas enquanto a tela está bloqueada ou enquanto troca de usuário.
  • Ao iniciar ou desbloquear com múltiplas telas, ele exibira a interface de bloqueio na tela em que o cursor estiver.
  • Ele irá iniciar diretamente alguns dos serviços do sistema ao digitar a senha, como energia, conta e brilho, etc. Depois que o usuário digitou a senha, esses serviços podem ser carregados com antecedência. Isso diminuirá 30% do tempo de inicialização comparado com outros ambientes de área de trabalho.

DDE Daemon Services

Depois de ter sido ativado com sucesso pelo gerenciador de exibição, o sistema chamará os argumentos exec do greeter. Para o Deepin, este argumento será. startdde é o aplicativo para iniciar o Deepin Desktop Environment. Este comando fará as seguintes operações para iniciar e exibir o ambiente da área de trabalho:

  • Execute a gerenciamento básica da sessão da área de trabalho, como operações de início de sessão e reinicialização;
  • Defina todo o tema do sistema por xsettings para permitir que o ambiente de trabalho e as aplicações GTK + e Qt possam carregar o tema do usuário com sucesso. O DPI da tela também é carregado nesta fase;
  • Gerencie o método de inicialização das aplicações por especificações fornecidas pelo freedesktop, incluindo executar arquivos *.desktop e eventos de alarme;
  • Gerencie várias telas que normalmente podem mostrar o dock e a área de trabalho na tela principal;
  • Gerencia a ordem de inicialização dos aplicativos. Por exemplo, ele primeiro iniciará os componentes do núcleo DDE e, em seguida um outro aplicativo, para evitar que os aplicativos sejam executados ao mesmo tempo, pois alguns dos serviços do sistema não estão carregados, isso pode causar condição de corrida. E o programa startdde pode julgar se um programa pode ser carregado ou não, para deixar o processo de inicialização em uma boa ordem;

Quando o programa startdde for carregado, ele executará o processo dde-session-initializer, para fornecer serviço de backend para o dock e o lançador, incluindo;

    Gerencie os programas presentes no dock e no lançador

  • Manter o status de início dos aplicativos;
  • Manter o status do espaço de trabalho e localização do aplicativos;
  • Manter o status e os ícones dos aplicativos instalados;

O dde-session-initializer é um processo daemon para o dock e o lançador e fornece a função principal para eles. Não podemos clicar no ícone do aplicativo e alternar as janelas dos programas sem esse processo.

O dde-session-initializer foi anteriormente uma parte do dde-session-daemon, dividimos esse processo para aumentar o dock e o lançador.

dde-session-daemon e dde-system-daemon são os dois principais processos de daemon para todo o sistema. Eles mantêm todo o status do hardware, incluindo netcard, energia, disco, Bluetooth, som, impressora, autenticação, compartilhamento, teclado e mouse, etc. para encapsular todo o processo daemon e fornecer a interface orientada para o design do usuário.

dde-session-daemon contém as operações que não precisam do privilégio root como som, teclado e mouse e data/hora. dde-system-daemon contém a outra parte que precisa do privilégio de root, conta, operações de arquivos e etc. Este design do processo sandbox pode limitar as permissões e evitar muitos problemas de segurança.

dde-session-daemon e dde-system-daemon fazem as seguintes partes:

  • Execute a função de criação, exclusão e gerenciamento de contas;
  • Gerenciar status diferente para várias telas, incluindo localização, direção, resolução e brilho, etc.
  • Gerenciar associações de arquivos padrão e configurações de tema;
  • Gerencie as configurações de rede com fio e sem fio, VPN e DSL;
  • Gerenciar configurações para Bluetooth, som, data/hora e fuso horário, etc.
  • Gerenciar configurações de energia, teclado e mouse;
  • Gerenciar as operações de atualização e inicialização do sistema;
  • Forneça serviços para multi-touch pad.

dde-session-initalizer, dde-session-daemon e dde-system-daemon funcionam como gnome-session-daemon no GNOME, mas o Deepin Team usa golang para reescrever todo o código de processo do daemon para as necessidades dos usuários e melhorar o desempenho. DDE, assim como o GNOME e o KDE, chamam a biblioteca de infraestrutura (gerenciador de rede, upower, udisk, bluez, pluseaudio, copos, polkitd, gvfsd) para fornecer serviços abstratos e avançados para ambiente de trabalho e aplicativos.

API DDE

O ambiente de trabalho fornecerá uma camada de API acima do processo daemon do Deepin Desktop Environment, que contém ferramentas de desenvolvimento gráfico, ferramentas binárias e interface da API DBus para chamadas diretas por meio de ambiente de trabalho e aplicativos sem implementá-los do zero. A parte da API DBus será chamada dinamicamente pelos serviços DBus (e não residirá na memória), você pode chamar a interface por qualquer linguagem de programação. Vamos apresentar a partir da imagem da esquerda para a direita:

DTK

O DTK (Deepin Tool Kit) é um conjunto de ferramentas do UI com base no Qt5 para escrever e unificar o Deepin Desktop e Deepin Original Application, suas principais funções são:

  • Fornecer uma interface de instância única para evitar gravá-la do zero.
  • Forneça uma série de funções para mover e ampliar a biblioteca XCB, não é necessário consultar as funções X11/XCB para criar uma janela de tela inteira sem bordas.
  • Forneça um pacote de controles personalizados e bonitos sem criá-los pela biblioteca Qt, está pronto para trabalhar.

Se você estiver interessado, pode consultar o código-fonte aqui: https://github.com/linuxdeepin/deepin-tool-kit, você pode rapidamente desenvolver produtos elegantes pela nossa biblioteca DTK, ao invés de usar a biblioteca Qt5. E você está convidado a comentar e enviar patches de para ele.

dde-api binário utilitários

Se trata essencialmente das ferramentas binárias para desenvolvimento dde-session-daemon e dde-system-daemon, abrir os binários a seguir pode deixar outras aplicações usando as tecnologias centrais diretamente e evitar reinventar a roda:

  • greeter-helper: Fornece a interface de definições para o idioma e teclado, etc. da tela de bloqueio;
  • image-blur-helper: Fornece um serviço desfocagem de papel de parede, você pode rapidamente ofuscar uma imagem sem escrever sua própria implementação. O algoritmo de desfocagem da Equipe Deepin só gasta apenas 30ms pra rodar, ele é mais rápido que a maioria das implementações da comunidade;
  • lunar-calendar: Fornece um serviço para consultar a data e hora;
  • powersupply: Forneça uma interface de alto nível para informações de energia, usando udev para obter status de energia e informações da bateria;
  • soundutils: Fornece uma interface para tocar efeitos sonoros da área de trabalho;
  • validator: forneça um validador para o nome de usuário sem testar muita regex;
  • cursor-helper: Fornece as definições para o tema do cursor;
  • drandr: Forneça uma interface de alto nível no x11 randr api para obter informações detalhadas sobre o monitor;
  • dxinput: Fornece uma interface de alto nível para IPA x11 xi/xi2 obter e configurar os dispositivos de entrada e saída;
  • E um monte de serviços avançados fornecidos por este projeto: https://github.com/linuxdeepin/dde-api, você é bem vindo se quiser ampliar esta função

API dde-daemon dbus

Esta parte, principalmente algumas interfaces DBus, foi fornecida para o Centro de Controle Deepin, pelo dde-session-daemon e dde-system-daemon. Outras aplicações também podem usar esta parte da IPA sem saber e escrever algum código de camada inferior. Nós iremos simplesmente introduzir algumas das funções, se você estiver interessado nelas, você pode fazer referência ao código do centro de controle aqui https://github.com/linuxdeepin/dde-control-center

  • Verifica o número de telas, qual é a tela principal e quais são as resoluções do sistema.
  • Verifica as definições de idioma, brilho e volume, etc. do sistema atual.
  • Consulte o status da rede, se está ativo conexão com fio ou sem fio e se a VPN está aberta no sistema atual.
  • Consulte a data e hora, fuso horário, teclado e mouse, etc. do sistema atual.

Toda a informação de componentes físicos que o centro de controle mostrou pode ser solicitada pela interface DBus do dde-api, a equipe de desenvolvedores do Deepin aprimorou esses DBus API por muito tempo, você pode usar tranquilamente sem escrever códigos de bibliotecas de nível mais baixo (network-manager, pluseaudio, bluez, upower e udisk, etc.) , para gastar mais tempo escrevendo funções avançadas.

DDE UI

A última parte do Deepin Desktop Environment é a camada UI, que contém as seguintes partes:

deepin window maker Existem dois gerenciadores de janelas: deepin-metacity e deepin-wm, o sistema automaticamente escolherá dependendo do desempenho do hardware e do driver de vídeo. deepin-metacity é um gerenciador de janelas 2D baseado em metacity para computador de baixa configuração ou sem o driver de vídeo apropriado, tem um baixo consumo de recursos e efeitos de animação ruins. deepin-wm é um gerenciador de janelas 3D com base no mutter e também é o gerenciador de janelas padrão. É adequado para um computador com configurações mais avançado e com driver de vídeo apropriado e conta com efeitos de animação elegantes
Espaço de Trabalho DDE Ele fornece a grade básica de arquivos da área de trabalho e operações de arquivo básico. dde-desktop usa a biblioteca libdde-file-manager para manter a mesma caixa de diálogo como no Deepin File Manager (dde-file-manager)
Dock do DDE Fornece os gráficos da dock, ícone e gerenciamento de status, o usuário pode mudar sua posição e estilo
Carregador DDE Ele fornece funções para mostrar aplicativos instalados, além de pesquisá-los e executá-los.
Central de Controle do DDE Ele fornece uma interface frontend para recursos de hardware, como conta, tema, rede, Bluetooth, som, IO, aplicativos padrão, data/hora, atualização de energia e sistema, etc.
OSD do DDE Fornece interface OSD para volume, brilho, caps lock e etc.
Menu Deepin Fornece uma UI de menu de contexto unificado
Notificações deepin Fornece serviço de notificação para o sistema mostrar diferentes botões para cada aplicativo
Ferrramenta de Prevenção Deepin Ele fornece uma senha unificada e uma caixa de diálogo de autenticação para todas as aplicações, de acordo com as especificações de projeto da Deepin UI para manter o aplicativo GTK e Qt usando a mesma caixa de diálogo
Temas de ícones do Deepin Estilo de ícones mais unificado pelo mundo, incluindo milhares de aplicativos no Deepin Store, você pode verificar aqui: http://github.com/linuxdeepin/deepin-icon-theme/tree/master/deepin
deepin-gtk-theme É o tema da janela de acordo com as especificações de design da Deepin UI (GTK+ 2, GTK+ 3, Qt4 e Qt5)
Configurações padrão do deepin Ele fornece as configurações padrão para Deepin Desktop Environment, como papel de parede e tema de ícones, etc.
Integração com o qt5 Ele fornece a interface unificada e tema para aplicações GTK+ e Qt, corrigindo a biblioteca GTK+ e Qt. Você pode escrever uma única vez para obter a mesma interface em aplicativos GTK+ e Qt

Deepin Store

Deepin Store é a primeira loja de aplicativos que oferece boa qualidade de produtos e excelente experiência de interação no Linux.

Além das aplicações originais do deepin, suportamos mais de 50 aplicações do windows pelo projeto deepin-wine, mais de 200 aplicativos android (ex: Angry Birds e clientes de vídeo) pelo builtin Android runtime e aplicações HTML5 (ex: Gliffy) pelo deepin-xwalk em parceria com a Intel. O aplicativo HTML5 também pode se lembrar do tamanho da janela.

Deepin Store está divido em lastore-daemon, lastore-session-helper e deepin-appstore:

  • lastore-daemon: É a parte central da loja de aplicativos, que faz o trabalho de download de pacotes, verificação de hash, análise de dependência, gerenciamento de cache local, instalação de software, remoção e atualização. Esse processo do daemon se comunicará com os repositórios remotos e manterá o processo de atualização e segurança de todo o sistema. lastore-daemon também adicionará alguns ganchos ao programa apt / dpkg para evitar os danos da instalação no terminal.
  • lastore-session-helper: É o auxílio do lastore-daemon, que irá executar algumas operações de sessão do usuário como enviar notificações para os usuários. Para garantir a segurança ao instalar o software, dividimos esta parte do código para lastore-session-helper.
  • deepin-appstore: É o cliente e a interface da loja de aplicativos, simplesmente um shell de aplicativo baseado no CEF para lidar com a interação do usuário e incorporar uma página da web. Depois que o servidor tiver um novo software de atualização, ele informará o deepin-appstore para atualizar a página da web. Ele também contém a interface para comentários e a sua popularização. Tecnicamente o deepin-appstore é um navegador web simples como um cliente nativo. </ Li>