# Twinkle Tray: brightness sliders for every external monitor in Windows 11

> Twinkle Tray puts DDC/CI brightness control for external displays into the Windows 10 and 11 system tray. It is a small Electron app with a real command line, a short compatibility list, and a few hardware conditions you should check before relying on it.

**xanderfrangos/twinkle-tray** — Easily manage the brightness of your monitors in Windows from the system tray

- Repository: https://github.com/xanderfrangos/twinkle-tray
- Website: https://twinkletray.com
- Stars: 9,115 · Forks: 331
- Language: JavaScript
- License: MIT
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/xanderfrangos-twinkle-tray

## The gap Twinkle Tray fills on a multi-monitor Windows desk

Windows can dim a laptop panel, and it can dim some external displays. What it cannot do is give you one place to set the brightness of several external monitors at once. The README is blunt about this: Windows "doesn't support external monitors natively" and "lacks any options to manage the brightness of multiple displays." Twinkle Tray exists to close that gap.

It is aimed at desktop and laptop users running Windows 10 or 11 with one or more external panels that speak DDC/CI. The app adds an icon to the system tray. Clicking it opens a flyout with a brightness slider for each compatible display, modelled on the Windows volume flyout. Beyond the slider, the feature list covers hotkeys bound to specific or all displays, automatic changes by time of day or idle state, backlight normalization across monitors of different brightness, and other DDC/CI features such as contrast. It can also start with Windows.

The audience is narrow but real. If you have a single laptop screen, Windows already handles it. If you have a monitor whose OSD has to be poked with physical buttons every evening, this is the tool that removes that ritual.

## DDC/CI and WMI: how Twinkle Tray talks to a monitor

Twinkle Tray does not install a display driver or hook into the GPU pipeline. According to the README, it "uses DDC/CI and WMI to communicate with your monitors." DDC/CI is the monitor-side control channel carried over the video cable; it is the same protocol a vendor's OSD utility uses to change brightness, contrast and power state. WMI is the Windows management interface the app uses alongside it.

That choice explains both the app's reach and its limits. Reach: because DDC/CI is a standard, most monitors respond to it, which is why Twinkle Tray can drive panels from different vendors through one UI. Limits: DDC/CI is frequently disabled at the factory, and the README warns that "it may be off by default" and that you should enable the appropriate option in the monitor's own menu. If the monitor does not answer on that channel, no amount of software on the PC side will fix it.

The repository itself is an Electron application. package.json points main at src/electron.js, and the scripts run the app through Electron with a Parcel build step for the renderer. The DDC/CI access comes from the @hensm/ddcci native module, which the package scripts rebuild through a dedicated rebuild-ddcci-dev command. The app is built for x64 and, through separate scripts, arm64.

## Installing Twinkle Tray and making your first brightness change

The README sends you to twinkletray.com or the GitHub Releases page for the installer EXE, and there is a Microsoft Store listing as well. If you prefer a package manager, the README documents three routes. Windows Package Manager is the first-party one:

```powershell
winget install xanderfrangos.twinkletray
```

Chocolatey and Scoop both carry a package named twinkle-tray, but the README flags both as unofficial and not maintained at the repository, so issues about them belong on their own package pages. The Scoop route needs the extras bucket first:

```sh
scoop bucket add extras
scoop install extras/twinkle-tray
```

After installation you should see the Twinkle Tray icon in the system tray. Click it to open the Adjust Brightness flyout, click away to hide it, and right-click the tray icon to quit. If a monitor is missing from the flyout, the README points to a wiki page on display detection and support issues rather than offering an in-app fix.

The command line is the part most people miss. Twinkle Tray v1.13.0 and later accepts brightness requests, but the app must already be running, and each request needs one monitor argument and one brightness argument. This example adjusts the first monitor by -30 percent:

```bash
"%LocalAppData%\Programs\twinkle-tray\Twinkle Tray.exe" --MonitorNum=1 --Offset=-30
```

The documented arguments include --List to enumerate displays (v1.14.0+), --MonitorNum and --MonitorID for targeting, --All as a flag, --Set for an absolute percentage, --Offset for a relative change, --Overlay and --Panel to show the new level in the overlay or panel, and --VCP to send a raw DDC/CI VCP code and value instead of brightness (v1.14.4+). The README notes that multiple arguments override each other, so pass one monitor selector and one brightness operation.

## Where DDC/CI control breaks down

The compatibility section is the most useful part of the README because it is honest. VGA and DVI "may not be compatible." USB, Thunderbolt and Surface docks with HDMI or DisplayPort "may not be compatible." Those two lines rule out a large share of real desks, particularly laptops on docking stations, where the dock sits between the GPU and the panel and the DDC/CI channel does not survive the trip.

The AMD Radeon Control Panel is called out as an interference source: the README says to ensure "Custom Colors" is not enabled. That is a conflict between two pieces of software fighting over the same monitor state, and it is worth knowing before you spend an evening wondering why sliders snap back.

