Quais são os subsistemas da interface com o usuário, seus componentes e responsabilidades?

8

Estou tentando entender os diferentes subsistemas responsáveis ​​pela interface do usuário, a terminologia para se referir a eles e como eles estão estruturados; até agora eu sei que existem:

No nível superior:

desktops ? (kde, gnome etc.)

Então nós temos:

  • um gerenciador de exibição (também chamado de gerenciador de desktop ou ambiente de desktop)
  • gerenciador de janelas
  • algo mais?

Estou fazendo deste um wiki da comunidade, gostaria que este fosse um local central para * tudo o que há para saber (da perspectiva do usuário) sobre os subsistemas da interface do usuário no Linux; o que eu gostaria de saber é quais são os componentes de cada um e quais são as responsabilidades de cada um, ou seja, eu gostaria de saber coisas como:

  • o que exatamente está no comando das teclas de atalho globais, quando abro a caixa de diálogo "executar aplicativo", quem está fazendo isso, quando pressiono uma tecla para mostrar a área de trabalho, executar um terminal, maximizar uma janela etc., quem está capturando isso e enviá-lo para a janela direita;
  • quem é responsável por desenhar a área de trabalho, os espaços de trabalho etc.
  • Quais são as variáveis ​​de ambiente que podem me fornecer informações sobre esses componentes
  • O "menu principal" é um subsistema ou um componente de um subsistema?

Também seria bom compilar uma lista dos desktops / subsistemas mais populares, quais são executados em cada um deles. Você pode misturar e combinar desktops / ambientes de desktop / gerenciadores de janelas, etc.?

Por fim, como posso saber quais desktops / subsistemas estão realmente em execução (ativos?) No sistema, usuários diferentes podem ter um subsistema diferente cada?

BlackTigerX
fonte

Respostas:

5

Primeiro, um gerenciador de exibição (ou DM, por exemplo, xdm, gdm, kdm) não é o mesmo que um ambiente de área de trabalho (ou DE, por exemplo, GNOME, KDE, XFCE).

O Display Manager cuida do login gráfico e decide (ou permite que você escolha) qual sessão executar. Ou que sessão * s *, caso você escolha a opção de menu "alternar usuário".

Um ambiente de área de trabalho é basicamente uma coleção de programas (gerenciador de exibição, gerenciador de janelas, gerenciador de sessões, painéis, ferramentas de configuração etc.) e bibliotecas (por exemplo, Gtk) que pretendem fornecer um ambiente consistente e integrado para trabalhar.

Um Gerenciador de Janelas gerencia janelas: onde colocá-las, movê-las, redimensioná-las, minimizá-las / maximizá-las, colocá-las lado a lado, etc.). Ele também lida com os atalhos para fazer essas coisas. Em alguns casos, o gerenciador de janelas também pinta as bordas das janelas; em outros casos, essa tarefa é transferida para um "decorador de janelas".

A caixa de diálogo "Executar Aplicativo" no GNOME faz parte gnome-panel, mas em outro DE pode ser outra parte do ambiente.

Quem é encarregado de pintar janelas etc. depende; caso exista um "compositor" em uso (geralmente parte do gerenciador de janelas, por exemplo, no Compiz), o compositor pinta as janelas na tela; caso contrário (como era habitual no passado), é o X-server fazendo isso.

O (s) menu (s) principal (s) é (s) exibido (s) na tela por uma parte do painel do gnome, mas os dados usados ​​provêm de vários arquivos /usr/share/applications/(possivelmente combinados com um diretório equivalente em sua casa para alterações pessoais). Esses arquivos têm uma estrutura definida pelo FreeDesktop.org (uma plataforma para diferentes DEs colaborarem em infraestrutura comum), para que o GNOME e o KDE conheçam os mesmos programas (mas ainda possam mostrá-los de maneira diferente e, em alguns casos, priorizem os programas "nativos" sobre os "estrangeiros").

E sim, usuários diferentes podem usar uma configuração de sessão diferente (e até definir seus próprios). No GDM, tente o menu suspenso Sessão para ver as opções disponíveis.

Além disso, é possível misturar e combinar vários componentes, mas isso às vezes resulta em menos cooperação e perda de "suavidade" na maneira como as coisas funcionam. Um exemplo muito conhecido de como as coisas são trocadas é o Compiz, que substitui o Metacity se você deseja efeitos de área de trabalho sofisticados. Mas há muitas outras mudanças possíveis.

JanC
fonte
2

Um gerenciador de desktop gerencia seu hardware principalmente, enquanto um gerenciador de janelas gerencia seu software. Por exemplo, gerenciamento de energia, proteção de tela, desempenho do sistema, tela de login etc. são gerenciados por um gerente de área de trabalho. Seu tema, posicionamento da janela, conjunto de widgets e ícones, fontes etc. são gerenciados pelo seu gerenciador de janelas.

Você pode ter um gerenciador de janelas instalado sem um gerenciador de desktop. É comum fazer login em um terminal virtual e solicitar que um script de login execute seu gerenciador de janelas para iniciar sua "área de trabalho".

Os gerenciadores de desktop são GNOME, KDE e CDE. Os gerenciadores de janelas são Metacity, Openbox, Iluminismo, Impressionante etc.

Para responder diretamente a algumas de suas perguntas:

  • o gerenciador de janelas é responsável principalmente pelos atalhos do teclado da área de trabalho.
  • o gerenciador de janelas é responsável por desenhar a área de trabalho, os espaços de trabalho, os posicionamentos das janelas etc., como mencionado anteriormente
  • não há muitas variáveis ​​de ambiente para a GUI. Geralmente são aplicáveis ​​apenas ao shell atrás de um terminal. No entanto, você pode executar sete envter uma idéia do que está definido.
  • não sei o que você quer dizer com "menu principal" como um subsistema ou componente de um subsistema. Os menus fazem parte do gerenciador de janelas.

Já mencionei alguns gerenciadores de desktop e gerenciadores de janelas populares. Mais pode ser encontrado usando o Google.

Dependendo do seu sistema operacional, provavelmente existe um arquivo de configuração ASCII que definiu sua área de trabalho preferida. Por exemplo, no Debian GNU / Linux, isso é definido na /etc/X11/default-display-managerconfiguração. Você também pode executar 'ps -ef | grep user 'where' user 'é o nome do logon de algum usuário no sistema e veja quais processos estão listados e qual é a área de trabalho gráfica em execução. Para mim, é 'metacidade'.

Aaron Toponce
fonte