O termo graphics shell
pode ser um shell gráfico ou um shell de linha de comando sendo executado sob ele. Ou seja, a interface gráfica do usuário (GUI) ou a linha de comando que controla as funções da GUI.
Primeiro, vamos começar com o shell, o que significa "shell": a definição da palavra "shell" significa um programa, ou mesmo um grupo de programas trabalhando juntos, ele controla o sistema operacional e o hardware. shell é realmente o software que lhe dá controle direto sobre o computador.
Um shell gráfico é um shell que apresenta saída como gráficos 2D ou 3D, ao contrário de texto simples. Em outras palavras, é a interface gráfica do usuário (GUI) que inclui janelas, menus. ..etc que proporcionam uma interação mais flexível entre o usuário e o sistema, em vez do simples texto sem graça oferecido pela interface do terminal.
No entanto, dado que o núcleo da GUI é construído como um shell, todas as suas funções podem ser controladas pela linha de comando . Por exemplo, o comando genome-shell é o shell gráfico para a área de trabalho do GNOME, esse comando fornece funções principais da interface com o usuário para a área de trabalho do GNOME que pode ser ajustada por uma linha de comando. Outro exemplo, é o nautilus que é a principal interface GUI do explorador de arquivos no Gnome, esta interface está disponível como uma linha de comando chamada nautilus . Esta linha de comando tem as seguintes funções:
$ nautilus --help
Usage:
nautilus [OPTION...] [URI...]
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-gapplication Show GApplication options
--help-gtk Show GTK+ Options
Application Options:
-c, --check Perform a quick set of self-check tests.
--version Show the version of the program.
-w, --new-window Always open a new window for browsing specified URIs
-n, --no-default-window Only create windows for explicitly specified URIs.
-q, --quit Quit Nautilus.
-s, --select Select specified URI in parent folder.
--display=DISPLAY X display to use
Ou seja, você pode controlar as funções da GUI por meio da linha de comando.
No Linux, um shell gráfico é geralmente feito de algumas camadas de software. O sistema operacional deve fornecer drivers gráficos e drivers de teclado e mouse. Em seguida, no topo dos drivers, você tem um sistema de janelas como o X11 ou o Wayland. isto cria invólucros de alto nível em torno da entrada (como o fornecimento de layouts de teclado), gerencia a memória que armazena as imagens 2D transmitidas ao driver de vídeo e fornece aos aplicativos recursos para pintar essas imagens 2D na memória.
Acima do sistema de janelas você tem um gerenciador de janelas, e é assim que um aplicativo converte os eventos de teclado e mouse em chamadas do sistema que manipulam as janelas para as quais os aplicativos estão pintando. Isso inclui tarefas como iniciar, pausar, ocultar, exibir e fechar aplicativos, detectar quando um aplicativo falhou e limpá-lo depois.
Existem dezenas de gerenciadores de janelas populares, incluindo o Unity, o Gnome Shell, o Xfwm, o OpenBox, o i3, o Xmonad e muitos outros.
Os aplicativos podem desenhar gráficos como preferirem, no entanto, os desenvolvedores de aplicativos geralmente preferem usar um conjunto comum de ferramentas de desenho, para que o aplicativo pareça consistente com todos os outros aplicativos em execução no sistema. Estas são as bibliotecas de software que você importa para o seu aplicativo. Em seguida, você chama suas funções para desenhar menus, botões, entrada de texto e exibir imagens como imagens PNG e JPG.
Essas ferramentas de desenho comuns são chamadas de "kits de ferramentas de widget". Os dois toolkits de widgets mais populares no Linux são o Gtk + e o Qt. Você pode usar o Gtk + e o Qt ao mesmo tempo, e muitas vezes é por isso que diferentes aplicativos no Linux às vezes podem ter inconsistências em sua aparência.
Essas camadas são bastante específicas para o ecossistema do software Linux. O Mac OS, o Windows e o Android fazem tudo de maneira diferente, mas todos eles tendem a integrar cada uma dessas camadas em um único software de shell gráfico monolítico. Isso simplifica as coisas, mas também evita muita personalização.
O motivo pelo qual o Linux complica as coisas é porque as pessoas preferem ter escolhas e gostam de personalizar seus shells. Se você está gerenciando sua própria distribuição Linux, é uma boa ideia colocar algum esforço na escolha do seu conjunto padrão de aplicativos, para que todos eles usem os mesmos kits de ferramentas de widget e forneçam uma aparência consistente.
Na parte superior do shell gráfico, você pode criar aplicativos gráficos, como navegadores de sistemas de arquivos, inicializadores de aplicativos, aplicativos de notificação e de status do sistema e aplicativos de configuração do sistema ("painel de controle"). Esses aplicativos tomam coletivamente o que chamamos de "ambiente de área de trabalho".