Tuan Nguyen d499747f90 Add kiosk code (#89) 3 meses atrás
..
models d499747f90 Add kiosk code (#89) 3 meses atrás
qml d499747f90 Add kiosk code (#89) 3 meses atrás
scripts d499747f90 Add kiosk code (#89) 3 meses atrás
.gitattributes d499747f90 Add kiosk code (#89) 3 meses atrás
RASPBERRY_PI_SETUP.md d499747f90 Add kiosk code (#89) 3 meses atrás
README.md d499747f90 Add kiosk code (#89) 3 meses atrás
backend.py d499747f90 Add kiosk code (#89) 3 meses atrás
configure-boot.sh d499747f90 Add kiosk code (#89) 3 meses atrás
dune-weaver-touch.desktop d499747f90 Add kiosk code (#89) 3 meses atrás
dune-weaver-touch.service d499747f90 Add kiosk code (#89) 3 meses atrás
install-service.sh d499747f90 Add kiosk code (#89) 3 meses atrás
install.sh d499747f90 Add kiosk code (#89) 3 meses atrás
main.py d499747f90 Add kiosk code (#89) 3 meses atrás
png_cache_manager.py d499747f90 Add kiosk code (#89) 3 meses atrás
requirements.txt d499747f90 Add kiosk code (#89) 3 meses atrás
run.sh d499747f90 Add kiosk code (#89) 3 meses atrás
setup-autologin.sh d499747f90 Add kiosk code (#89) 3 meses atrás
setup-autostart.sh d499747f90 Add kiosk code (#89) 3 meses atrás
setup_kiosk.sh d499747f90 Add kiosk code (#89) 3 meses atrás

README.md

Dune Weaver Touch Interface

A PySide6/QML touch interface for the Dune Weaver sand table system that works alongside the existing FastAPI web server.

Features

  • Modern SwipeView Navigation: Swipe between Patterns, Playlists, and Control pages
  • Pattern Browsing: Beautiful grid view with search and thumbnail previews
  • Pattern Execution: Touch-optimized controls with pre-execution options
  • Table Control: Dedicated control page with status monitoring and quick actions
  • Real-time Status: WebSocket integration for live progress updates
  • Modern UI: Material Design inspired interface with animations and shadows
  • Touch Optimized: Large buttons, smooth animations, and intuitive gestures

Architecture

  • Pattern Browsing: Direct file system access for instant loading
  • Execution Control: REST API calls to existing FastAPI endpoints
  • Status Monitoring: WebSocket connection for real-time updates
  • Navigation: StackView-based page navigation

Quick Installation (Auto-Start Setup)

One command to set up everything for kiosk/production use:

sudo ./install.sh

This will:

  • ✅ Create Python virtual environment with dependencies (venv/)
  • ✅ Install system scripts for screen control (/usr/local/bin/screen-on, screen-off, touch-monitor)
  • ✅ Set up systemd service for auto-start on boot
  • ✅ Configure kiosk optimizations (clean boot, auto-login)
  • ✅ Enable automatic startup

Service Management

# Control the service
sudo systemctl start dune-weaver-touch    # Start now
sudo systemctl stop dune-weaver-touch     # Stop service
sudo systemctl status dune-weaver-touch   # Check status
sudo journalctl -u dune-weaver-touch -f   # View logs

# Disable auto-start
sudo systemctl disable dune-weaver-touch

Manual Installation (Development)

  1. Create virtual environment and install dependencies:

    python3 -m venv venv
    source venv/bin/activate  # or: . venv/bin/activate
    pip install -r requirements.txt
    
  2. Ensure the main Dune Weaver FastAPI server is running:

    cd ../  # Go to main dune-weaver directory
    python main.py
    
  3. Run the touch interface:

    ./run.sh              # Uses virtual environment automatically
    # OR manually:
    ./venv/bin/python main.py
    

Advanced Setup Options

For custom installations:

sudo ./setup-autostart.sh

Choose from multiple setup options including systemd service, desktop autostart, or kiosk optimizations.

Project Structure

dune-weaver-touch/
├── main.py                     # Application entry point
├── backend.py                  # Backend controller with API/WebSocket integration
├── models/
│   ├── pattern_model.py        # Pattern list model with file system access
│   └── playlist_model.py       # Playlist model reading from JSON
├── qml/
│   ├── main.qml               # Main window with StackView navigation
│   ├── pages/
│   │   ├── PatternListPage.qml    # Grid view of patterns with search
│   │   ├── PatternDetailPage.qml  # Pattern details with execution controls
│   │   ├── PlaylistPage.qml       # Playlist selection and execution
│   │   └── ExecutionPage.qml      # Current execution status display
│   └── components/
│       └── PatternCard.qml        # Pattern thumbnail card
├── requirements.txt
└── README.md

Usage

Navigation

  • Swipe left/right to navigate between the three main pages:
    • Patterns: Browse and search through all available patterns
    • Playlists: View and manage pattern playlists
    • Control: Monitor table status and quick control actions

Pattern Management

  1. Browse Patterns: Swipe to Patterns page to see grid view with thumbnail previews
  2. Search: Use the search field to filter patterns by name
  3. Select Pattern: Tap a pattern card to view details and execution options
  4. Execute: Choose pre-execution action and tap "Play Pattern"

Table Control

  1. Monitor Status: Swipe to Control page to see current pattern and progress
  2. Control Execution: Use Pause/Resume and Stop buttons
  3. Quick Actions: Use Clear In, Clear Out, or Circle pattern shortcuts
  4. Connection Status: View WebSocket connection status

Notes

  • The touch interface runs independently from the web UI
  • Both interfaces can be used simultaneously
  • Pattern browsing works even if the FastAPI server is offline
  • Execution requires the FastAPI server to be running
  • Paths are relative to the main dune-weaver directory