{"id":51302754,"url":"https://github.com/u2n4/dualled-pro","last_synced_at":"2026-06-30T21:32:29.479Z","repository":{"id":368083880,"uuid":"1283457998","full_name":"u2n4/dualled-pro","owner":"u2n4","description":"🎮 Real-time RGB lightbar control for PS5 DualSense \u0026 PS4 DualShock 4 — with a live 3D controller view, 10 lighting effects, battery alerts \u0026 profiles. Python/Tkinter.","archived":false,"fork":false,"pushed_at":"2026-06-29T00:28:49.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-29T02:12:44.420Z","etag":null,"topics":["3d","controller","desktop-app","dualsense","dualsense-controller","dualshock","gamepad","gaming","gui","hid","led","lightbar","playstation","ps4","ps5","python","rgb","rgb-lighting","tkinter","windows"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/u2n4.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-29T00:20:45.000Z","updated_at":"2026-06-29T00:28:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/u2n4/dualled-pro","commit_stats":null,"previous_names":["u2n4/dualled-pro"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/u2n4/dualled-pro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2n4%2Fdualled-pro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2n4%2Fdualled-pro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2n4%2Fdualled-pro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2n4%2Fdualled-pro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/u2n4","download_url":"https://codeload.github.com/u2n4/dualled-pro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2n4%2Fdualled-pro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34984784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","controller","desktop-app","dualsense","dualsense-controller","dualshock","gamepad","gaming","gui","hid","led","lightbar","playstation","ps4","ps5","python","rgb","rgb-lighting","tkinter","windows"],"created_at":"2026-06-30T21:32:28.599Z","updated_at":"2026-06-30T21:32:29.466Z","avatar_url":"https://github.com/u2n4.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🎮 DualLED Pro\n\n### Real-time RGB lightbar control for PS5 DualSense \u0026 PS4 DualShock 4 — with a live 3D controller view\n\n[![Python](https://img.shields.io/badge/Python-3.8%2B-3776AB?logo=python\u0026logoColor=white)](https://www.python.org/)\n[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-555?logo=windows\u0026logoColor=white)](#-installation)\n[![License: MIT](https://img.shields.io/badge/License-MIT-22c55e.svg)](LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-ff69b4.svg)](CONTRIBUTING.md)\n[![Made with Tkinter](https://img.shields.io/badge/UI-Tkinter-FFD43B?logo=python\u0026logoColor=333)](https://docs.python.org/3/library/tkinter.html)\n\n[![GitHub stars](https://img.shields.io/github/stars/u2n4/dualled-pro?style=social)](https://github.com/u2n4/dualled-pro/stargazers)\n\n**Pick any color, run a lighting effect, watch your battery — and see it mirrored on a 3D model of your actual controller, in real time.**\n\n🇬🇧 English · 🇸🇦 [بالعربي](#-بالعربي)\n\n![DualLED Pro — PS5 DualSense with an animated RGB lightbar](assets/hero.png)\n\n\u003c/div\u003e\n\n---\n\n## ⚡ Easy install (no Python needed)\n\n**Don't have Python? No problem.** Open **PowerShell** and paste this **one line** — it installs Python (if you don't have it), downloads the app, installs everything, and opens it automatically:\n\n```powershell\nirm https://raw.githubusercontent.com/u2n4/dualled-pro/main/install.ps1 | iex\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e👉 How do I open PowerShell?\u003c/summary\u003e\n\n1. Press the **Windows key**.\n2. Type **`powershell`**.\n3. Click **Windows PowerShell**, paste the line above, press **Enter**.\n4. Wait. The app opens by itself when it's done. ✅\n\n\u003e If you see a message asking you to open a **new** PowerShell window, just close it, open PowerShell again, and paste the same line once more.\n\n\u003c/details\u003e\n\nTo run it again later, just paste the same line — or use the shortcut printed at the end of the install.\n\n\u003e 🛠 Manual install (for developers) is in [Installation](#-installation) below.\n\n---\n\n## ✨ Features\n\n- 🎨 **10 lighting modes** — Manual, Rainbow, Pulse, Flash, Breathing, Heartbeat, Wave, Gradient, Sequence, Random.\n- 🕹️ **Live 3D controller view** — a 3D PS5/PS4 model whose lightbar mirrors the real one **100% in sync**.\n- 🔍 **Auto-detects your controller** — picks the correct PS5 (DualSense) or PS4 (DualShock 4) model automatically.\n- 🔋 **Battery monitor \u0026 alerts** — low-battery, plugged-in, and full-charge notifications.\n- 💾 **Profiles** — save and switch named color/effect presets instantly.\n- 🌍 **Bilingual UI** — English \u0026 Arabic (العربية), switchable at runtime.\n- 🪟 **Fullscreen + tray** — runs fullscreen, minimizes to tray instead of quitting.\n- 🌌 **Animated starfield background** (toggleable).\n- 🎛️ **Headless / background mode** — drive the lightbar with no window via the CLI.\n- 🧩 **Single file, zero build step** — one `dualled_pro.py`, pure Python + Tkinter.\n\n\u003e **Scope, honestly:** DualLED Pro is focused on **lighting, battery, and presets**. It is *not* a music-reactive / macro / scheduling suite — it does one thing and does it cleanly.\n\n---\n\n## 📸 Screenshots\n\n| 3D sync view | Effects \u0026 profiles |\n|---|---|\n| ![3D view](assets/screenshot-3d.png) | ![Effects](assets/screenshot-effects.png) |\n\n\u003c!-- Add real PNGs to assets/. Placeholders are fine until then. --\u003e\n\n---\n\n## 🚀 Installation\n\n\u003e **Requires Python 3.8+** and a controller connected over **USB** (Bluetooth works too on most setups).\n\n```bash\n# 1. Clone\ngit clone https://github.com/u2n4/dualled-pro.git\ncd dualled-pro\n\n# 2. (recommended) virtual env\npython -m venv .venv\n# Windows:\n.venv\\Scripts\\activate\n# macOS / Linux:\nsource .venv/bin/activate\n\n# 3. Install dependencies\npip install -r requirements.txt\n\n# 4. Run\npython dualled_pro.py\n```\n\n**Minimal install** (just enough to run):\n\n```bash\npip install -U pydualsense hidapi psutil\npython dualled_pro.py\n```\n\n### Windows driver note (PS5 DualSense)\n\nFor `pydualsense` to talk to a DualSense, Windows needs the **WinUSB/libusb** driver bound to the controller. The simplest path is [Zadig](https://zadig.akeo.ie/): select the DualSense device → install **WinUSB**. (PS4 / generic HID controllers usually work without this.)\n\n---\n\n## 🎛️ Usage\n\nLaunch the GUI:\n\n```bash\npython dualled_pro.py\n```\n\nRun **headless** (no window — uses your last saved settings):\n\n```bash\n# Drive the lightbar in the background\npython dualled_pro.py --background\n\n# Auto-stop after 30 minutes, then turn the lightbar off\npython dualled_pro.py --background --stop-after 30 --off-on-exit\n```\n\n| Flag | Description |\n|---|---|\n| `--background` | Run without the UI, using the last saved color/mode. |\n| `--stop-after N` | Automatically stop after `N` minutes (background mode). |\n| `--off-on-exit` | Turn the lightbar off when exiting. |\n\nConfig and logs live in your OS app-data folder (`%APPDATA%\\DualLED_Pro` on Windows).\n\n---\n\n## 🧩 How it works\n\n```\n┌─────────────┐   HID    ┌───────────────┐   color/effect   ┌──────────────┐\n│  Controller │ ───────► │  DualLED Pro  │ ───────────────► │  Lightbar    │\n│ PS5 / PS4   │ ◄─────── │  engine + UI  │                  │  (real RGB)  │\n└─────────────┘  battery └───────┬───────┘                  └──────────────┘\n                                 │ mirror\n                                 ▼\n                        ┌──────────────────┐\n                        │  Live 3D model   │  same color, in sync\n                        └──────────────────┘\n```\n\nA background engine thread computes the current color (solid or animated effect) and pushes it to the physical lightbar over HID, while the Tkinter UI renders a 3D controller whose lightbar is tinted with the exact same value.\n\n---\n\n## 🤝 Contributing\n\nPRs and issues are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md). Good first contributions: more controller models in the 3D view, extra effects, packaging recipes (PyInstaller spec, `.app`/AppImage), and translations.\n\n## 📜 License\n\n[MIT](LICENSE) © u2n4\n\n## 🙏 Acknowledgements\n\nBuilt on [`pydualsense`](https://github.com/flok/pydualsense), [`hidapi`](https://github.com/trezor/cython-hidapi), and [`psutil`](https://github.com/giampaolo/psutil). Not affiliated with or endorsed by Sony. PlayStation, DualSense, and DualShock are trademarks of Sony Interactive Entertainment.\n\n---\n\n\u003cdiv align=\"center\" dir=\"rtl\"\u003e\n\n## 🇸🇦 بالعربي\n\n# 🎮 DualLED Pro\n\n### تحكّم لحظي بإضاءة يد PS5 (DualSense) و PS4 (DualShock 4) — مع عرض ثلاثي الأبعاد حي لليد\n\nاختر أي لون، شغّل تأثير إضاءة، راقب البطارية — وشوفها كلها منعكسة على نموذج ثلاثي الأبعاد لليد الفعلية لحظة بلحظة.\n\n### ✨ المزايا\n\n- 🎨 **10 أوضاع إضاءة** — يدوي، قوس قزح، نبض، وميض، تنفّس، نبضة قلب، موجة، تدرّج، تسلسل، عشوائي.\n- 🕹️ **عرض ثلاثي الأبعاد حي** — نموذج 3D للـ PS5/PS4 إضاءته تتزامن مع اليد الحقيقية 100%.\n- 🔍 **كشف تلقائي لنوع اليد** — يعرض النموذج الصحيح (PS5 أو PS4) تلقائياً.\n- 🔋 **مراقبة بطارية وتنبيهات** — تنبيه عند انخفاض الشحن، التوصيل، والاكتمال.\n- 💾 **ملفات تعريف** — احفظ وبدّل بين إعدادات لون/تأثير محفوظة فوراً.\n- 🌍 **واجهة ثنائية اللغة** — عربي وإنجليزي، تتبدّل أثناء التشغيل.\n- 🪟 **ملء الشاشة + تصغير للشريط** بدلاً من الإغلاق.\n- 🌌 **خلفية نجوم متحركة** (قابلة للإيقاف).\n- 🎛️ **وضع خلفي بدون واجهة** عبر سطر الأوامر.\n- 🧩 **ملف واحد، بدون أي بناء** — `dualled_pro.py` فقط، بايثون + Tkinter.\n\n\u003e **بصراحة، نطاق البرنامج:** DualLED Pro مركّز على **الإضاءة، البطارية، والإعدادات المحفوظة**. مو برنامج تفاعل مع الموسيقى ولا ماكروهات ولا جدولة — يسوّي شي واحد ويسوّيه نظيف.\n\n---\n\n### 📸 لقطات الشاشة\n\n| عرض ثلاثي الأبعاد متزامن | التأثيرات والإعدادات |\n|---|---|\n| ![3D view](assets/screenshot-3d.png) | ![Effects](assets/screenshot-effects.png) |\n\n\u003c!-- ضِف صور PNG حقيقية في مجلد assets. --\u003e\n\n---\n\n### ⚡ التثبيت السهل (بدون بايثون ولا أي شي)\n\n**ما عندك بايثون؟ عادي.** افتح **PowerShell** والصق هذا **السطر الواحد** — يثبّت بايثون لو ما هو موجود، يحمّل البرنامج، يركّب كل شي، ويفتح البرنامج تلقائياً:\n\n```powershell\nirm https://raw.githubusercontent.com/u2n4/dualled-pro/main/install.ps1 | iex\n```\n\n**كيف تفتح PowerShell؟**\n1. اضغط زر **Windows**.\n2. اكتب **`powershell`**.\n3. افتح **Windows PowerShell**، الصق السطر فوق، اضغط **Enter**.\n4. استنى. البرنامج يفتح بنفسه لما يخلّص. ✅\n\n\u003e لو طلعت لك رسالة تقول افتح نافذة PowerShell **جديدة** — سكّر النافذة، افتح PowerShell مرة ثانية، والصق نفس السطر.\n\nلتشغيله مرة ثانية بعدين: الصق نفس السطر، أو استخدم الاختصار اللي يطلع لك بنهاية التثبيت.\n\n### 🚀 التثبيت اليدوي (للمطورين)\n\n\u003e يحتاج **بايثون 3.8+** ويد موصولة عبر **USB** (البلوتوث يشتغل بعد على أغلب الأجهزة).\n\n```bash\n# 1. انسخ المستودع\ngit clone https://github.com/u2n4/dualled-pro.git\ncd dualled-pro\n\n# 2. (يُفضّل) بيئة افتراضية\npython -m venv .venv\n.venv\\Scripts\\activate\n\n# 3. ركّب المتطلبات\npip install -r requirements.txt\n\n# 4. شغّل\npython dualled_pro.py\n```\n\n**تثبيت سريع** (أقل شي يكفي للتشغيل):\n\n```bash\npip install -U pydualsense hidapi psutil\npython dualled_pro.py\n```\n\n\u003e **ملاحظة درايفر ويندوز (يد PS5 DualSense):** عشان مكتبة `pydualsense` تكلّم اليد، ويندوز يحتاج درايفر **WinUSB/libusb** مربوط باليد. أسهل طريقة عبر [Zadig](https://zadig.akeo.ie/): اختر جهاز DualSense ← ثبّت **WinUSB**. (يد PS4 / الأجهزة العامة غالباً تشتغل بدون هذا.)\n\n---\n\n### 🎛️ الاستخدام\n\nشغّل الواجهة:\n\n```bash\npython dualled_pro.py\n```\n\nشغّله **بدون واجهة** (يستخدم آخر إعدادات حفظتها):\n\n```bash\n# تشغيل الإضاءة بالخلفية\npython dualled_pro.py --background\n\n# يوقف تلقائياً بعد 30 دقيقة، ويطفّي الإضاءة\npython dualled_pro.py --background --stop-after 30 --off-on-exit\n```\n\n| الأمر | الوظيفة |\n|---|---|\n| `--background` | يشتغل بدون واجهة، باستخدام آخر لون/وضع محفوظ. |\n| `--stop-after N` | يوقف تلقائياً بعد `N` دقيقة (وضع الخلفية). |\n| `--off-on-exit` | يطفّي الإضاءة عند الخروج. |\n\nالإعدادات والسجلات تنحفظ في مجلد بيانات النظام (`%APPDATA%\\DualLED_Pro` على ويندوز).\n\n---\n\n### 🧩 كيف يشتغل البرنامج\n\n```\n┌─────────────┐   HID    ┌───────────────┐   لون/تأثير      ┌──────────────┐\n│   اليد       │ ───────► │  DualLED Pro  │ ───────────────► │  الإضاءة      │\n│  PS5 / PS4  │ ◄─────── │  محرّك + واجهة  │                  │  (RGB فعلي)  │\n└─────────────┘  بطارية   └───────┬───────┘                  └──────────────┘\n                                 │ انعكاس\n                                 ▼\n                        ┌──────────────────┐\n                        │  نموذج 3D حي      │  نفس اللون، متزامن\n                        └──────────────────┘\n```\n\nخيط (thread) بالخلفية يحسب اللون الحالي (ثابت أو تأثير متحرّك) ويرسله للإضاءة الفعلية عبر HID، وبنفس الوقت واجهة Tkinter ترسم يد ثلاثية الأبعاد إضاءتها بنفس اللون بالضبط.\n\n---\n\n### 🤝 المساهمة\n\nالـ PRs والـ issues مرحّب فيها — شوف [CONTRIBUTING.md](CONTRIBUTING.md). أفكار للمبتدئين: نماذج يد إضافية في العرض 3D، تأثيرات جديدة، وصفات تغليف (PyInstaller / `.app` / AppImage)، وترجمات.\n\n### 📜 الترخيص\n\n[MIT](LICENSE) © u2n4\n\n### 🙏 شكر\n\nمبني على [`pydualsense`](https://github.com/flok/pydualsense) و [`hidapi`](https://github.com/trezor/cython-hidapi) و [`psutil`](https://github.com/giampaolo/psutil). غير تابع لشركة Sony ولا معتمد منها. PlayStation و DualSense و DualShock علامات تجارية لـ Sony Interactive Entertainment.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu2n4%2Fdualled-pro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fu2n4%2Fdualled-pro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu2n4%2Fdualled-pro/lists"}