Gerenciador de janelas - Window manager

Camadas da interface gráfica do usuário:
No X, o gerenciador de janelas e o servidor de exibição são dois programas distintos; mas sob o Wayland, a função de ambos é feita pelo compositor do Wayland.
Elementos típicos de uma janela . A decoração da janela é desenhada pelo gerenciador de janelas (X11) ou pelo cliente ( Wayland ). O desenho do conteúdo é tarefa do cliente.
No X11, quando o gerenciador de janelas não está em execução, as decorações das janelas estão ausentes na maioria das janelas. Na Wayland, os clientes sempre desenham suas próprias decorações de janela.

Um gerenciador de janelas é um software de sistema que controla o posicionamento e a aparência das janelas em um sistema de janelas em uma interface gráfica do usuário . A maioria dos gerenciadores de janela são projetados para ajudar a fornecer um ambiente de área de trabalho . Eles funcionam em conjunto com o sistema gráfico subjacente que fornece a funcionalidade necessária - suporte para hardware gráfico, dispositivos apontadores e um teclado, e geralmente são escritos e criados usando um kit de ferramentas de widget .

Poucos gerenciadores de janelas são projetados com uma distinção clara entre o sistema de janelas e o gerenciador de janelas. Cada interface gráfica do usuário baseada em uma metáfora do Windows tem alguma forma de gerenciamento de janela. Na prática, os elementos dessa funcionalidade variam muito. Os elementos geralmente associados aos gerenciadores de janela permitem que o usuário abra, feche, minimize, maximize, mova, redimensione e monitore as janelas em execução, incluindo decoradores de janela . Muitos gerenciadores de janela também vêm com vários utilitários e recursos: por exemplo, docas, barras de tarefas , inicializadores de programas, ícones da área de trabalho e papel de parede.

História

Janelas sobrepostas do ambiente Smalltalk-76 em execução no Xerox Alto .

Na década de 1970 , o Xerox Alto se tornou o primeiro computador enviado com uma GUI WIMP funcional . Ele usava um gerenciador de janelas de empilhamento que permitia janelas sobrepostas. Embora não esteja claro se o Microsoft Windows contém designs copiados do Mac OS da Apple , está claro que nenhum dos dois foi o primeiro a produzir uma GUI usando janelas de empilhamento. No início dos anos 1980, o Xerox Star , sucessor do Alto, usava ladrilhos para a maioria das janelas principais do aplicativo e usava sobreposição apenas para caixas de diálogo, eliminando a maior parte da necessidade de empilhamento.

O Mac OS foi um dos primeiros exemplos de sucesso comercial de uma GUI que usava uma espécie de gerenciamento de janela de empilhamento via QuickDraw . Atualmente, o macOS usa um gerenciador de janelas um pouco mais avançado que oferece suporte à composição desde o Mac OS X 10.0 e foi atualizado no Mac OS X 10.2 para oferecer suporte à composição acelerada por hardware por meio do Quartz Compositor .

O GEM 1.1 era um gerenciador de janelas que suportava a metáfora da área de trabalho e usava empilhamento, permitindo que todas as janelas se sobreponham. Foi lançado no início dos anos 1980. GEM é famoso por ter sido incluído como a GUI principal usada no Atari ST , que executava o Atari TOS , e também era uma GUI popular para MS-DOS antes do uso generalizado do Microsoft Windows. Como resultado de um processo judicial da Apple , o GEM foi forçado a remover os recursos de empilhamento, tornando-o um gerenciador de janelas lado a lado.

Em meados da década de 1980, o Amiga OS continha um dos primeiros exemplos de um gerenciador de janela de composição chamado Intuition (uma das bibliotecas de baixo nível do AmigaOS, que estava presente nas ROMs do sistema Amiga ), capaz de reconhecer quais janelas ou partes delas estavam cobertas , e quais janelas estavam em primeiro plano e totalmente visíveis, para que pudesse desenhar apenas as partes da tela que precisavam ser atualizadas. Além disso, o Intuition suportava composição. Os aplicativos podem primeiro solicitar uma região de memória fora da região de exibição atual para uso como bitmap. O sistema de janelas Amiga, então, usar uma série de blits bit usando o hardware do sistema blitter para construir uma composição de bitmaps dessas aplicações, juntamente com botões e sliders, em memória de vídeo, sem a necessidade de esses aplicativos para redesenhar qualquer um dos seus bitmaps.

