Skip to content

Add DDC/CI monitor control for Dell U4025QW input switching #254

@patflynn

Description

@patflynn

Summary

Set up DDC/CI-based control of the Dell U4025QW monitor to switch inputs (and potentially adjust other settings like brightness) from the keyboard via keybindings.

Background

The Dell U4025QW supports DDC/CI over its display connections, which allows software to read/write monitor settings (input source, brightness, contrast, etc.) using the I2C protocol. This can be driven from Linux using tools like ddcutil.

The primary use case is switching between two machines:

  • weller (desktop PC) — connected to the monitor via DisplayPort
  • Chromebook — connected via Thunderbolt/USB-C

The Advantage 360 Pro is BT paired to both machines on different channels. Since the Chromebook runs ChromeOS and has no access to ddcutil, all monitor control must be driven from weller.

Proposed workflow

Weller → Chromebook:

  1. Hit a keybinding on weller that triggers ddcutil to switch the monitor input to USB-C
  2. Swap the keyboard BT channel to the Chromebook (ZMK layer/macro)
  3. Potentially combine both into a single action

Chromebook → Weller:

  1. Swap the keyboard BT channel back to weller
  2. Hit a keybinding to switch the monitor input back to DisplayPort

Stretch goal: Automatically switch the monitor input when BlueZ detects the keyboard BT connecting/disconnecting (poor man's KVM).

Tasks

  • Add ddcutil to the system packages
  • Verify DDC/CI communication works with the U4025QW (ddcutil detect, ddcutil capabilities)
  • Identify the VCP codes for input source switching on this monitor
  • Create scripts to switch between USB-C (Chromebook) and DisplayPort (weller) inputs
  • Add Hyprland keybindings to trigger input switches
  • Optionally expose brightness/volume controls
  • Investigate auto-switching monitor input based on keyboard BT connect/disconnect events

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions