Skip to the content.




display-dj is a cross platform desktop application that supports brightness adjustment for integrated laptop monitor as well as external monitors and dark mode toggle supporting Windows and MacOSX at the moment. Adjustment brightness will be quicker and does not require tinkering with the external monitor controls.

I published an article describing this project in details. Here’s the link to the published article about display-dj.

The Problems


You can download display-dj at the following URL.


The challenge of work from home in the last 2 years with 2 young toddlers is that they can charge into your room any time of the day and playing with the light switch. This is my defense mechanism for those sudden changes in light intensity. I can toggle between 2 different modes rather quickly with a key stroke: going to the dark side vs going to the light side of the force.

image image

Screenshots / Demo

Windows 11



Mac OSX Monterey


Supported Platforms

The following version of OS has been tested and working.

Features / Configs / Preferences

Renaming the display

By default, we will give each display a name. You can rename the display to something more friendly by clicking on the name of the display and finish by hitting Enter key.




Toggling Dark Mode and Light Mode

The toggle for dark and light mode is located at the bottom of the control, you can choose either dark mode or light mode. This change will update the system dark mode accordingly. So it’s best to keep all your apps aware of the dark mode. So this way it will change the dark mode according to the app.



Monitor Configs

At the moment, there is no UI to modify the configs. This can also be accessed via right clicking the tray icon of display-dj and choose Open Monitor Configs.

Sample configs file

Configs file are located at:

  "\\\\?\\DISPLAY#VSCB73A#5&21f33940&0&UID4352#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}": {
    "id": "\\\\?\\DISPLAY#VSCB73A#5&21f33940&0&UID4352#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}",
    "name": "Left",
    "brightness": 0,
    "sortOrder": 1,
    "disabled": false
  "\\\\?\\DISPLAY#VSCB73A#5&23c70c64&0&UID257#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}": {
    "id": "\\\\?\\DISPLAY#VSCB73A#5&23c70c64&0&UID257#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}",
    "name": "Right",
    "brightness": 0,
    "sortOrder": 2,
    "disabled": false
  "laptop-built-in": {
    "id": "laptop-built-in",
    "name": "Laptop Built-In Display",
    "brightness": 0,
    "sortOrder": 3,
    "disabled": true

Default Key Bindings

Below are default Key Bindings, you can modify the default keybinding in preferences.json, refer to the sample preferences file section.

Key Bindings’ command can be an array in case you want to mix and match multiple commands. In this case, Shift + F1, minimize brightness and also turn off darkmode.

Keys Command
Shift + Escape Toggle Dark Mode
Shift + F1 Change brightness to 10% and turn dark mode off
Shift + F2 Change brightness to 100% and turn dark mode on
Shift + F3 Change brightness to 0%
Shift + F4 Change brightness to 50%
Shift + F5 Change brightness to 100%
Shift + F6 Change volume to 0% (Muted)
Shift + F7 Change volume to 100%

Preferences / Key Bindings

At the moment, there is no UI to modify the preferences. This can also be accessed via right clicking the tray icon of display-dj and choose Open App Preferences.

# brightness commands

# dark mode commands

# volumes commands

Sample preferences file

Preferences file are located at:

  "showIndividualDisplays": false,
  "brightnessDelta": 50,
  "keyBindings": [
      "key": "Shift+Escape",
      "command": "command/changeDarkMode/toggle"
      "key": "Shift+F1",
      "command": ["command/changeDarkMode/dark", "command/changeBrightness/10"]
      "key": "Shift+F2",
      "command": ["command/changeDarkMode/light", "command/changeBrightness/100"]
      "key": "Shift+F3",
      "command": "command/changeBrightness/0"
      "key": "Shift+F4",
      "command": "command/changeBrightness/50"
      "key": "Shift+F5",
      "command": "command/changeBrightness/100"



If you are interested in contributing, you can refer to this doc to get started

Known issues

Due to the complexity and quirks of ddc/ci protocol, unfortunately it’s nearly impossible to support every single monitor out there. So if you run into issue where this app doesn’t work, we will not guarantee support.

Limited support for M1 macs

This app has limited support for M1 Mac. Volume settings and individual display adjustment along with builtin display are not supported.


This requires preferences JSON to be updated (~/Library/Application Support/display-dj/preferences.json)

  // ...
  "mode": "m1_mac",
  // ...


Use the following link to file a bug or a suggestion. Please indicate which OS and monitor.