A intuição também antecipou as escolhas do usuário ao reconhecer a posição do ponteiro flutuando sobre outros elementos da tela (barras de título das janelas, seus gadgets de fechamento e redimensionamento, ícones inteiros) e, portanto, era capaz de conceder quase uma espera zero estado de experiência para o uso do gerenciador de janelas Workbench.

É digno de nota o fato de que o Workbench foi o único gerenciador de janelas que acabou inspirando uma família inteira de descendentes e sucessores: Ambient no MorphOS , Zune / Wanderer no AROS , Workbench NG (Nova Geração no AmigaOS 4.0 e 4.1). O Workbench 4.1 foi aprimorado pela interface de vetor 2D alimentada por bibliotecas Cairo e apresentando um mecanismo de composição moderno baseado em Porter-Duff 3D.

Em 1988, o Presentation Manager se tornou o shell padrão no OS / 2 , que, em sua primeira versão, usava apenas uma interface de linha de comando (CLI). A IBM e a Microsoft projetaram o OS / 2 como um sucessor do DOS e do Windows para DOS. Após o sucesso do Windows 3.10, no entanto, a Microsoft abandonou o projeto em favor do Windows. Depois disso, o projeto da Microsoft para um futuro OS / 2 versão 3 tornou-se o Windows NT , e a IBM fez um redesenho completo do shell do OS / 2, substituindo o Presentation Manager do OS / 2 1.x pelo Workplace Shell orientado a objetos que fez sua estreia no OS / 2 2.0.

Exemplos

Gerenciadores de janela X

Em sistemas que usam o sistema X window , há uma distinção clara entre o gerenciador de janelas e o sistema de janelas . Estritamente falando, um gerenciador de janelas X não interage diretamente com hardware de vídeo, mouse ou teclado - isso é responsabilidade do servidor de exibição .

Os usuários do X Window System podem usar facilmente muitos gerenciadores de janelas diferentes - Metacity , usado no GNOME 2 , e KWin , usado no KDE Plasma Workspaces e muitos outros. Como muitos gerenciadores de janela são modulares, as pessoas podem usar outros, como o Compiz (um gerenciador de janela de composição 3D ), que substitui o gerenciador de janela. Por outro lado, Sawfish e awesome são gerenciadores de janela extensíveis que oferecem controle de janela preciso. Os componentes de diferentes gerenciadores de janela podem até mesmo ser misturados e combinados; por exemplo, as decorações das janelas do KWin podem ser usadas com os componentes da área de trabalho e dock do GNOME.

Os gerenciadores de janela X também têm a capacidade de redirecionar os aplicativos, o que significa que, embora inicialmente todos os aplicativos sejam adotados pela janela raiz (essencialmente a tela inteira), um aplicativo iniciado dentro da janela raiz pode ser adotado por (ou seja, colocado dentro de ) outra janela. Os gerenciadores de janelas no sistema X window adotam aplicativos da janela raiz e os redirecionam para as decorações das janelas (por exemplo, adicionando uma barra de título). A nova parentalidade também pode ser usada para adicionar o conteúdo de uma janela a outra. Por exemplo, um aplicativo flash player pode ser transferido para uma janela do navegador e pode aparecer para o usuário como supostamente parte desse programa. Os gerenciadores de janela de reaparecimento podem, portanto, organizar um ou mais programas na mesma janela e podem combinar facilmente o agrupamento e o empilhamento de várias maneiras.

Microsoft Windows

