So ddccontrol does the job of switching monitors on and off… It’s nice to have it run on suspend/resume - esp late night when I switch off, then go to bed and see the monitor’s orange light driving me nuts 🙁
monitor-suspend.service
[Unit]
Description=ddccontrol system suspend actions
Before=nvidia-suspend.service
[Service]
Type=oneshot
ExecStart=/usr/bin/logger -t suspend -s "monitor-suspend.service"
ExecStart=/usr/local/bin/monitor-ddc.sh "pre"
[Install]
RequiredBy=systemd-suspend.servicemonitor-resume.service
[Unit]
Description=NVIDIA system resume actions
After=systemd-suspend.service
After=systemd-hibernate.service
After=nvidia-resume.service
[Service]
Type=oneshot
ExecStart=/usr/bin/logger -t suspend -s "monitor-resume.service"
ExecStart=/usr/local/bin/monitor-ddc.sh  "post"
[Install]
RequiredBy=systemd-suspend.service
RequiredBy=systemd-hibernate.servicemonitor-ddc.sh
#! /bin/bash
# symlink this to /usr/local/bin
i2cdevices=$(ddccontrol -p | grep 'Device: ' | sed -e 's/.*: //')
readarray -t <<<"$i2cdevices"
for i2cdev in "${MAPFILE[@]}"
do
    echo "$i2cdev"
    case "$1" in
        "pre")
            ddccontrol  -r 0xd6 -w 5 "$i2cdev"
            ;;
        "post")
            ddccontrol  -r 0xd6 -w 1 "$i2cdev"
            ;;
        *)
            exit 1
    esac
donelink the files above to /etc/systemd/system and then enable both of them with systemctl enable monitored-suspend and systemctl enable monitor-resume