Uma interface gráfica de usuário, ou GUI (do inglês graphical user interface), é uma forma de interface de usuário que permite aos usuários interagir com dispositivos eletrônicos por meio de ícones gráficos e indicadores visuais, tais como notação secundária. Em muitas aplicações, as GUIs são utilizadas em vez de UIs baseadas em texto, que se baseiam em comandos digitados ou navegação textual. As GUIs foram introduzidas como reação à acentuada curva de aprendizado percebida das interfaces de linhas de comandos (CLIs), as quais exigem que comandos sejam digitados em um teclado de computador.

As ações em uma GUI são geralmente executadas por meio da manipulação direta dos elementos gráficos.Levy, Steven. "Graphical User Interface (GUI)". Britannica.com. Acessado em 12/06/2019. Além dos computadores, as GUIs são utilizadas em muitos dispositivos móveis portáteis, tais como leitores de MP3, reprodutores de mídia portáteis, dispositivos de jogos, smartphones e equipamentos domésticos, de escritório e controles industriais menores. O termo GUI tende a não ser aplicado a outros tipos de interfaces de menor resolução de tela, tais como jogos eletrônicos (onde heads-up displays (HUDs) são preferidos), ou que não incluem telas planas, como telas volumétricas porque o termo está restrito ao âmbito de telas 2D capazes de descrever informação genérica, na tradição da pesquisa em ciência da computação no Xerox Palo Alto Research Center.

Design de GUI e de interação

Projetar a composição visual e o comportamento temporal de uma GUI é uma parte importante da programação de aplicações de software na área da interação humano-computador. O seu objetivo é aumentar a eficiência e a facilidade de uso do design lógico subjacente de um programa de computador armazenado, uma disciplina de design chamada usabilidade. Métodos de design centrado no usuário são usados para garantir que a linguagem visual introduzida no design seja bem adaptada às tarefas.

As características visíveis da interface gráfica de uma aplicação são por vezes referidas como chrome ou GUI. Tipicamente, os usuários interagem com a informação manipulando widgets visuais que permitem interações apropriadas ao tipo de dados que contêm. Os widgets de uma interface bem projetada são selecionados para apoiar as ações necessárias para atingir os objetivos dos usuários. Um modelo-visão-controlador permite estruturas flexíveis nas quais a interface é independente e indiretamente ligada às funções da aplicação, para que a GUI possa ser personalizada facilmente. Isto permite aos usuários selecionar ou projetar uma skin ou tema diferente à vontade, e facilita o trabalho do designer para alterar a interface conforme as necessidades do usuário evoluem. Um bom design de GUI relaciona-se mais com os usuários e menos com a arquitetura do sistema. Widgets grandes, como janelas, geralmente fornecem uma moldura ou recipiente para o conteúdo principal de apresentação, como uma página web, mensagem de e-mail ou desenho. Os menores geralmente atuam como uma ferramenta de entrada do usuário.

Uma GUI pode ser projetada para os requisitos de um mercado vertical como GUIs específicas para aplicações. Exemplos incluem caixas eletrônicos (ATM), telas táteis de pontos de vendas (POS) em restaurantes,Bisson, Giselle. "The ViewTouch restaurant system". autoatendimento em lojas de varejo, check-in e emissão de bilhetes aéreos, quiosques de informações em espaços públicos, como estações de trens ou museus, e monitores ou telas de controle em aplicações industriais embarcadas que empregam um sistema operacional de tempo real (RTOS).

Celulares e sistemas de jogos portáteis também empregam GUIs de tela tátil específicas para aplicações. Automóveis mais novos usam GUIs nos seus sistemas de navegação e centros multimídia, ou combinações de navegação e centros multimídia.

Exemplos

Componentes

Uma GUI usa uma combinação de tecnologias e dispositivos para fornecer uma plataforma com a qual os usuários podem interagir para as tarefas de reunir e produzir informação.

Uma série de elementos que compõem uma linguagem visual evoluíram para representar informação armazenada em computadores. Isto torna mais fácil para pessoas com poucos conhecimentos de informática trabalhar e usar software de computador. A combinação mais comum de tais elementos em GUIs é o paradigma janelas, ícones, campos de texto, telas, menus, ponteiro (WIMP), especialmente em computadores pessoais.

O estilo de interação WIMP usa um dispositivo de entrada virtual para representar a posição da interface de um dispositivo apontador, mais frequentemente um mouse, e apresenta informações organizadas em janelas e representadas com ícones. Os comandos disponíveis são compilados em menus, e as ações são executadas fazendo gestos com o dispositivo apontador. Um gerenciador de janelas facilita as interações entre janelas, aplicativos e o sistema de janelas. O sistema de janelas lida com dispositivos de hardware, tais como dispositivos apontadores, hardware gráfico e posicionamento do ponteiro.

Em computadores pessoais, todos estes elementos são modelados através de uma metáfora de área de trabalho para produzir uma simulação chamada ambiente de área de trabalho, na qual a tela representa uma área de trabalho, sobre a qual documentos e pastas de documentos podem ser colocados. Gerenciadores de janelas e outros softwares se combinam para simular o ambiente de área de trabalho com graus variados de realismo.

As entradas podem aparecer em uma lista para dar espaço a texto e detalhes, ou em uma grade para compactação e ícones maiores com pouco espaço por baixo para texto. Existem variações intermediárias, como uma lista com várias colunas de itens e uma grade de itens com linhas de texto que se estendem lateralmente a partir do ícone.