O Microsoft Windows fornece um gerenciador de janelas de empilhamento integrado desde o Windows 2.0 ; O Windows Vista introduziu o gerenciador de janelas de composição da área de trabalho (dwm.exe) como uma alternativa opcional acelerada por hardware. No Windows, uma vez que o GDI faz parte do kernel, a função do gerenciador de janelas está intimamente ligada aos subsistemas gráficos do kernel e é amplamente não substituível, embora utilitários de terceiros possam ser usados ​​para simular um gerenciador de janelas Tiling em cima de tal sistemas. Desde o Windows 8 , o gerenciador de janelas da área de trabalho baseado em Direct3D não pode mais ser desativado. Ele só pode ser reiniciado com a combinação de teclas de atalho Ctrl + Shift + Win + B.

O Windows Explorer (explorer.exe) é usado por padrão como o shell em sistemas Windows modernos para fornecer uma barra de tarefas e um gerenciador de arquivos, junto com muitas funções de um gerenciador de janelas; aspectos do Windows podem ser modificados por meio dos utilitários de configuração fornecidos, modificando o Registro do Windows ou com ferramentas de terceiros, como WindowBlinds ou Resource Hacker .

O gerenciador de janelas do Windows também pode atuar como um gerenciador de janelas X através do Cygwin / X no modo multijanelas (e, possivelmente, outras implementações de janelas X).

Observe que a Microsoft e o X Window System usam termos diferentes para descrever conceitos semelhantes. Por exemplo, raramente há qualquer menção ao termo gerenciador de janelas pela Microsoft porque ele é integrado, não substituível e distinto do shell . O Windows Shell é análogo ao conceito de ambiente de desktop em outros sistemas de interface gráfica do usuário.

Chrome OS

Desde 2021, o Chrome OS é fornecido com seu próprio gerenciador de janelas chamado Ash. O cromo e a cinza compartilham uma base de código comum . No passado, era possível executá-lo google-chrome --open-ashem qualquer sistema compatível.

Tipos

Os gerenciadores de janelas geralmente são divididos em três ou mais classes, que descrevem como as janelas são desenhadas e atualizadas.

Gerenciadores de janela de composição

Os gerenciadores de janela de composição permitem que todas as janelas sejam criadas e desenhadas separadamente e, em seguida, colocadas juntas e exibidas em vários ambientes 2D e 3D. Os gerenciadores de janela de composição mais avançados permitem uma grande variedade na aparência da interface e na presença de efeitos visuais 2D e 3D avançados.

Gerenciadores de janela de empilhamento

Todos os gerenciadores de janela que possuem janelas sobrepostas e não são gerenciadores de composição são gerenciadores de janela de empilhamento , embora seja possível que nem todos usem os mesmos métodos. Os gerenciadores de janela de empilhamento permitem que as janelas se sobreponham, desenhando as janelas de fundo primeiro, o que é conhecido como o algoritmo do pintor . Às vezes, as alterações exigem que todas as janelas sejam empilhadas ou repintadas, o que geralmente envolve o redesenho de todas as janelas. No entanto, para trazer uma janela de fundo para a frente geralmente requer apenas que uma janela seja redesenhada, uma vez que as janelas de fundo podem ter pedaços de outras janelas pintadas sobre elas, apagando efetivamente as áreas que estão cobertas.

Gerenciador de janela de mosaico

Os gerenciadores de janelas lado a lado pintam todas as janelas na tela, colocando-as lado a lado ou acima e abaixo umas das outras, de forma que nenhuma janela cubra a outra. O Microsoft Windows 1.0 usava tiling, e uma variedade de gerenciadores de janela tiling para X estão disponíveis.

Gerenciador de janela dinâmico

Os gerenciadores de janela dinâmicos podem alternar dinamicamente entre o layout de janela em mosaico ou flutuante. Uma variedade de gerenciadores de janela dinâmicos para X estão disponíveis.

Recursos e facilidades dos gerenciadores de janela

