# Graphical User Interface (GUI)
A Graphical User Interface (GUI) is a visual interface that allows users to interact with software through graphical elements like windows, icons, buttons, and menus. Users interact primarily with a mouse or touch input rather than typing commands.
GUIs revolutionized computing by making software accessible to non-technical users. The visual metaphors (desktop, folders, trash) made abstract operations intuitive and discoverable.
## Key Characteristics
- **Visual elements**: Windows, buttons, icons, menus, forms
- **Direct manipulation**: Click, drag, drop interactions
- **WYSIWYG**: What You See Is What You Get
- **Discoverability**: Features visible and explorable
- **Immediate feedback**: Visual responses to actions
## Core Components
- **Windows**: Containers for application content
- **Menus**: Organized lists of commands
- **Toolbars**: Quick access to common actions
- **Dialogs**: Modal interactions for specific tasks
- **Forms**: Input fields, checkboxes, dropdowns
- **Status bars**: Contextual information display
## Design Principles
- **Consistency**: Similar actions work the same way
- **Feedback**: Every action produces visible response
- **Affordance**: Elements suggest how to use them
- **Hierarchy**: Visual organization guides attention
- **Accessibility**: Usable by people with disabilities
## GUI vs CLI vs TUI
| Aspect | GUI | [[Terminal User Interface (TUI)]] | [[Command Line Interface (CLI)]] |
|--------|-----|-----|-----|
| Input | Mouse + keyboard | Keyboard | Text commands |
| Learning curve | Gentle | Moderate | Steeper |
| Discoverability | High | Medium | Low |
| Automation | Poor | Limited | Excellent |
| Resource usage | Higher | Low | Minimal |
| Precision | Lower | Medium | High |
## GUI Frameworks
- **Web**: React, Vue, Angular, Svelte
- **Desktop**: Electron, Qt, GTK, WinUI
- **Mobile**: SwiftUI, Jetpack Compose, Flutter
- **Cross-platform**: Flutter, React Native, Tauri
## Historical Milestones
- **1973**: Xerox Alto introduces the GUI concept
- **1984**: Apple Macintosh brings GUI to consumers
- **1985**: Windows 1.0 launches
- **1990s**: Web browsers create new GUI paradigm
- **2007**: iPhone revolutionizes touch-based GUI
## References
- https://en.wikipedia.org/wiki/Graphical_user_interface
## Related
- [[Terminal User Interface (TUI)]]
- [[Command Line Interface (CLI)]]
- [[User Experience (UX)]]
- [[User Interface Design]]