Een grafische gebruikersomgeving (ook wel aangeduid met het Engelse graphical user interface, afgekort GUI, vaak uitgesproken als "goewie") is een manier van interactie met een computer waarbij grafische beelden, widgets en tekst gebruikt worden. In computerjargon wordt ook wel gesproken van een frontend.
Basisprincipes
De basisprincipes van de grafische gebruikersomgeving werden uitgevonden door Xerox PARC en toegepast in de Xerox Alto-computer. De meeste moderne GUI's stammen hiervan af. Om deze reden noemen sommigen dit type interface een PARC User Interface (PUI). Sommige bronnen zeggen dat Douglas Engelbart het GUI-concept formuleerde nog voor Xerox het in de praktijk bracht. Een PUI bestaat uit grafische widgets zoals vensters, menu's, knoppen, keuzerondjes en pictogrammen en maakt gebruik van een aanwijsapparaat (zoals een muis, trackball of aanraakscherm) ter aanvulling van het toetsenbord. Om die reden wordt een PUI ook wel WIMP (Windows, Icons, Menu, Pointer) genoemd. Widgets zijn dikwijls geprefabriceerd in de vorm van widget-toolkits.
Voorbeelden van besturingssystemen die PUI's ondersteunen zijn Mac OS X, Windows, GEOS en Unix/Linux (wanneer het X Window System gebruikt wordt). Deze laatste PUI wordt ook nog uitgebreid door widget-toolkits als Motif (CDE), Qt (onder andere gebruikt in KDE), Tk (op verschillende platforms), GTK+ en gtkmm (onder andere gebruikt in GNOME) en de geheel platformonafhankelijke AWT en Swing.
GUI's die geen PUI's zijn zijn meestal te vinden in het genre van computerspellen. Rond geavanceerde GUI's gebaseerd op virtual reality wordt nog regelmatig onderzoek verricht.
Tekstuele interface
Vergelijkbaar met GUI's zijn tekstuele gebruikersinterfaces (TUI, text user interface) die dezelfde types van widgets weergeven, maar in een tekengeoriënteerde omgeving in plaats van een pixelgeoriënteerde omgeving. Voorbeelden van TUI's zijn vele MS-DOS programma's en programma's die gebruikmaken van de ncurses-bibliotheek, die zorgt voor de TUI.
Combinatie
Sommige applicaties hebben beide interfaces, omdat beide voordelen bieden. TUI's zijn makkelijk te gebruiken in een netwerk, omdat ze weinig dataoverdracht vereisen, maar GUI's zijn mooier. Bij een TUI wordt er niet beslist welke pixel wat doet, maar hangt dit gewoon af van welke pixels een teken gebruikt. Er is dus veel minder vrijheid om met een pixel te doen wat je wilt.
De grafische gebruikersinterface staat in fel contrast met de opdrachtregelinterface (CLI).
Omdat GUI's en TUI's het grootste deel van alle relevante opdrachten op één scherm weergeven, hebben ze een minder steile leercurve (in de zin dat ze makkelijker te leren zijn) dan CLI's, maar gebruikers met visuele of motorische handicaps hebben dikwijls problemen met de navigatie. De meeste GUI's verbruiken een pak meer processorkracht dan een CLI, waardoor ze weinig bruikbaar zijn op oudere apparatuur. Daarnaast zijn CLI's vaak flexibeler.
Een GUI kan relatief eenvoudig in elkaar worden geknutseld. Met Borland Delphi of Uniface kan een GUI zelfs binnen enkele minuten worden vervaardigd. Er zijn echter bedrijven die veel aandacht besteden aan de ontwikkeling van GUI's. Een bekende methode is GUIDE (Graphical User Interface Design and Evaluation).