Ocultar automaticamente
Um recurso de ocultar automaticamente permite que as barras de menu desapareçam quando o ponteiro é movido para longe da borda da tela.
Fronteiras
Uma borda é um componente de decoração de janela fornecido por alguns gerenciadores de janela, que aparece ao redor da janela ativa . Alguns gerenciadores de janela também podem exibir uma borda ao redor das janelas de fundo .
Menu contextual
Alguns gerenciadores de janela fornecem um menu de contexto que aparece quando um evento de clique alternativo é aplicado a um componente da área de trabalho.
Papel de parede
Alguns gerenciadores de janela fornecem um recurso de papel de parede da área de trabalho que exibe uma imagem de plano de fundo na janela raiz .
Roubo de Foco
O roubo de foco é um recurso que alguns gerenciadores de janelas oferecem. Ele permite que um aplicativo fora do foco ganhe foco repentinamente e roube a entrada do usuário destinada ao aplicativo anteriormente focado.
Iconificação
Um recurso de iconificação permite que os usuários minimizem os aplicativos em execução em um ícone da área de trabalho ou ícone do painel de tarefas.
Aderiu ao Windows
Alguns gerenciadores de janela fornecem um recurso de janelas unidas que permite ao usuário unir quadros de janelas de aplicativos.
Equivalentes de teclado
Alguns gerenciadores de janela fornecem equivalentes de teclado que permitem que o teclado replique a funcionalidade do mouse .
Barra de menu
Uma barra de menus oferece a facilidade de iniciar programas por meio de um menu e pode conter recursos adicionais, incluindo um botão iniciar , uma barra de tarefas e uma bandeja do sistema .
Painel de Menu
Um painel de menu, um componente de alguns gerenciadores de janela, que oferece a facilidade de iniciar programas usando um menu. Um painel de menu é semelhante a uma barra de menu , mas aparece como um painel flutuante , em vez de uma barra horizontal ou vertical.
O painel do menu pode conter recursos adicionais, incluindo um botão Iniciar , um painel de tarefas e uma bandeja do sistema .
Foco do mouse
O modelo de foco do mouse determina como o dispositivo apontador afeta o foco de entrada no gerenciador de janelas. O modelo de foco determina qual componente da interface gráfica do usuário está atualmente selecionado para receber entrada conforme o ponteiro é movido pela tela.
Mouse warping
A distorção do mouse é um recurso que centraliza o ponteiro no aplicativo atual à medida que é ativado.
Múltiplos desktops
Um gerenciador de janelas pode fornecer um recurso de várias áreas de trabalho . Isso permite alternar entre várias áreas de trabalho da janela raiz . Isso evita a desordem da janela raiz , porque os aplicativos podem ser executados em diferentes desktops .
Pager
Alguns gerenciadores de janela fornecem uma ferramenta de pager que permite alternar entre várias áreas de trabalho . O pager pode aparecer como uma janela na tela ou como um gadget na barra de tarefas ou painel de tarefas .
Plugins
Alguns gerenciadores de janela têm uma construção modular que permite que os módulos de plug-in forneçam recursos conforme necessário.
Rolar
Um recurso de rollup permite que as janelas apareçam apenas como uma barra de título na área de trabalho.
Menu Raiz
Alguns gerenciadores de janela fornecem um menu raiz , que aparece quando a janela raiz ou o plano de fundo da área de trabalho é tocado.
Atalhos
Alguns gerenciadores de janela fornecem um recurso de atalho que permite aos usuários colocar ícones na janela raiz que acessam programas ou recursos específicos.
Janelas com guias
Alguns gerenciadores de janela fornecem um recurso de janelas com guias que agrupa os aplicativos em quadros comuns.
Troca de tarefas
O gerenciador de janelas pode fornecer vários recursos de alternância de tarefas que permitem ao usuário alterar o aplicativo em foco no momento, incluindo:
Barra de Tarefas
Alguns gerenciadores de janela fornecem uma barra de tarefas que mostra os aplicativos em execução. A barra de tarefas pode mostrar todos os aplicativos em execução, incluindo aqueles que foram minimizados , e pode fornecer a facilidade de alternar o foco entre eles. A barra de tarefas pode ser incorporada a uma barra de menu em alguns gerenciadores de janela.
Painel de Tarefas
Um painel de tarefas é semelhante a uma barra de tarefas , mas aparece como um painel flutuante , em vez de uma barra horizontal ou vertical.
Botão de início
Um botão iniciar é um widget da área de trabalho que fornece um menu de programas que podem ser iniciados. O botão iniciar normalmente é colocado em uma barra de menu na parte inferior da tela.
Area de notificação
Uma área de notificação é usada para exibir ícones de sistema e recursos do programa que não possuem janela na área de trabalho . Ele contém principalmente ícones para indicar informações de status e notificações, como a chegada de uma nova mensagem de correio. Alguns sistemas também podem mostrar um relógio na área de notificação .
Barras de Título
Uma barra de título é um componente de decoração de janela que alguns gerenciadores de janela fornecem na parte superior de cada janela. A barra de título é normalmente usada para exibir o nome do aplicativo, ou o nome do documento aberto, e pode fornecer botões da barra de título para minimizar, maximizar, fechar ou enrolar as janelas do aplicativo.
Botões da barra de título
Os botões da barra de título estão incluídos na barra de título de alguns gerenciadores de janela e fornecem a facilidade de minimizar, maximizar, acumular ou fechar janelas de aplicativos. Alguns gerenciadores de janela podem exibir os botões da barra de título na barra de tarefas ou no painel de tarefas , em vez de em uma barra de título .
Desktop Virtual
Uma área de trabalho virtual (também chamada de área de trabalho de rolagem) é um recurso fornecido por alguns gerenciadores de janela que permite que a área de trabalho seja maior do que a tela real

