Deck UI is a modern and user-friendly control panel interface developed for Windows systems. It works integrated with Deck API and Deck Media API to provide real-time management of your system controls (volume, brightness, power management) and media player controls.
- 🕐 Real-time Clock: Live clock display in HH:MM format
- 🔊 Volume Control: Interactive volume level control and mute/unmute functionality
- 💡 Brightness Control: Monitor brightness adjustment with vertical slider
- ⚡ System Management: One-click shutdown, sleep mode, screen lock
- 🎵 Universal Media Control: Spotify, YouTube, VLC, Windows Media Player support
- 📊 Rich Media Information: Artist, song title, duration and position display
- 🎨 Dynamic Background: Auto-updating system wallpaper
- 📱 Modern Design: Glassmorphism effects and smooth animations
For this UI to show full functionality, the following services must be installed and running:
-
Deck API - For system controls
- Port:
2837 - Volume, brightness, power management and wallpaper control
- Port:
-
Deck Media API - For media controls
- Port:
3728 - Universal media player control and information retrieval
- Port:
ws://localhost:5050- Brightness level changesws://localhost:5051- Volume level changesws://localhost:5052- Background image changesws://localhost:3728/ws/media- Media status and information updates
git clone https://github.com/enescaakir/deck-api.git
cd deck-api
python -m venv venv
venv\Scripts\activate
pip install fastapi uvicorn websockets screen-brightness-control pycaw comtypes python-multipart
python main.pygit clone https://github.com/enescaakir/deck-media-api.git
cd deck-media-api
python -m venv venv
venv\Scripts\activate
pip install fastapi uvicorn winrt
python main.py- Open the
index.htmlfile in any modern web browser - Recommended resolution: 1280x400 pixels
- Press F11 for full screen experience
- ⚡ Power Button: Safely shuts down the system
- 🌙 Sleep Button: Puts system into sleep mode (standby)
- 🔒 Lock Button: Locks the work screen
- 🔊 Volume Button: Master volume on/off (mute toggle)
- 💡 Brightness Slider:
- Instant adjustment with vertical clicking
- Yellow icon indicator above 10%
- Multi-monitor support
- 🔊 Volume Slider:
- Volume level adjustment with vertical clicking
- Blue icon indicator above 10%
- Automatic icon change when muted
- 👤 Artist Info: Currently playing song's artist name
- 🎵 Song Title: Scrolling text animation (for long titles)
- ⏯️ Position Bar: Current song progress
- ⏱️ Time Display: Current position / Total duration (HH:MM:SS)
- 🎨 Visual Content: Decorative GIF animation
<!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Material Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/material-icons@1.13.14/iconfont/material-icons.min.css">
<!-- Roboto Mono Font -->
<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@700&display=swap" rel="stylesheet">- Real-time WebSocket: Instant data synchronization
- REST API Integration: HTTP endpoint calls
- Custom Vertical Sliders: Customized vertical slider controls
- Smart Marquee: Smart scrolling text for long content
- Dynamic Icon Management: Status-based icon changes
// System controls
fetch("http://localhost:2837/system?action=shutdown") // Shutdown
fetch("http://localhost:2837/system?action=standby") // Sleep
fetch("http://localhost:2837/system?action=lock") // Lock
// Volume controls
fetch("http://localhost:2837/volume?level=50") // Volume level
fetch("http://localhost:2837/volume?level=mute") // Mute toggle
// Brightness controls
fetch("http://localhost:2837/brightness?level=75") // Brightness
// Background
fetch("http://localhost:2837/bg") // Wallpaper// Get media information
fetch("http://localhost:3728/media")
// Media controls (will be active in future versions)
fetch("http://localhost:3728/media?action=play")
fetch("http://localhost:3728/media?action=pause")
fetch("http://localhost:3728/media?action=next")
fetch("http://localhost:3728/media?action=previous")// Listen to volume level changes
const audioWs = new WebSocket("ws://localhost:5051/");
audioWs.onmessage = ({ data }) => {
volumeFill.style.height = `${data}%`;
updateVolumeIcon(data);
};
// Get media information in real-time
const mediaWs = new WebSocket("ws://localhost:3728/ws/media");
mediaWs.onmessage = (event) => {
const data = JSON.parse(event.data);
if (!data.error) {
setMediaInfo(data.artist, data.title, data.position, data.duration);
}
};:root {
--custom-red: #ff4757; /* Power button */
--custom-blue: #3742fa; /* Sleep button & Volume */
--custom-dark: #2f3542; /* Lock button */
--custom-gray: #57606f; /* Mute button */
}- Main Window: 1280x400px
- Clock Display: 170px Roboto Mono
- Icon Sizes: 40-50px Material Icons
- Control Buttons: 80x80px circular
- Slider Height: 100% responsive
<!-- Change the GIF in the right panel -->
<img src="https://your-gif-url-here.gif"
class="w-full h-full rounded-xl object-cover" />Thanks to Deck Media API, it works fully compatible with the following applications:
- 🎵 Spotify - Premium & Free
- 🌐 YouTube - Web-based
- 🎬 Windows Media Player - Native support
- 🎵 Apple Music/iTunes - Full integration
- 🎵 VLC Media Player - Advanced control
- 🎵 Groove Music - Windows built-in
- 🎵 Deezer - Streaming service
- 🎵 Tidal - Hi-Fi audio
# Check if services are running
netstat -an | findstr :2837
netstat -an | findstr :3728
netstat -an | findstr :5050
netstat -an | findstr :5051
netstat -an | findstr :5052- Check that Deck API is active on port 2837
- Check Windows Firewall settings
- Check if antivirus software is blocking the API
- Check that a media player is open and running
- Verify that Deck Media API is running on port 3728
- Check that Windows Media Controls are active
- Check error messages in JavaScript console
- Verify that mouse event listeners are loaded
// Paste into console to check connection status
console.log('Audio WS:', audioWs.readyState);
console.log('Brightness WS:', brightnessWs.readyState);
console.log('Media WS:', mediaWs.readyState);
console.log('Background WS:', backgroundImageWs.readyState);
// readyState: 0=CONNECTING, 1=OPEN, 2=CLOSING, 3=CLOSED- Memory Usage: ~15-25MB (browser dependent)
- CPU Usage: <1% (idle state)
- WebSocket Latency: <50ms (local network)
- API Response Time: <100ms (average)
- Fork - Copy the repository to your own account
- Create Branch -
git checkout -b feature/new-feature - Commit -
git commit -m 'Add new feature' - Push -
git push origin feature/new-feature - Open Pull Request - For us to review your changes
- Design compliant with Material Design rules
- Responsive and accessible code writing
- Comment lines in JSDoc format
- Pay attention to cross-browser compatibility
This project is licensed under the MIT License. For details, please check the LICENSE file.
👨💻 Developer: Enes Çakır
🌐 Website: enescakr.com
💼 LinkedIn: linkedin.com/in/enescaakir
🐙 GitHub: github.com/enescaakir
⭐ If you like this project, don't forget to star it on GitHub!
🔄 Click the "Watch" button to stay updated!
🤝 Visit the Discussions section to interact with the community!