tuanchris 3166c3041f fix(touch): fix shuffle toggle and improve stop reliability 1 settimana fa
..
models 172295d0bf feat(touch): add full-page pattern selector and enhance playlist management 1 settimana fa
qml 3166c3041f fix(touch): fix shuffle toggle and improve stop reliability 1 settimana fa
scripts d499747f90 Add kiosk code (#89) 3 mesi fa
.env.example 4e492e4e5c add DW touch led control 2 mesi fa
.gitattributes d499747f90 Add kiosk code (#89) 3 mesi fa
RASPBERRY_PI_SETUP.md d499747f90 Add kiosk code (#89) 3 mesi fa
README.md d499747f90 Add kiosk code (#89) 3 mesi fa
backend.py 3166c3041f fix(touch): fix shuffle toggle and improve stop reliability 1 settimana fa
configure-boot.sh d499747f90 Add kiosk code (#89) 3 mesi fa
dune-weaver-touch.desktop d499747f90 Add kiosk code (#89) 3 mesi fa
dune-weaver-touch.service c4673a7ebc fix(touch): add CPUQuota limit and fix evtest binary mode buffering 1 settimana fa
install-service.sh d499747f90 Add kiosk code (#89) 3 mesi fa
install.sh 4ef0f1dd00 Revert to EGLFS backend, keep Pi 5 QML rotation 1 mese fa
main.py 6c3b242446 revert(touch): revert CPU optimization attempts - none resolved 100% CPU 1 settimana fa
png_cache_manager.py d499747f90 Add kiosk code (#89) 3 mesi fa
requirements.txt 6c3b242446 revert(touch): revert CPU optimization attempts - none resolved 100% CPU 1 settimana fa
run.sh 4ef0f1dd00 Revert to EGLFS backend, keep Pi 5 QML rotation 1 mese fa
setup-autologin.sh d499747f90 Add kiosk code (#89) 3 mesi fa
setup-autostart.sh d499747f90 Add kiosk code (#89) 3 mesi fa
setup_kiosk.sh d499747f90 Add kiosk code (#89) 3 mesi fa

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