Navegação do Windows

Uma janela ativa é a que se dedica atualmente janela do gerenciador de janelas atual. Diferentes gerenciadores de janela indicam a janela ativa no momento de maneiras diferentes e permitem que o usuário alterne entre as janelas de maneiras diferentes. Por exemplo, no Microsoft Windows, se o Bloco de notas e o Microsoft Paint estiverem abertos, clicar na janela do Bloco de notas fará com que essa janela se torne ativa. No Windows, a janela ativa é indicada por uma barra de título com uma cor diferente. Clicar não é a única maneira de selecionar uma janela ativa, entretanto: alguns gerenciadores de janela (como FVWM ) tornam a janela sob o ponteiro do mouse ativa - simplesmente mover o mouse é suficiente para alternar as janelas; um clique não é necessário.

Os gerenciadores de janela geralmente fornecem uma maneira de selecionar a janela ativa usando o teclado como alternativa ao mouse. Uma combinação de teclas típica é Alt + Tab , usada pelo Windows e KDE (por padrão, embora seja configurável pelo usuário); outra é apple key -tilde, usada pelo Macintosh. Pressionar a combinação de teclas apropriada normalmente percorre todas as janelas visíveis em alguma ordem, embora outras ações sejam possíveis.

Muitos, embora não todos, gerenciadores de janela fornecem uma região da tela contendo algum tipo de controle visual (geralmente um botão) para cada janela na tela. Cada botão normalmente contém o título da janela e também pode conter um ícone. Essa área da tela geralmente fornece algum tipo de indicação visual de qual janela está ativa - por exemplo, o botão da janela ativa pode aparecer “pressionado”. Normalmente, também é possível alternar a janela ativa clicando no botão apropriado. No Microsoft Windows, esta área da tela é chamada de barra de tarefas ; nos sistemas Apple Macintosh, essa área da tela é chamada de dock.

A janela ativa nem sempre fica na frente de todas as outras janelas da tela. A janela ativa é simplesmente a janela para a qual as teclas digitadas no teclado são enviadas; pode ser visualmente obscurecido por outras janelas. Isto é especialmente verdadeiro em gerenciadores de janela que não requerem um clique para mudar as janelas ativas: FVWM , por exemplo, torna ativa a janela sob o cursor do mouse, mas não muda sua ordem Z (a ordem em que as janelas aparecem, medida a partir do fundo para o primeiro plano). Em vez disso, é necessário clicar na borda da janela para trazê-la para o primeiro plano. Também há situações em gerenciadores de janela clique para focar, como Microsoft Windows, em que a janela ativa pode ser obscurecida; no entanto, isso é muito menos comum.

Veja também

Referências