Layouts de várias linhas e colunas comumente encontrados na web são "shelf" (prateleira) e "waterfall" (cascata). O primeiro é encontrado em mecanismos de busca de imagens, onde as imagens aparecem com uma altura fixa, mas comprimento variável, e é tipicamente implementado com a propriedade e parâmetro CSS display: inline-block;. Um layout de cascata encontrado no Imgur e TweetDeck com largura fixa, mas altura variável por item, é geralmente implementado especificando column-width:.

Interface pós-WIMP

Dispositivos móveis menores, como assistentes digitais pessoais (PDAs) e smartphones, utilizam tipicamente os elementos WIMP com metáforas unificadoras diferentes, devido a restrições de espaço e dispositivos de entrada disponíveis. Os aplicativos para os quais o WIMP não é adequado podem usar novas técnicas de interação, coletivamente denominadas UIs pós-WIMP.

Desde 2011, alguns sistemas operacionais baseados em tela sensível ao toque, como o iOS da Apple (iPhone) e o Android, utilizam a classe de GUIs designada por pós-WIMP. Estes suportam estilos de interação que usam mais do que um dedo em contato com a tela, o que permite ações como beliscar e girar, que não são suportadas por um único ponteiro e mouse."Reality-Based Interaction: A Framework for Post-WIMP Interfaces".

Interação Dispositivos de interface humana para a interação eficiente com uma GUI incluem um teclado de computador, especialmente usado em conjunto com atalhos de teclado, dispositivos apontadores para o controle do cursor (ou melhor, ponteiro): mouse, trackpoint, touchpad, trackball, joystick, teclados virtuais e heads-up displays (dispositivos de informações translúcidos ao nível dos olhos).

Existem também ações executadas por programas que afetam a GUI. Por exemplo, existem componentes como inotify ou D-Bus para facilitar a comunicação entre programas de computador.

História

Primeiros esforços Ivan Sutherland desenvolveu o Sketchpad em 1963, amplamente considerado o primeiro programa gráfico de design auxiliado por computador. Utilizava uma caneta óptica para criar e manipular objetos em desenhos de engenharia em tempo real com gráficos coordenados. No final da década de 1960, investigadores do Stanford Research Institute, liderados por Douglas Engelbart, desenvolveram o On-Line System (NLS), que utilizava hiperlinks baseados em texto manipulados com um dispositivo então novo: o mouse. (Uma demonstração do NLS em 1968 ficou conhecida como "A Mãe de Todas as Demonstrações".) Na década de 1970, as ideias de Engelbart foram ainda mais refinadas e estendidas aos gráficos por pesquisadores do Xerox PARC e, especificamente, Alan Kay, que foi além dos hiperlinks baseados em texto e usou uma GUI como interface principal para a linguagem de programação Smalltalk, que rodava no computador Xerox Alto, lançado em 1973. A maioria das GUIs modernas de uso geral deriva deste sistema.

A GUI do Xerox PARC consistia em elementos gráficos tais como janelas, menus, botões de rádio e caixas de seleção. O conceito de ícones foi introduzido mais tarde por David Canfield Smith, que tinha escrito uma tese sobre o assunto sob a orientação de Kay.Lieberman, Henry. "A Creative Programming Environment, Remixed", MIT Media Lab, Cambridge.Salha, Nader. "Aesthetics and Art in the Early Development of Human-Computer Interfaces" , outubro de 2012.Smith, David (1975). "Pygmalion: A Creative Programming Environment". A GUI do PARC emprega um dispositivo apontador juntamente com um teclado. Estes aspectos podem ser enfatizados usando o termo alternativo e acrônimo para janelas, ícones, menus, dispositivo apontador (WIMP). Este esforço culminou no Xerox Alto de 1973, o primeiro computador com uma GUI, embora o sistema nunca tenha atingido a produção comercial.

O primeiro computador comercialmente disponível com uma GUI foi a estação de trabalho PERQ de 1979, fabricada pela Three Rivers Computer Corporation. O seu design foi fortemente influenciado pelo trabalho no Xerox PARC. Em 1981, a Xerox comercializou finalmente as ideias do Alto sob a forma de um sistema novo e melhorado – o Xerox 8010 Information System – mais conhecido como Xerox Star.The first GUIsXerox Star user interface demonstration, 1982 Estes sistemas iniciais estimularam muitos outros esforços de GUI, incluindo máquinas Lisp da Symbolics e outros fabricantes, o Apple Lisa (que apresentou o conceito de barra de menus e controles de janelas) em 1983, o Apple Macintosh 128K em 1984, e o Atari ST com o GEM da Digital Research, e o Commodore Amiga em 1985. O Visi On foi lançado em 1983 para computadores IBM PC compatível, mas nunca foi popular devido às suas altas exigências de hardware. No entanto, foi uma influência crucial no desenvolvimento contemporâneo do Microsoft Windows.

Apple, Digital Research, IBM e Microsoft usaram muitas das ideias da Xerox para desenvolver produtos, e as especificações Common User Access da IBM formaram a base das GUIs usadas no Microsoft Windows, OS/2 Presentation Manager da IBM, e o kit de ferramentas e gerenciador de janelas Unix Motif. Estas ideias evoluíram para criar a interface encontrada nas versões atuais do Microsoft Windows, e em vários ambientes de área de trabalho para sistemas operacionais do tipo Unix (Unix-like), como o macOS e o Linux. Assim, a maioria das GUIs atuais tem, em grande parte, expressões comuns.

Popularização

O início da década de 1980 viu um interesse crescente nas GUIs. O Apple Lisa foi lançado em 1983, mas era caro e comercialmente malsucedido. Aplicações individuais para muitas plataformas apresentaram as suas próprias variantes de GUI. Apesar das vantagens da GUI, muitos críticos questionaram o valor de todo o conceito, citando limites de hardware e problemas em encontrar software compatível.