No Linux, a interface gráfica do usuário não faz parte do sistema operacional. A interface gráfica do usuário encontrada na maioria dos desktops Linux é fornecida por um software chamado X Window System , que define uma maneira independente de lidar com telas, teclados e dispositivos apontadores.
O X Window define um protocolo de rede para comunicação e qualquer programa que sabe "falar" esse protocolo pode usá-lo. Há uma biblioteca C chamada Xlib que o torna mais fácil de usar este protocolo, de modo Xlib é uma espécie da API GUI nativa. Xlib não é a única maneira de acessar um servidor X Window; também há XCB .
Bibliotecas de kits de ferramentas como GTK + (usado pelo GNOME ) e Qt (usado pelo KDE ), construídas sobre o Xlib, são usadas porque são mais fáceis de programar. Por exemplo, eles oferecem uma aparência consistente entre aplicativos, facilitam o uso do recurso de arrastar e soltar, fornecem componentes padrão para um ambiente de desktop moderno e assim por diante.
Como o X desenha na tela internamente depende da implementação. O X.org possui uma parte independente do dispositivo e uma parte dependente do dispositivo. O primeiro gerencia recursos de tela como o windows, enquanto o último se comunica com o driver da placa gráfica, geralmente um módulo do kernel. A comunicação pode ocorrer através do acesso direto à memória ou através de chamadas do sistema ao kernel. O driver converte os comandos em um formato que o hardware da placa entende.
A partir de 2013, um novo sistema de janelas chamado Wayland está começando a se tornar utilizável, e muitas distribuições disseram que em algum momento migrarão para ele, embora ainda não haja um cronograma claro. Este sistema é baseado na API OpenGL / ES, o que significa que no futuro o OpenGL será a "API GUI nativa" no Linux. Está sendo feito um trabalho para portar GTK + e QT para Wayland, para que os aplicativos populares atuais e os sistemas de desktop precisem de alterações mínimas. Os aplicativos que não podem ser portados serão suportados por um servidor X11, assim como o OS X suporta aplicativos X11 por meio do Xquartz. Espera- se que a porta GTK + termine dentro de um ano , enquanto o Qt 5 já possui suporte completo a Wayland.
Para complicar ainda mais, o Ubuntu anunciou que está desenvolvendo um novo sistema chamado Mir, devido a problemas que eles percebem com Wayland. Esse sistema de janelas também é baseado na API OpenGL / ES.