The broader warning is the one to take seriously: DDC/CI features such as brightness control and power state "may cause certain models of monitors to behave poorly," and the README adds that this applies to any DDC/CI software, not just Twinkle Tray. In other words, the failure mode is in the protocol and the firmware, not in this particular client. If your monitor misbehaves when controlled over DDC/CI, switching to a different utility will not necessarily help.

One more boundary: this is a Windows application. Nothing in the README or the repository layout suggests a macOS or Linux build.

## Twinkle Tray versus Monitorian and vendor OSD tools

Monitorian is the comparison people search for, and the two tools share the same foundation: both drive external monitor brightness over DDC/CI from the Windows tray. The difference is in scope and packaging. Twinkle Tray is an Electron and React application with a larger feature surface: automatic brightness by time of day or idle state, hotkeys, backlight normalization across mismatched monitors, contrast and other DDC/CI features, and a documented command line with --MonitorNum, --Set, --Offset and raw --VCP codes. Monitorian is the lighter, more single-purpose option for people who want sliders and nothing else.

Vendor OSD utilities occupy a third position. They are written by the monitor maker, so they know the specific panel's quirks, but they cover only that maker's hardware. On a desk with two brands of monitor you would be running two utilities, each with its own tray icon. Twinkle Tray's value is that one flyout covers every DDC/CI display that responds, regardless of brand, and that the same controls are reachable from a script.

If your only requirement is a slider, the lighter tool is defensible. If you want schedules, hotkeys, normalization across a 250-nit panel and a 400-nit panel, or a way to fire brightness changes from a scheduled task, Twinkle Tray is the one with the documented surface area for it.

## Licence, releases and what maintenance costs you

Twinkle Tray is MIT licensed, with the LICENSE file at the repository root. For most users that means the practical obligations are minimal: keep the copyright and permission notice with any substantial copy or redistribution. It also means you may fork and ship a modified build, which matters if you need to patch the DDC/CI layer yourself. This is a description of the licence text, not legal advice; if you plan to redistribute the app commercially, read the LICENSE file and the terms of any bundled dependencies, including the @hensm/ddcci native module, before you do.

The last push to the repository was on 2026-08-19, and the most recent release listed is v1.18.0-beta2 from 2026-08-13, preceded by v1.18.0-beta1 in July 2026 and the stable v1.17.2 in December 2025. So the project is not archived and is still receiving commits, but the current line is in beta: if you want the tested build, the stable release is the one to install, and the README's own download instructions do not distinguish between them beyond pointing at the Releases page.

Upgrade cost is low. winget, Chocolatey and Scoop each handle it with a single command, and the app stores its settings locally, so an upgrade does not require reconfiguring your monitors. The real cost is the DDC/CI risk described above: a monitor that behaves poorly under DDC/CI control will keep doing so across versions, because the protocol is the same.

## Conclusion

Twinkle Tray suits Windows 10 and 11 users with two or more DDC/CI-capable monitors, especially anyone who wants brightness changes scriptable through --MonitorNum and --Set. Skip it if your panel sits behind a VGA/DVI link or a USB, Thunderbolt or Surface dock with HDMI or DisplayPort, since the README lists those as possibly incompatible. Before adopting it, enable DDC/CI in the monitor's own menu and confirm the display appears in the panel after launch.

## FAQ

### What is Twinkle Tray?

It is a Windows 10 and 11 application that adds brightness sliders for external monitors to the system tray. It communicates with displays over DDC/CI and WMI, and it can also change brightness by time of day or idle state, bind hotkeys, and normalize backlight across monitors.

### Is Twinkle Tray safe?

The project is MIT licensed and the source is public at xanderfrangos/twinkle-tray, with releases published on the GitHub Releases page and twinkletray.com. The README notes that DDC/CI control can make certain monitor models behave poorly, and that this applies to any DDC/CI software, not just Twinkle Tray.

### How do I display the brightness on my taskbar in Windows?

Twinkle Tray inserts an icon into the system tray, and clicking it opens the Adjust Brightness flyout with a slider for each compatible display. The README describes this as similar to the built-in Windows volume flyout.

### Why does my brightness keep changing on its own?

Twinkle Tray can be configured to change monitor brightness automatically depending on the time of day or when the system is idle, so a configured schedule or idle rule will move the sliders without input. The README also warns that the AMD Radeon Control Panel can interfere, and that "Custom Colors" should not be enabled.

## Sources

- [License: MIT](https://github.com/xanderfrangos/twinkle-tray/blob/master/LICENSE)
- [Project website](https://twinkletray.com)
- [README](https://github.com/xanderfrangos/twinkle-tray/blob/master/README.md)
- [Releases](https://github.com/xanderfrangos/twinkle-tray/releases)
- [xanderfrangos/twinkle-tray on GitHub](https://github.com/xanderfrangos/twinkle-tray)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/xanderfrangos-twinkle-tray
