Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-2997GitHub issuePublicReceived

Support brightness adjustment for external monitors (non-Apple hardware)

Reported by mfornasa · filed Sep 23, 2025Closed upstream on 2026-02-01. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.

Received and recorded verbatim. Nothing has been checked yet.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
Not yet mapped to any requirement or component.
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

Support brightness adjustment for external monitors (non-Apple hardware)revision 1 · captured 2026-10-04 11:35 UTC via poll

What do you need?

Omarchy should support brightness adjustment for external monitors (non-Apple).

I tested this on a BENQ PD2730S 5K monitor and here are my findings.

According to Arch wiki, this can be achieved using the Display Data Channel Command Interface (DDCCI). There are two approaches:
* Using ddcutil.
* Using out-of-tree drivers ddcci-driver-linux with any backlight utility

1. ddcutil

This works out of the box:

$ sudo ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =    58, max value =   100

$ sudo ddcutil setvcp 10 78

$ sudo ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =    78, max value =   100

However, ddcci it's not supported by swayOSD: https://github.com/ErikReider/SwayOSD/issues/87.
Also, it's slow and it does not provide an interface to do "+1". So, a full implementation on top of ddcutil command would take ~1 second per adjustment.

$ time ddcutil setvcp 10 50

real    0m0.515s
user    0m0.006s
sys     0m0.446s

$ time ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =    50, max value =   100

real    0m0.471s
user    0m0.009s
sys     0m0.448s

2. Out-of-tree drivers

Using the ddcci-driver-linux drivers, I was able to make it work with swayOSD.
The main limitation: autodetection is not supported on recent kernels link, so the correct target must be configured manually.

Here’s the procedure:

# Install ddcutil, just for monitor detection
sudo pacman -S ddcutil

# Install ddcci drivers (use -git version, as the non -git is bugged)
yay -S  ddcci-driver-linux-dkms-git

# Activate the drivers
modprobe ddcci ddcci_backlight

# Detect the monitor 
$ sudo ddcutil detect
Display 1
   I2C bus:  /dev/i2c-9
   ...

# Manually create the device
echo 'ddcci 0x37' | sudo tee /sys/bus/i2c/devices/i2c-9/new_device

# Use swayOSD to adjust brightness
swayosd-client  --brightness +20

Other limitations of the driver (from the docs):
* There is no direct synchronization if you manually change the luminance with the buttons on your monitor, as this can
only be realized through polling and some monitors close their OSD every time a DDC/CI command is received.
* Monitor hotplugging is not detected.

Of course, this needs to be automated to survive a reboot.

Current status

The second procedure can help individuals who want to fix this, but it seems too fragile to automate reliably. If anyone knows a better approach, please share it here. I am going to investigate if someone else already solved this on another distro.

View raw text
### What do you need?

Omarchy should support brightness adjustment for external monitors (non-Apple).

I tested this on a BENQ PD2730S 5K monitor and here are my findings.

According to [Arch wiki](https://wiki.archlinux.org/title/Backlight#External_monitors), this can be achieved using the Display Data Channel Command Interface (DDCCI). There are two approaches:
* Using `ddcutil`.
* Using out-of-tree drivers `ddcci-driver-linux` with any backlight utility

## 1. `ddcutil`
This works out of the box:
```
$ sudo ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =    58, max value =   100

$ sudo ddcutil setvcp 10 78

$ sudo ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =    78, max value =   100
```

However, **ddcci it's not supported by swayOSD**: https://github.com/ErikReider/SwayOSD/issues/87.
Also, it's slow and it does not provide an interface to do "+1". So, a full implementation on top of `ddcutil` command would take ~1 second per adjustment.

```
$ time ddcutil setvcp 10 50

real    0m0.515s
user    0m0.006s
sys     0m0.446s

$ time ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =    50, max value =   100

real    0m0.471s
user    0m0.009s
sys     0m0.448s
```


### 2. Out-of-tree drivers
Using the ddcci-driver-linux drivers, I was able to make it work with swayOSD.
The main limitation: **autodetection is not supported on recent kernels** [link](https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux/-/commit/f53b127ca9d7fc0969c0ee3499d8c55aebfe8116), so the correct target must be configured manually.

Here’s the procedure:
```
# Install ddcutil, just for monitor detection
sudo pacman -S ddcutil

# Install ddcci drivers (use -git version, as the non -git is bugged)
yay -S  ddcci-driver-linux-dkms-git

# Activate the drivers
modprobe ddcci ddcci_backlight

# Detect the monitor 
$ sudo ddcutil detect
Display 1
   I2C bus:  /dev/i2c-9
   ...

# Manually create the device
echo 'ddcci 0x37' | sudo tee /sys/bus/i2c/devices/i2c-9/new_device

# Use swayOSD to adjust brightness
swayosd-client  --brightness +20
```

Other [limitations](https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux#limitations) of the driver (from the docs):
* There is no direct synchronization if you manually change the luminance with the buttons on your monitor, as this can
only be realized through polling and some monitors close their OSD every time a DDC/CI command is received.
* Monitor hotplugging is not detected. 

Of course, this needs to be automated to survive a reboot.

### Current status
The second procedure can help individuals who want to fix this, but it seems too fragile to automate reliably. If anyone knows a better approach, please share it here. I am going to investigate if someone else already solved this on another distro.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

No decision has been recorded yet.