O que é a API GUI nativa do Linux?

Espero que isto não seja uma pergunta estúpida, mas é algo que sempre me perguntei. Ambos Windows (Win32 API) e OS X (Cocoa) têm suas próprias APIs para lidar com windows, eventos e outras coisas do OS. Nunca tive uma resposta clara sobre o equivalente do Linux.

ouvi algumas pessoas dizerem GTK+, mas GTK+ sendo plataforma transversal, como pode ser nativo?

Author: BoltClock, 2012-10-04

11 answers

No Linux a interface gráfica do utilizador não faz parte do sistema operativo. A interface gráfica de usuário encontrada na maioria dos desktops Linux é fornecida por um software chamado X Window System, que define uma forma independente de dispositivo de lidar com telas, teclados e dispositivos ponteiros.

A janela X define um protocolo de rede para a comunicação, e qualquer programa que saiba como "falar" este protocolo pode usá-lo. Existe uma biblioteca C chamada Xlib que a torna é mais fácil usar este protocolo, por isso o Xlib é uma espécie de a API da interface gráfica nativa. O Xlib não é a única forma de aceder a um servidor de janelas em X; existe também o XCB.

Bibliotecas de ferramentas como GTK+ (usadas por GNOME ) e Qt (usadas por KDE), construídas no topo do Xlib, são usadas porque são mais fáceis de programar. Por exemplo, eles dão-lhe uma aparência consistente em todas as aplicações, tornar mais fácil de usar o drag-and-drop, fornecer o padrão de componentes para um ambiente de trabalho moderno, e assim por diante.

A forma como X desenha na tela internamente depende da implementação. X.org tem uma parte independente do dispositivo e uma parte dependente do dispositivo. O primeiro gerencia recursos de tela como o windows, enquanto o segundo se comunica com o driver da placa gráfica, geralmente um módulo do kernel. A comunicação pode acontecer ao longo de acesso directo à memória ou através de chamadas do sistema para o núcleo. O controlador traduz os comandos para um forma que o hardware no cartão compreende.

A partir de 2013, um novo sistema de janelas chamado Wayland está a começar a ser utilizável, e muitas distribuições disseram que em algum momento irão migrar para ele, embora ainda não exista um calendário claro. Este sistema é baseado na API OpenGL/ES, o que significa que no futuro o OpenGL será a "API GUI nativa" no Linux. O trabalho está sendo feito para portar GTK+ e QT para Wayland, de modo que aplicações populares atuais e sistemas de desktop precisariam mudanças mínimas. As aplicações que não podem ser portadas serão suportadas através de um servidor X11, assim como o OS X suporta aplicativos X11 através do Xquartz. O porto GTK+ é esperado para terminar dentro de um ano , enquanto o Qt 5 já tem suporte completo para Wayland.

Para complicar ainda mais as coisas, o Ubuntu anunciou que estão a desenvolver um novo sistema chamado Mir por causa dos problemas que percebem com a Wayland. Este sistema de janelas também é baseado na API OpenGL/ES.

 559
Author: Joni, 2017-01-14 14:40:10

O Linux é um kernel, não um sistema operacional completo. Existem diferentes sistemas de windowing e gui que funcionam em cima do Linux para fornecer windowing. Tipicamente X11 é o sistema de janelas usado pelo Linux distros.

 79
Author: Chris Thompson, 2012-10-03 21:26:28

Wayland Também vale a pena mencionar, pois é principalmente referido como um"futuro assassino X11".

Note também que o Android e outros sistemas operacionais móveis não incluem o X11, embora tenham um kernel Linux, então nesse sentido o X11 não é nativo de todos os sistemas Linux.

Ser multi-plataforma não tem nada a ver com ser nativo. O cacau também foi portado para outras plataformas via GNUStep , mas ainda é nativo do OS X / macOS.
 57
Author: none, 2018-02-26 23:13:55

Estritamente falando, a API do Linux consiste em suas chamadas de sistema . Estas são todas as funções do kernel que podem ser chamadas por um programa de modo de usuário (não-kernel). Esta é uma interface de nível muito baixo que permite aos Programas fazer coisas como abrir e ler arquivos. Ver http://en.wikipedia.org/wiki/System_call ([5]) para uma introdução geral.

Um sistema Linux Real também terá uma "pilha" inteira de outros softwares rodando nele, a fim de fornecer um usuário gráfico interface e outras características. Cada elemento desta pilha irá oferecer a sua própria API.

 22
Author: nibot, 2012-10-03 21:37:37

Para ajudar no que já foi mencionado, existe uma boa visão geral da pilha de gráficos Linux neste blog: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/

Isto explica o X11 / Wayland etc e como tudo se encaixa. Além do que já foi mencionado, acho que vale a pena adicionar um pouco sobre as seguintes API que você pode usar para gráficos em Linux:

Mim - " mim é muitas coisas, mas uma das coisas principais que fornece que é mais famoso por sua implementação OpenGL. É uma implementação de código aberto da API OpenGL."

Cairo - " cairo é uma biblioteca de desenho usada tanto por aplicações como o Firefox diretamente, ou através de bibliotecas como GTK+, para desenhar formas vetoriais."

DRM (Direct Rendering Manager) - entendo isto pelo menos, mas são basicamente os controladores de kernel que lhe permitem escrever gráficos directamente para o framebuffer sem passar pelo X

 18
Author: Matt, 2012-10-04 03:40:47

Suponho que a pergunta é mais como "o que é a API nativa do linux".

Na maioria dos casos X (também conhecido por X11) será utilizado para isso: http://en.wikipedia.org/wiki/X_Window_System.

Você pode encontrar a documentação da API aqui

 9
Author: Mark, 2012-10-04 09:23:03

XWindows é provavelmente o mais próximo do que poderia ser chamado de 'nativo':)

 5
Author: Sergey Sirotkin, 2012-10-03 21:26:48

A coisa mais próxima do Win32 no linux seria a libc, já que você menciona não só a UI, mas eventos e"outras coisas do sistema operacional"

 1
Author: Midhat, 2012-10-04 00:54:31

A GUI é uma abstração de alto nível de capacidade, por isso quase tudo, desde o servidor XOrg ao OpenGL, é portado de plataforma cruzada, incluindo para a plataforma Windows. Mas se por GUI API você quer dizer * nix graphics API então você pode estar vagando em torno de"infra-estrutura de renderização direta".

 0
Author: Chawathe Vipul, 2015-11-29 09:37:39

As operações gráficas do kernel linux estão em / include / linux / fb.h as struct fb_ops. Eventualmente isto é o que add-ons como X11, Wayland, ou DRM parecem referência. Como estas operações são apenas para placas de vídeo, não vetoriais ou raster hardcopy ou dispositivos terminais orientados para tty, a sua utilidade como uma interface gráfica é limitada; simplesmente não é inteiramente verdade que você precisa desses add-ons para obter saída gráfica, se você não se importa de usar algum assembler para contornar o syscall como necessário.

 0
Author: M. Ziegast, 2018-02-27 01:49:06

Wayland

Como podes ouvir, wayland is the featured choice of many distros these days, because of its protocol is simpler than the X.

Toolkits of wayland

Toolkits ou bibliotecas gui que wayland sugere são:

  • QT 5
  • GTK+
  • LSD
  • confusão
  • EFL
 0
Author: Amir Forsati, 2018-10-04 07:39:38