En Linux, la interfaz gráfica de usuario no forma parte del sistema operativo. La interfaz gráfica de usuario que se encuentra en la mayoría de los escritorios de Linux es proporcionada por un software llamado X Window System , que define una forma independiente del dispositivo de manejar pantallas, teclados y dispositivos de puntero.
X Window define un protocolo de red para la comunicación, y cualquier programa que sepa cómo "hablar" este protocolo puede usarlo. Hay una biblioteca C llamado Xlib que hace que sea más fácil de usar este protocolo, por lo Xlib es una especie de la API de interfaz gráfica de usuario nativa. Xlib no es la única forma de acceder a un servidor X Window; También hay XCB .
Las bibliotecas de herramientas como GTK + (utilizada por GNOME ) y Qt (utilizada por KDE ), creadas sobre Xlib, se utilizan porque son más fáciles de programar. Por ejemplo, le brindan una apariencia consistente en todas las aplicaciones, facilitan el uso de arrastrar y soltar, proporcionan componentes estándar para un entorno de escritorio moderno, etc.
La forma en que X dibuja en la pantalla internamente depende de la implementación. X.org tiene una parte independiente del dispositivo y una parte dependiente del dispositivo. El primero gestiona los recursos de la pantalla, como Windows, mientras que el segundo se comunica con el controlador de la tarjeta gráfica, generalmente un módulo del núcleo. La comunicación puede ocurrir a través del acceso directo a la memoria o mediante llamadas del sistema al núcleo. El controlador traduce los comandos a una forma que el hardware de la tarjeta comprende.
A partir de 2013, un nuevo sistema de ventanas llamado Wayland está comenzando a ser utilizable, y muchas distribuciones han dicho que en algún momento migrarán a él, aunque todavía no hay un calendario claro. Este sistema se basa en la API OpenGL / ES, lo que significa que en el futuro OpenGL será la "API GUI nativa" en Linux. Se está trabajando para portar GTK + y QT a Wayland, de modo que las aplicaciones populares actuales y los sistemas de escritorio necesitarían cambios mínimos. Las aplicaciones que no se pueden portar serán compatibles a través de un servidor X11, al igual que OS X admite aplicaciones X11 a través de Xquartz. Se espera que el puerto GTK + esté terminado dentro de un año , mientras que Qt 5 ya tiene soporte completo de Wayland.
Para complicar aún más las cosas, Ubuntu ha anunciado que están desarrollando un nuevo sistema llamado Mir debido a los problemas que perciben con Wayland. Este sistema de ventanas también se basa en la API OpenGL / ES.