A GNOME Shell extension that switches an external monitor's input source via ddcutil. Lives in the Quick Settings panel.
Features:
- Switch to HDMI (
0x11), DisplayPort (0x0f), USB-C (0x1b) via DDC/CI VCP code0x60 - Choose one target monitor if multiple detected
- Customize which inputs to show
- GNOME Shell 48, 49, or 50
ddcutilinstalled (which ddcutilto check) andddcutil detectshould list your monitor
Coming soon.
-
Download the latest release from Releases.
-
Install the extension:
gnome-extensions install -f ~/Downloads/monitor-input-switch@nemofq.github.io.zip -
Restart the session by logging out.
-
Enable the extension in Extension Manager or by running:
gnome-extensions enable monitor-input-switch@nemofq.github.io
Cause: ddcutil detect performs kernel-level I2C operations that can freeze the desktop on some hardware.
Mitigations:
- Sysfs pre-check before
ddcutil detect: We read/sys/class/drm/*/statusto check if any external display is connected. If none, we skipddcutil detectentirely. --disable-dynamic-sleeponddcutil detect: Preventsddcutilfrom progressively extending sleep intervals on unresponsive buses.
Cause: During GNOME Shell startup and after display hotplug events, the compositor is still negotiating with monitors. Sending ddcutil commands during this window can race with the DRM subsystem and leave the desktop in a broken state.
Mitigations:
- 30-second buffer before scanning: Both the first scan (after
startup-complete) and scans triggered bymonitors-changedwait 30 seconds to let hardware fully settle and avoid firing during hotplug event bursts.
Feel free to submit an issue or pull request.
Thanks to these projects for the ideas and groundwork that made this extension possible.
- ddcutil
- display-switcher
- Control Monitor Brightness and Volume with ddcutil
- Brightness control using ddcutil
MIT
