- Replace default Tauri template content with detailed project description - Add comprehensive feature list and tech stack information - Include complete installation and development setup guide - Document application interface and configuration details - Add development workflow and debugging tips - Provide contributing guidelines and support information - Write documentation in English for international accessibility
6.1 KiB
6.1 KiB
Display Ambient Light Desktop App
A desktop application built with Tauri 2.0 for ambient light control, supporting multi-monitor screen sampling and LED strip control to create immersive ambient lighting effects.
✨ Features
- 🖥️ Multi-Monitor Support - Automatic detection and configuration of multiple displays
- 🎨 Real-time Screen Sampling - High-performance screen content capture and color analysis
- 💡 LED Strip Control - Configurable LED strip layout and mapping support
- ⚖️ White Balance Calibration - Built-in white balance adjustment tool with fullscreen mode
- 🎛️ Intuitive Configuration Interface - Modern UI with drag-and-drop configuration support
- 🔧 Hardware Integration - Display brightness control and audio device management
- 📡 Network Communication - UDP and WebSocket communication support
🛠️ Tech Stack
Frontend
- Framework: Solid.js - High-performance reactive UI framework
- Build Tool: Vite - Fast frontend build tool
- Styling: Tailwind CSS + DaisyUI - Modern UI component library
- Routing: @solidjs/router - Client-side routing
- Language: TypeScript - Type-safe JavaScript
Backend
- Framework: Tauri 2.0 - Cross-platform desktop app framework
- Language: Rust - High-performance systems programming language
- Screen Capture: screen-capture-kit - macOS native screen capture
- Display Control: ddc-hi - DDC/CI display control
- Audio: coreaudio-rs - macOS audio system integration
- Networking: tokio + tokio-tungstenite - Async network communication
📋 System Requirements
- Operating System: macOS 13.0+ (primary supported platform)
- Memory: 4GB+ recommended
- Graphics: Hardware-accelerated graphics card
- Network: For device discovery and communication
🚀 Quick Start
Prerequisites
-
Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env
-
Install Node.js and pnpm
# Install Node.js (recommended using nvm) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash nvm install node # Install pnpm npm install -g pnpm
-
Install Tauri CLI
cargo install @tauri-apps/cli@next
Development Setup
-
Clone the project
git clone <repository-url> cd display-ambient-light/desktop
-
Install dependencies
pnpm install
-
Start development server
pnpm tauri dev
Production Build
# Build the application
pnpm tauri build
# Build artifacts are located in src-tauri/target/release/bundle/
📱 Application Interface
Main Pages
- System Info (
/info
) - Display system and hardware information - Display Info (
/displays
) - Monitor status and configuration - LED Strip Configuration (
/led-strips-configuration
) - LED strip layout and mapping configuration - White Balance (
/white-balance
) - Color calibration and white balance adjustment
Core Features
- Real-time Screen Preview - WebSocket streaming of screen content
- LED Mapping Configuration - Visual configuration of LED strip positions and quantities
- Color Calibration - RGB adjustment panel with fullscreen comparison mode
- Device Management - Automatic discovery and management of LED control devices
🔧 Configuration Files
Application configuration is stored in the user directory:
~/Library/Application Support/cc.ivanli.ambient-light.desktop/
├── config.toml # Main configuration file
├── led_strips.json # LED strip configuration
└── color_calibration.json # Color calibration data
🎯 Development Guide
Project Structure
desktop/
├── src/ # Frontend source code (Solid.js)
│ ├── components/ # UI components
│ ├── stores/ # State management
│ ├── models/ # Data models
│ └── contexts/ # React Context
├── src-tauri/ # Backend source code (Rust)
│ ├── src/
│ │ ├── ambient_light/ # Ambient light control
│ │ ├── display/ # Display management
│ │ ├── rpc/ # Network communication
│ │ └── screenshot/ # Screen capture
│ └── tauri.conf.json # Tauri configuration
└── package.json # Frontend dependencies
Development Workflow
- Frontend Development: Modify files under
src/
, supports hot reload - Backend Development: Modify files under
src-tauri/src/
, requires dev server restart - Configuration Changes: Restart required after modifying
tauri.conf.json
Debugging Tips
- Use browser developer tools to debug frontend
- Use
console.log
and Rust'sprintln!
for debugging - Check Tauri console output for backend logs
🤝 Contributing
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🔗 Related Links
- Tauri Official Documentation
- Solid.js Official Documentation
- Rust Official Documentation
- Tailwind CSS Documentation
📞 Support
If you encounter issues or have suggestions, please:
Note: This application is primarily optimized for macOS platform, support for other platforms may be limited.