A fully-featured application shell built with the iced GUI framework, providing a complete UI foundation with modals, overlays, menus, notifications, and responsive interactions.
This application serves as a comprehensive reference implementation and reusable application shell demonstrating iced's capabilities. It provides:
- Complete UI system with overlays, modals, and menus
- Flexible theming with multiple appearance styles
- User communication via toasts, modals, and notifications
- Keyboard shortcuts for common actions
- Context menus with smart positioning
- Responsive design with dynamic window size handling
- Reference implementation for building iced applications
Building GUI applications in Rust with iced requires understanding many patterns:
- State management and message passing
- Overlay and modal systems
- Cross-platform theming
- Keyboard and mouse event handling
This project demonstrates production-ready solutions to these challenges, serving as:
- π Learning resource for iced developers
- ποΈ Starting point for new applications
- π§ Reference implementation of common UI patterns
- π¦ Future library (see LIBRARY_CRATE.md)
- Modal window with title bar and close button
- Appearance styles: Windows XP, Windows 10, Java Swing, HTML Bootstrap, Plain HTML, Default Iced, Image-Based
- Themes: Light, Dark, Dracula, Nord, Solarized Light/Dark, Gruvbox Light/Dark, Catppuccin variants, Tokyo Night
- Font families: Sans-serif, Serif, Monospace
- Font size slider: Adjustable base font size
- Keyboard shortcuts:
Cmd+Kto toggle,ESCto close - Slide-in animation from top
- Multiple views: Welcome, Form, Chart, Table, Settings
- Keyboard navigation:
Cmd+1/2/3to cycle views - Slide-in animation from bottom
- Visual indicators for current view
- Toast notifications: Auto-dismissing messages with icons
- Modal dialogs: Alert, Confirm, Error types
- Overlay system: Blocks interaction when active
- Click blocking: Prevents interaction with underlying content
- Smart positioning: All floating elements properly layered
- Right-click activation: Shows at cursor position
- Smart repositioning: Stays on-screen near edges
- Dynamic window size: Adapts to window resizing
- Actions: Copy, Paste, Delete with icons
- Click-outside dismissal: Auto-closes on left click
- Current view indicator: Shows active view with icon
- Configuration display: Appearance style, theme, font
- Loading indicator: Visual feedback for async operations
Cmd+K- Toggle configuration menuCmd+1/2/3- Cycle through viewsESC- Close configuration menu or context menu- Right-click - Show context menu
- Hover effects: Visual feedback on interactive elements
- Click blocking: Overlays prevent click-through
- Context menus: Right-click anywhere for menu
- Cursor control: Arrow cursor on overlays (not pointer)
- Smooth transitions: Config menu and view switcher slide in/out
- Toast animations: Fade in/out for notifications
- No delay on close: Instant dismissal for better UX
- Windows XP, Windows 10, Java Swing
- HTML Bootstrap, Plain HTML
- Default Iced, Image-Based (Game)
- Light themes: Light, Solarized Light, Gruvbox Light, Catppuccin Latte
- Dark themes: Dark, Dracula, Nord, Solarized Dark, Gruvbox Dark, Tokyo Night, Catppuccin variants (FrappΓ©, Macchiato, Mocha)
- Font family selection (Sans-serif, Serif, Monospace)
- Adjustable base font size (12-24px)
- Consistent typography across all components
βββ src/
β βββ main.rs # Application entry point
β βββ app/
β βββ mod.rs # Main app logic and view
β βββ state.rs # Application state and types
β βββ message.rs # Message enum for events
β βββ components/
β βββ mod.rs # Component exports
β βββ config_menu.rs # Configuration menu UI
β βββ view_switcher.rs # View switching UI
β βββ status_bar.rs # Status bar component
β βββ notifications.rs # Toasts, modals, overlays
β βββ context_menu.rs # Right-click context menu
β βββ tooltip.rs # Tooltip component
βββ Cargo.toml
βββ README.md
- Framework: iced - A cross-platform GUI library for Rust
- Language: Rust (Edition 2024)
- Features: Canvas rendering, async runtime (tokio)
β Core Shell Complete - The application shell is fully functional with all core UI components implemented.
Note: While the core shell is feature-complete and stable, this is an active development project. See TODO for planned enhancements.
This project includes detailed design documents for planned features:
- π Menu System Proposal - Top menu bar and inspector panel
- π± Responsiveness - Responsive layout system
- π¦ Library Crate - Extracting reusable components
- π Shell API - View trait and shell query system
- βοΈ Shell Configuration - Configuration management
These documents serve as both planning artifacts and implementation guides.
-
Top Menu Bar - See MENU_SYSTEM_PROPOSAL.md
- Implement native menu bar (File, Edit, View, Window, Help)
- Add menu message handlers
- Test cross-platform behavior (macOS, Windows, Linux)
- Add keyboard shortcuts for menu items
-
Responsiveness - See RESPONSIVENESS.md
- Implement responsive layout system (Mobile, Tablet, Desktop)
- Add breakpoint detection and layout mode switching
- Create responsive font sizes and spacing
- Adjust components for different screen sizes
- Test on various window sizes and devices
-
Library Crate - See LIBRARY_CRATE.md
- Extract shell components into reusable library
- Define public API for shell components
- Create documentation and examples
- Publish as separate crate
-
Shell API & Configuration - See SHELL_API.md and SHELL_CONFIG.md
- Implement ShellQuery for read-only state access
- Implement ShellCommands for message builders
- Create View trait for standardized view interface
- Add ViewRegistry for managing view instances
- Implement configuration persistence
- Implement static-component/dynamic-pointer tooltip β
- Reposition view switcher for better visual appearance
- Adjust spacing, text fonts, and other UI elements for final polishing
- Improve initial welcome page with better help hints and instructions
- Side Panel/Inspector - See MENU_SYSTEM_PROPOSAL.md
- Add markdown reader view component
- Add code editor component with syntax highlighting (keyword coloring)
- Add sample form view with various controls:
- Dropdown/select menus
- Sliders
- File selector
- Text inputs
- Checkboxes and radio buttons
- Date pickers
- Add more appearance styles and themes
- Add audio/video player component
- Rust 1.75+ (with 2024 edition support)
- Cargo
# Clone the repository
git clone <repository-url>
cd icedapp2
# Build the project (debug)
cargo build
# Build optimized release
cargo build --release
# Run the application
cargo run --releaseOnce running, you can:
- Open Configuration Menu: Press
Cmd+Kor click the gear icon - Switch Views: Press
Cmd+1/2/3or use the view switcher - Show Context Menu: Right-click anywhere in the window
- Test Notifications: Click the demo buttons to show toasts and modals
- Change Themes: Open config menu and select different appearance styles and themes
- Adjust Typography: Use the font family picker and size slider in config menu
# Check code
cargo check
# Format code
cargo fmt
# Run clippy lints
cargo clippy
# Build documentation
cargo doc --openπ§ Work in Progress - This is an active development project for learning and experimentation.
- β Core shell components are functional and tested
- π API design and library extraction in progress
- π See TODO for planned features
Contributions: Not accepting external contributions at this time, but feedback and suggestions are welcome via issues!
License: BSD-3-Clause
- Single unified overlay blocks all interaction when active
- Modals and menus appear above overlay without adding extra shadows
- Click blocking prevents interaction with underlying content
- Arrow cursor on overlays (not pointer hand)
- Dynamically repositions to stay on-screen
- Uses window resize events to track window dimensions
- Calculates position based on cursor location and menu size
- Maintains full menu size, never shrinks
- Smooth slide-in animations for config menu and view switcher
- Instant close on user action (no animation delay)
- Toast fade in/out animations
- Controlled via
Instanttimestamps and animation subscriptions
- Keyboard shortcuts via event subscription
- Mouse events (cursor movement, clicks, right-clicks)
- Window resize events for responsive positioning
- Message-based architecture for clean state updates
- Built with iced by HΓ©ctor RamΓ³n
- Demonstrates production-ready patterns for iced applications
Note: This application shell provides a complete foundation for building iced applications with professional UI patterns, theming, and user interactions.