A lightweight, cross-platform GUI framework for shell scripts that provides interactive menus, dialogs, and user interfaces without external dependencies.
- Cross-platform compatibility: Works on macOS, Linux, and Windows (with WSL)
- No external dependencies: Pure shell implementation
- Interactive menus: Hierarchical menu system with navigation
- Dialog boxes: Confirmation, input, and selection dialogs
- Progress indicators: Visual feedback for long-running operations
- Color support: Automatic detection and graceful fallback
- Keyboard navigation: Full keyboard support with arrow keys
- Customizable themes: Easy theming and styling options
# Source the framework
source gui_framework.sh
# Create a simple menu
create_menu "Main Menu" "Option 1:Do something" "Option 2:Do something else" "Quit:exit"curl -O https://raw.githubusercontent.com/jagoff/shell-gui-framework/main/gui_framework.sh
source gui_framework.shgit clone https://github.com/jagoff/shell-gui-framework.git
cd shell-gui-framework
source gui_framework.shcurl -sSL https://raw.githubusercontent.com/jagoff/shell-gui-framework/main/setup-gui.sh | bashCheck the examples/ directory for complete working examples:
basic_menu_example.sh- Simple menu demonstrationdemo_quit_functionality.sh- Advanced menu with quit handling
- GUI Specification - Technical details and API reference
- GUI README - User guide and examples
- Universal GUI Framework - Architecture overview
source gui_framework.sh
# Simple menu
create_menu "Choose an option:" \
"Install:install_package" \
"Configure:configure_system" \
"Quit:exit"if show_confirmation "Do you want to proceed?"; then
echo "User confirmed"
else
echo "User cancelled"
fiuser_input=$(show_input_dialog "Enter your name:")
echo "Hello, $user_input!"show_progress_bar "Processing..." 0
# ... do work ...
show_progress_bar "Processing..." 50
# ... more work ...
show_progress_bar "Processing..." 100- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
This framework is used by:
- zsh-starship-migration - ZSH to Starship migration tool