Lightweight system tray brightness controller for external monitors on Linux using DDC/CI.
Most Linux desktop environments lack a simple and reliable way to control external monitor brightness via DDC/CI. This project aims to provide a minimal, fast, and native-feeling solution.
- Tray (AppIndicator) integration
- Quick brightness presets
- Precision control with popup slider
- Minimal and lightweight (GTK3 based)
- Works with
ddcutil
| Preset Menu | Slider |
|---|---|
![]() |
![]() |
- Linux (X11)
ddcutil- Python 3
- GTK 3 bindings (
python3-gi) libayatana-appindicator3
sudo apt install ddcutil python3-gi gir1.2-gtk-3.0 gir1.2-ayatanaappindicator3-0.1Before running, verify your monitor is detected:
ddcutil detectpython3 main.pyTo start the application automatically on login, create a .desktop entry:
mkdir -p ~/.config/autostart
nano ~/.config/autostart/ddc-gui.desktopPaste the following:
[Desktop Entry]
Type=Application
Name=ddc-gui
Exec=python3 /full/path/to/main.py
Icon=display-brightness-symbolic
Terminal=false
X-GNOME-Autostart-enabled=trueReplace
/full/path/to/main.pywith the actual path to your project.
If you install the app system-wide, you can simplify:
Exec=/usr/bin/python3 /full/path/to/main.py-
Make sure the script is executable:
chmod +x main.py
-
Some desktop environments may require logout/login after setup.
-
Make sure your user has permission to access I2C devices (usually by being in the
i2cgroup).
- Bus ID is currently hardcoded
- Brightness is not synced on startup
- Limited multi-monitor support
- Error handling is minimal
- Auto-detect monitor (DDC bus)
- Sync current brightness on startup
- Multi-monitor support
- Config file support
- Packaging (.deb)
- Improved error handling
Contributions, issues and suggestions are welcome.

