A powerful, configurable GUI menu application with an integrated help system. Create dynamic menus using YAML configuration files and provide comprehensive documentation through the built-in markdown help system.
- π Dynamic Menu Creation: Configure menus through YAML files
- π Integrated Help System: Built-in markdown documentation with graphics support
- π₯οΈ Real-time Command Execution: Live output streaming with interactive terminal
- π± Multi-column Layouts: Organize menu items in customizable column layouts
- π¨ Customizable Interface: Logos, icons, tooltips, and styling options
- π¦ Self-contained Builds: Create standalone executables with PyInstaller
- π§ Cross-platform: Works on Linux (X11/Wayland), macOS, and Windows
icon: smallicon.png
logo: logo.png
logo_size: 320x240
menu_title: "My Application Menu"
num_columns: 2 # Multi-column layout
menu_items:
- name: "System Commands"
column: 1
button_info: "System administration tasks"
items:
- name: "System Information"
command: "uname -a"
button_info: "Display system information"
- name: "Disk Usage"
command: "df -h"
- name: "File Operations"
column: 2
submenu_columns: 2 # Submenu in 2 columns
items:
- name: "List Directory"
column: 1
command: "ls -alF"
- name: "Current Path"
column: 2
command: "pwd"The application features a comprehensive help system with markdown rendering, graphics support, and configurable documentation.
- π Markdown Rendering: Full markdown support with syntax highlighting, tables, and formatting
- πΌοΈ Graphics Support: Display images and graphics inline with documentation
- π Link Navigation: External links open in browser, internal document navigation
- π Table of Contents: Automatic navigation between help topics
- βοΈ Configurable: Define help documents and topics through
help_config.yml
Create a Docs/help_config.yml file to configure the help system:
---
help_config: README.md # Default help document
help_graphic: ../logo.png # Help system graphic
help_topics: # Additional help topics
- topic: "User Guide"
document: "Docs/user-guide.md"
- topic: "Troubleshooting"
document: "Docs/troubleshooting.md"
- topic: "Configuration Examples"
document: "Docs/examples.md"project/
βββ menu.py # Main application
βββ config.yml # Menu configuration
βββ Docs/ # Help system (external)
β βββ help_config.yml # Help configuration
β βββ README.md # Main help document
β βββ user-guide.md # Additional help topics
β βββ troubleshooting.md # More help content
β βββ images/ # Help graphics
βββ logo.png # Application logo
- Click Help Button: Located in the top-right corner of the main window
- Browse Topics: Use the table of contents panel to navigate
- View Content: Rich markdown content with proper formatting
- Follow Links: Click links to open external resources or navigate documents
The help system automatically detects and loads documentation from the Docs/ directory, making it easy to maintain comprehensive user documentation alongside your application.
uv venv menu_venv --python=3.12
source menu_venv/bin/activate
uv pip install PyQt5 PyYaml markdown
python menu.pyFor development, you need:
- PyQt5: GUI framework
- PyYAML: Configuration file parsing
- markdown: Help system rendering (for integrated documentation)
Create self-contained executables that don't require Python or virtual environments on the target system.
# Interactive build menu (recommended for first-time users)
./build_menu.sh
# Or choose your preferred method:
./build.sh # Bash script - proven, reliable (Linux/macOS)
python build.py # Python script - cross-platform, enhanced
build.bat # Windows batch scriptWhich build method should I use?
./build_menu.sh- Interactive menu, great for first time./build.sh- If you prefer the proven bash approach (Linux/macOS)python build.py- If you want cross-platform compatibility
After building, you'll get:
- Standalone executable: No Python installation required
- Distribution package: Includes executable, config files, and assets
- ZIP archive: Ready for distribution
The build process automatically installs these dependencies:
- PyInstaller: Creates standalone executables
- PyQt5: GUI framework
- PyYAML: Configuration parsing
- markdown: Help system rendering with full markdown support
Once built, users receive a complete package containing:
- Standalone executable (no Python installation needed)
- Configuration files (
config.yml, sample configs) - Help documentation (
Docs/directory with full help system) - Assets (logos, icons, scripts)
- README and run scripts for easy setup
Users can:
- Download and extract the distribution package
- Run the executable directly (no installation needed)
- Customize menus by editing
config.yml - Access comprehensive help through the built-in Help button
- Modify help documentation by editing markdown files in
Docs/
No Python installation required on the target system!
This application now includes enhanced Linux support for both X11 and Wayland display servers:
# Cross-platform launcher (automatically detects environment)
./run.sh
# Linux-specific launcher with diagnostics
./run_linux.sh --debug- β RHEL 8+ (including Wayland)
- β Fedora 35+ (including Wayland)
- β Ubuntu 22.04+ (including Wayland)
- β CentOS Stream
- β openSUSE
- β Arch Linux
- Qt platform plugin errors on Wayland systems
- "Could not load the Qt platform plugin 'xcb'" errors
- Font rendering issues on Linux
- Cross-platform compatibility between macOS and Linux
See LINUX_COMPATIBILITY.md for detailed troubleshooting.
- BUILD.md: Detailed build instructions and troubleshooting
- FONT_FIX.md: Font management system and Qt warning fixes
- LINUX_COMPATIBILITY.md: Linux and Wayland compatibility guide
- config.yml: Current configuration example
- Docs/README.md: Comprehensive user guide and help system overview
- Docs/help_config.yml: Help system configuration
- Additional Topics: See
Docs/directory for complete help documentation
- Multi-column layouts with customizable menu organization
- Interactive help system with markdown rendering
- Cross-platform compatibility settings
- Advanced command execution with real-time output
The integrated help system provides comprehensive documentation accessible directly from the application through the Help button.

